summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/exceptions-64s.S
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2017-08-11 18:39:00 +0200
committerMichael Ellerman <mpe@ellerman.id.au>2017-08-23 15:06:48 +0200
commit6e9a2f6ebac457dd81c531473c1364514907e5a7 (patch)
treee1294d2e0f6592cf7ae7ba7b44ab6c14b7832ccf /arch/powerpc/kernel/exceptions-64s.S
parentpowerpc/64s: Avoid a branch in masked_[H]interrupt() (diff)
downloadlinux-6e9a2f6ebac457dd81c531473c1364514907e5a7.tar.xz
linux-6e9a2f6ebac457dd81c531473c1364514907e5a7.zip
powerpc/64s: Optimise clearing of MSR_EE in masked_[H]interrupt()
MSR_EE is always enabled in SRR1 for masked interrupts, so we can use xor to clear it. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/kernel/exceptions-64s.S')
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S3
1 files changed, 1 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index caf083d89500..2cc5e9d4c907 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -1373,8 +1373,7 @@ masked_##_H##interrupt: \
1: andi. r10,r10,(PACA_IRQ_DBELL|PACA_IRQ_HMI); \
bne 2f; \
mfspr r10,SPRN_##_H##SRR1; \
- rldicl r10,r10,48,1; /* clear MSR_EE */ \
- rotldi r10,r10,16; \
+ xori r10,r10,MSR_EE; /* clear MSR_EE */ \
mtspr SPRN_##_H##SRR1,r10; \
2: mtcrf 0x80,r9; \
ld r9,PACA_EXGEN+EX_R9(r13); \