diff --git a/arch/arm/include/armv7-a/irq.h b/arch/arm/include/armv7-a/irq.h index 941a02f7dd..a158e056db 100644 --- a/arch/arm/include/armv7-a/irq.h +++ b/arch/arm/include/armv7-a/irq.h @@ -394,6 +394,24 @@ static inline irqstate_t up_irq_enable(void) return cpsr; } +/* Disable IRQs and return the previous IRQ state */ + +static inline irqstate_t up_irq_disable(void) +{ + unsigned int cpsr; + + __asm__ __volatile__ + ( + "\tmrs %0, cpsr\n" + "\tcpsid i\n" + : "=r" (cpsr) + : + : "memory" + ); + + return cpsr; +} + /* Restore saved IRQ & FIQ state */ noinstrument_function static inline void up_irq_restore(irqstate_t flags)