powerpc/64s: Optimise clearing of MSR_EE in masked_[H]interrupt()
authorNicholas Piggin <npiggin@gmail.com>
Fri, 11 Aug 2017 16:39:00 +0000 (02:39 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 23 Aug 2017 13:06:48 +0000 (23:06 +1000)
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>
arch/powerpc/kernel/exceptions-64s.S

index caf083d..2cc5e9d 100644 (file)
@@ -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);               \