25 #include "vendor/riscv_csr.h" 
   34 #define CPU_CSR_MCAUSE_CAUSE_MSK        (0x0fffu) 
   36 extern volatile int riscv_in_isr;
 
   41 static inline __attribute__((always_inline)) 
unsigned int irq_enable(
void)
 
   47         "csrrs %[dest], mstatus, %[mask]" 
   49         :[mask]    
"i" (MSTATUS_MIE)
 
   58 static inline __attribute__((always_inline)) 
unsigned int irq_disable(
void)
 
   64         "csrrc %[dest], mstatus, %[mask]" 
   66         :[mask]    
"i" (MSTATUS_MIE)
 
   76 static inline __attribute__((always_inline)) 
void irq_restore(
 
   81         "csrw mstatus, %[state]" 
   91 static inline __attribute__((always_inline)) 
bool irq_is_in(
void)
 
   96 static inline __attribute__((always_inline)) 
bool irq_is_enabled(
void)
 
  101         "csrr %[dest], mstatus" 
  106     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.