diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2017-08-12 02:38:59 +1000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2017-08-23 23:02:48 +1000 |
commit | e0c827c09c0d04d77616a4506a71b3d5b0cf07e8 (patch) | |
tree | a81445323ca0ea2c741016b44d1b24e79f8cfd4d /arch/powerpc/kernel/exceptions-64s.S | |
parent | 3a2df3798d4da2fc40052c25f0d9c687b1467d53 (diff) | |
download | linux-stable-e0c827c09c0d04d77616a4506a71b3d5b0cf07e8.tar.gz linux-stable-e0c827c09c0d04d77616a4506a71b3d5b0cf07e8.tar.bz2 linux-stable-e0c827c09c0d04d77616a4506a71b3d5b0cf07e8.zip |
powerpc/64s: Avoid a branch in masked_[H]interrupt()
Interrupts which do not require EE to be cleared can all be tested
with a single bitwise test.
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.S | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S index 3c36ecbc1539..caf083d89500 100644 --- a/arch/powerpc/kernel/exceptions-64s.S +++ b/arch/powerpc/kernel/exceptions-64s.S @@ -1370,10 +1370,8 @@ masked_##_H##interrupt: \ ori r10,r10,0xffff; \ mtspr SPRN_DEC,r10; \ b MASKED_DEC_HANDLER_LABEL; \ -1: cmpwi r10,PACA_IRQ_DBELL; \ - beq 2f; \ - cmpwi r10,PACA_IRQ_HMI; \ - beq 2f; \ +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; \ |