diff options
author | Vineet Gupta <vgupta@synopsys.com> | 2015-09-05 22:47:30 +0530 |
---|---|---|
committer | Vineet Gupta <vgupta@synopsys.com> | 2015-10-17 17:48:22 +0530 |
commit | 9dbd3d9bfd56707f9b1ccc301506e2fac0e95795 (patch) | |
tree | 6da3363df38759b7e2130ed7e4a2ef8c194d3835 /arch/arc/include | |
parent | c7119d56d2755fc2770b0e2c1c4385e10f4c9161 (diff) |
ARC: [arcompact] don't check for hard isr calling local_irq_enable()
Historically this was done by ARC IDE driver, which is long gone.
IRQ core is pretty robust now and already checks if IRQs are enabled
in hard ISRs. Thus no point in checking this in arch code, for every
call of irq enabled.
Further if some driver does do that - let it bring down the system so we
notice/fix this sooner than covering up for sucker
This makes local_irq_enable() - for L1 only case atleast simple enough
so we can inline it.
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/include')
-rw-r--r-- | arch/arc/include/asm/irqflags-compact.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/arc/include/asm/irqflags-compact.h b/arch/arc/include/asm/irqflags-compact.h index aa805575c320..a9490841c801 100644 --- a/arch/arc/include/asm/irqflags-compact.h +++ b/arch/arc/include/asm/irqflags-compact.h @@ -91,7 +91,19 @@ static inline void arch_local_irq_restore(unsigned long flags) /* * Unconditionally Enable IRQs */ -extern void arch_local_irq_enable(void); +static inline void arch_local_irq_enable(void) +{ + unsigned long temp; + + __asm__ __volatile__( + " lr %0, [status32] \n" + " or %0, %0, %1 \n" + " flag %0 \n" + : "=&r"(temp) + : "n"((STATUS_E1_MASK | STATUS_E2_MASK)) + : "cc", "memory"); +} + /* * Unconditionally Disable IRQs |