diff --git a/arch/arc/include/asm/irqflags-arcv2.h b/arch/arc/include/asm/irqflags-arcv2.h index 1eb41b00aac5fab14096037b29232426fd7e8077..ad481c24070dd1f369fefab436160f6d60f9dc2c 100644 --- a/arch/arc/include/asm/irqflags-arcv2.h +++ b/arch/arc/include/asm/irqflags-arcv2.h @@ -64,6 +64,11 @@ static inline void arch_local_irq_restore(unsigned long flags) */ static inline void arch_local_irq_enable(void) { + unsigned int irqact = read_aux_reg(AUX_IRQ_ACT); + + if (irqact & 0xffff) + write_aux_reg(AUX_IRQ_ACT, irqact & ~0xffff); + __asm__ __volatile__(" seti \n" : : : "memory"); }