Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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]

authored by

Alexey Brodkin and committed by
Vineet Gupta
97abfd5d 5f9e832c

+1 -1
+1 -1
arch/arc/include/asm/entry-arcv2.h
··· 256 256 257 257 .macro FAKE_RET_FROM_EXCPN 258 258 lr r9, [status32] 259 - bic r9, r9, (STATUS_U_MASK|STATUS_DE_MASK|STATUS_AE_MASK) 259 + bic r9, r9, STATUS_AE_MASK 260 260 or r9, r9, STATUS_IE_MASK 261 261 kflag r9 262 262 .endm