diff --git a/arch/xtensa/core/xtensa-asm2.c b/arch/xtensa/core/xtensa-asm2.c index 22126e0b15a..d9e1f14ad8e 100644 --- a/arch/xtensa/core/xtensa-asm2.c +++ b/arch/xtensa/core/xtensa-asm2.c @@ -209,3 +209,11 @@ void *xtensa_excint1_c(int *interrupted_stack) return z_get_next_switch_handle(interrupted_stack); } +int z_arch_irq_is_enabled(unsigned int irq) +{ + u32_t ie; + + __asm__ volatile("rsr.intenable %0" : "=r"(ie)); + + return (ie & (1 << irq)) != 0; +} diff --git a/include/arch/xtensa/irq.h b/include/arch/xtensa/irq.h index edb87a1bbc8..abd9b5516c2 100644 --- a/include/arch/xtensa/irq.h +++ b/include/arch/xtensa/irq.h @@ -82,6 +82,8 @@ static ALWAYS_INLINE bool z_arch_irq_unlocked(unsigned int key) return (key & 0xf) == 0; /* INTLEVEL field */ } +extern int z_arch_irq_is_enabled(unsigned int irq); + #include #endif /* ZEPHYR_INCLUDE_ARCH_XTENSA_XTENSA_IRQ_H_ */