summaryrefslogtreecommitdiffstats
path: root/arch/arc/include
diff options
context:
space:
mode:
authorAlexey Brodkin <Alexey.Brodkin@synopsys.com>2019-07-16 23:50:34 +0300
committerVineet Gupta <vgupta@synopsys.com>2019-08-05 12:31:29 +0530
commit97abfd5d801abb6eac35e2d7d725123950e2153d (patch)
tree0f8fbf09c423fc8a533cf4549aa1722ed15c1c12 /arch/arc/include
parent5f9e832c137075045d15cd6899ab0505cfb2ca4b (diff)
downloadlinux-stable-97abfd5d801abb6eac35e2d7d725123950e2153d.tar.gz
linux-stable-97abfd5d801abb6eac35e2d7d725123950e2153d.tar.bz2
linux-stable-97abfd5d801abb6eac35e2d7d725123950e2153d.zip
ARCv2: entry: early return from exception need not clear U & DE bits
Exception handlers call FAKE_RET_FROM_EXCPN to - clear AE bit: drop down from exception active to pure kernel mode allowing further excptions - set IE bit: re-enable interrupts It additionally also clears U bit (user mode) and DE bit (delay slot execution) which is redundant as hardware does that already on any taken exception. Morevoer the current software clearing is bogus anyways as the KFLAG instruction being used for purpose can't possibly write those bits anyways. So don't pretend to clear them. Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com> [vgupta: rewrote changelog]
Diffstat (limited to 'arch/arc/include')
-rw-r--r--arch/arc/include/asm/entry-arcv2.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/arc/include/asm/entry-arcv2.h b/arch/arc/include/asm/entry-arcv2.h
index f5ae394ebe06..41b16f21beec 100644
--- a/arch/arc/include/asm/entry-arcv2.h
+++ b/arch/arc/include/asm/entry-arcv2.h
@@ -256,7 +256,7 @@
.macro FAKE_RET_FROM_EXCPN
lr r9, [status32]
- bic r9, r9, (STATUS_U_MASK|STATUS_DE_MASK|STATUS_AE_MASK)
+ bic r9, r9, STATUS_AE_MASK
or r9, r9, STATUS_IE_MASK
kflag r9
.endm