diff --git a/arch/xtensa/include/irq.h b/arch/xtensa/include/irq.h index 692086c47b7..26b6a0e3dbb 100644 --- a/arch/xtensa/include/irq.h +++ b/arch/xtensa/include/irq.h @@ -50,8 +50,8 @@ #include #include #include -#include -#include +#include +#include /* Include architecture-specific IRQ definitions */ @@ -191,7 +191,7 @@ static inline void xtensa_setps(uint32_t ps) { __asm__ __volatile__ ( - "wsr %0, PS" : : "=r"(ps) + "wsr %0, PS" : : "r"(ps) ); } @@ -201,7 +201,7 @@ static inline void up_irq_restore(uint32_t ps) { __asm__ __volatile__ ( - "wsr %0, PS" : : "=r"(ps) + "wsr %0, PS" : : "r"(ps) ); } @@ -234,6 +234,28 @@ static inline uint32_t up_irq_save(void) return ps; } +/* Enable interrupts at all levels */ + +static inline void up_irq_enable(void) +{ +#ifdef CONFIG_XTENSA_CALL0_ABI + xtensa_setps(PS_INTLEVEL(0) | PS_UM); +#else + xtensa_setps(PS_INTLEVEL(0) | PS_UM | PS_WOE); +#endif +} + +/* Disable low- and medium- priority interrupts */ + +static inline void up_irq_disable(void) +{ +#ifdef CONFIG_XTENSA_CALL0_ABI + xtensa_setps(PS_INTLEVEL(XCHAL_EXCM_LEVEL) | PS_UM); +#else + xtensa_setps(PS_INTLEVEL(XCHAL_EXCM_LEVEL) | PS_UM | PS_WOE); +#endif +} + /**************************************************************************** * Public Data ****************************************************************************/ diff --git a/arch/xtensa/src/common/xtensa_inthandlers.S b/arch/xtensa/src/common/xtensa_inthandlers.S index 456f574e17c..31930188197 100644 --- a/arch/xtensa/src/common/xtensa_inthandlers.S +++ b/arch/xtensa/src/common/xtensa_inthandlers.S @@ -61,7 +61,7 @@ #include #include -#include +#include #include "xtensa_macros.h" #include "xtensa_timer.h" diff --git a/arch/xtensa/src/common/xtensa_intvectors.S b/arch/xtensa/src/common/xtensa_intvectors.S index 13d7955f0b3..103a35d8864 100644 --- a/arch/xtensa/src/common/xtensa_intvectors.S +++ b/arch/xtensa/src/common/xtensa_intvectors.S @@ -39,7 +39,7 @@ #include #include -#include +#include #include "xtensa_macros.h" diff --git a/arch/xtensa/src/esp32/esp32_irq.c b/arch/xtensa/src/esp32/esp32_irq.c index e0db64a92d4..2620210f4b7 100644 --- a/arch/xtensa/src/esp32/esp32_irq.c +++ b/arch/xtensa/src/esp32/esp32_irq.c @@ -112,10 +112,10 @@ static int esp32_nmi(int irq, FAR void *context) ****************************************************************************/ /**************************************************************************** - * Name: up_irqinitialize + * Name: xtensa_irq_initialize ****************************************************************************/ -void up_irqinitialize(void) +void xtensa_irq_initialize(void) { int i; diff --git a/arch/xtensa/src/esp32/esp32_timerisr.c b/arch/xtensa/src/esp32/esp32_timerisr.c index 0d8b4d76122..04fd3966456 100644 --- a/arch/xtensa/src/esp32/esp32_timerisr.c +++ b/arch/xtensa/src/esp32/esp32_timerisr.c @@ -79,7 +79,7 @@ static int esp32_timerisr(int irq, uint32_t *regs) ****************************************************************************/ /**************************************************************************** - * Function: up_timer_initialize + * Function: xtensa_timer_initialize * * Description: * This function is called during start-up to initialize @@ -87,7 +87,7 @@ static int esp32_timerisr(int irq, uint32_t *regs) * ****************************************************************************/ -void up_timer_initialize(void) +void xtensa_timer_initialize(void) { uint32_t regval;