From 915739e724f6077bb679235226002790478d011f Mon Sep 17 00:00:00 2001 From: Andy Ross Date: Wed, 21 Aug 2019 12:02:41 -0700 Subject: [PATCH] arch/xtensa: Add z_arch_irq_is_enabled() This function got dropped, and is needed for dynamic interrupt support Signed-off-by: Andy Ross --- arch/xtensa/core/xtensa-asm2.c | 8 ++++++++ include/arch/xtensa/irq.h | 2 ++ 2 files changed, 10 insertions(+) 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_ */