aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arc/include/asm/irqflags-compact.h
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@synopsys.com>2015-09-05 23:08:31 +0530
committerVineet Gupta <vgupta@synopsys.com>2015-10-17 17:48:22 +0530
commit55a2ae775ab4fe7aefa736e0fae6b8d4bd8aaab5 (patch)
tree19e73c6b565f2ce0676a99f88e254411acf4a48a /arch/arc/include/asm/irqflags-compact.h
parentARC: [arcompact] don't check for hard isr calling local_irq_enable() (diff)
downloadlinux-dev-55a2ae775ab4fe7aefa736e0fae6b8d4bd8aaab5.tar.xz
linux-dev-55a2ae775ab4fe7aefa736e0fae6b8d4bd8aaab5.zip
ARC: [arcompact] entry.S: Improve early return from exception
The requirement is to - Reenable Exceptions (AE cleared) - Reenable Interrupts (E1/E2 set) We need to do wiggle these bits into ERSTATUS and call RTIE. Prev version used the pre-exception STATUS32 as starting point for what goes into ERSTATUS. This required explicit fixups of U/DE/L bits. Instead, use the current (in-exception) STATUS32 as starting point. Being in exception handler U/DE/L can be safely assumed to be correct. Only AE/E1/E2 need to be fixed. So the new implementation is slightly better -Avoids read form memory -Is 4 bytes smaller for the typical 1 level of intr configuration -Depicts the semantics more clearly 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.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arc/include/asm/irqflags-compact.h b/arch/arc/include/asm/irqflags-compact.h
index a9490841c801..d8c608174617 100644
--- a/arch/arc/include/asm/irqflags-compact.h
+++ b/arch/arc/include/asm/irqflags-compact.h
@@ -23,11 +23,13 @@
#define STATUS_E2_BIT 2 /* Int 2 enable */
#define STATUS_A1_BIT 3 /* Int 1 active */
#define STATUS_A2_BIT 4 /* Int 2 active */
+#define STATUS_AE_BIT 5 /* Exception active */
#define STATUS_E1_MASK (1<<STATUS_E1_BIT)
#define STATUS_E2_MASK (1<<STATUS_E2_BIT)
#define STATUS_A1_MASK (1<<STATUS_A1_BIT)
#define STATUS_A2_MASK (1<<STATUS_A2_BIT)
+#define STATUS_AE_MASK (1<<STATUS_AE_BIT)
#define STATUS_IE_MASK (STATUS_E1_MASK | STATUS_E2_MASK)
/* Other Interrupt Handling related Aux regs */