summaryrefslogtreecommitdiffstats
path: root/arch/arc/include
diff options
context:
space:
mode:
authorVineet Gupta <vgupta@kernel.org>2020-06-18 01:23:38 +0200
committerVineet Gupta <vgupta@kernel.org>2023-08-18 19:30:47 +0200
commitdfb12071dda4e28aea82d06bf9c01c403f6d0f30 (patch)
tree9755da769ce96c66d5d072dfbcab1dcaff2e36df /arch/arc/include
parentARC: entry: Add more common chores to EXCEPTION_PROLOGUE (diff)
downloadlinux-dfb12071dda4e28aea82d06bf9c01c403f6d0f30.tar.xz
linux-dfb12071dda4e28aea82d06bf9c01c403f6d0f30.zip
ARC: entry: replace 8 byte OR with 4 byte BSET
FAKE_RET_FROM_EXCEPTION drops down to pure kernel mode. It currently has an 8 byte instruction which can be replaced with 4 byte BSET This is applicable to both ARCv2 and ARCv3 entr code. ARCv2 current ------------ 00000804 <EV_Trap>: ... 874: 216a 1280 lr r9,[status32] 878: 2146 1809 bic r9,r9,0x20 87c: 2105 1f89 8000 0000 or r9,r9,0x80000000 ^^^^^^^^^ 884: 2029 8240 kflag r9 ARCv2 after ---------- 000007e0 <EV_Trap>: ... 850: 216a 1280 lr r9,[status32] 854: 2150 1149 bclr r9,r9,0x5 858: 214f 17c9 bset r9,r9,0x1f 85c: 2029 8240 kflag r9 Signed-off-by: Vineet Gupta <vgupta@kernel.org>
Diffstat (limited to 'arch/arc/include')
-rw-r--r--arch/arc/include/asm/entry-arcv2.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arc/include/asm/entry-arcv2.h b/arch/arc/include/asm/entry-arcv2.h
index 11b48ab39154..f7c9b3915d10 100644
--- a/arch/arc/include/asm/entry-arcv2.h
+++ b/arch/arc/include/asm/entry-arcv2.h
@@ -274,8 +274,8 @@
.macro FAKE_RET_FROM_EXCPN
lr r9, [status32]
- bic r9, r9, STATUS_AE_MASK
- or r9, r9, STATUS_IE_MASK
+ bclr r9, r9, STATUS_AE_BIT
+ bset r9, r9, STATUS_IE_BIT
kflag r9
.endm