28 #include "vendor/riscv_csr.h"
37 #define CPU_CSR_MCAUSE_CAUSE_MSK (0x0fffu)
39 extern volatile int riscv_in_isr;
44 static inline __attribute__((always_inline))
unsigned int irq_enable(
void)
50 "csrrs %[dest], mstatus, %[mask]"
52 :[mask]
"i" (MSTATUS_MIE)
61 static inline __attribute__((always_inline))
unsigned int irq_disable(
void)
67 "csrrc %[dest], mstatus, %[mask]"
69 :[mask]
"i" (MSTATUS_MIE)
79 static inline __attribute__((always_inline))
void irq_restore(
84 "csrw mstatus, %[state]"
94 static inline __attribute__((always_inline))
bool irq_is_in(
void)
99 static inline __attribute__((always_inline))
bool irq_is_enabled(
void)
104 "csrr %[dest], mstatus"
109 return (state & MSTATUS_MIE);
MAYBE_INLINE bool irq_is_enabled(void)
Test if IRQs are currently enabled.
static void irq_restore(unsigned int state)
Restore the state of the IRQ flags.
static unsigned int irq_disable(void)
Disable all maskable interrupts.
static bool irq_is_in(void)
See if the current context is inside an ISR.
static unsigned int irq_enable(void)
Enable all maskable interrupts.