summaryrefslogtreecommitdiff
path: root/arch/arc/include/asm/irqflags-compact.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2015-09-05 22:47:30 +0530
committerVineet Gupta <vgupta@synopsys.com>2015-10-17 17:48:22 +0530
commit9dbd3d9bfd56707f9b1ccc301506e2fac0e95795 (patch)
tree6da3363df38759b7e2130ed7e4a2ef8c194d3835 /arch/arc/include/asm/irqflags-compact.h
parentc7119d56d2755fc2770b0e2c1c4385e10f4c9161 (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/asm/irqflags-compact.h')
-rw-r--r--arch/arc/include/asm/irqflags-compact.h14
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