This frees up one more register (and takes advantage of that to
clean things up a little bit).

This register will be used in the following patch.

Signed-off-by: Nicholas Piggin <npig...@gmail.com>
---
 arch/powerpc/kernel/exceptions-64s.S | 34 ++++++++++++++++------------
 1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/arch/powerpc/kernel/exceptions-64s.S 
b/arch/powerpc/kernel/exceptions-64s.S
index b370a5f334fc..a01f69e774b5 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -2745,7 +2745,6 @@ INT_DEFINE_END(soft_nmi)
  * and run it entirely with interrupts hard disabled.
  */
 EXC_COMMON_BEGIN(soft_nmi_common)
-       mfspr   r11,SPRN_SRR0
        mr      r10,r1
        ld      r1,PACAEMERGSP(r13)
        subi    r1,r1,INT_FRAME_SIZE
@@ -2780,19 +2779,24 @@ masked_Hinterrupt:
        .else
 masked_interrupt:
        .endif
-       lbz     r11,PACAIRQHAPPENED(r13)
-       or      r11,r11,r10
-       stb     r11,PACAIRQHAPPENED(r13)
+       stw     r9,PACA_EXGEN+EX_CCR(r13)
+       lbz     r9,PACAIRQHAPPENED(r13)
+       or      r9,r9,r10
+       stb     r9,PACAIRQHAPPENED(r13)
+
+       .if ! \hsrr
        cmpwi   r10,PACA_IRQ_DEC
        bne     1f
-       lis     r10,0x7fff
-       ori     r10,r10,0xffff
-       mtspr   SPRN_DEC,r10
+       LOAD_REG_IMMEDIATE(r9, 0x7fffffff)
+       mtspr   SPRN_DEC,r9
 #ifdef CONFIG_PPC_WATCHDOG
+       lwz     r9,PACA_EXGEN+EX_CCR(r13)
        b       soft_nmi_common
 #else
        b       2f
 #endif
+       .endif
+
 1:     andi.   r10,r10,PACA_IRQ_MUST_HARD_MASK
        beq     2f
        xori    r12,r12,MSR_EE  /* clear MSR_EE */
@@ -2801,17 +2805,19 @@ masked_interrupt:
        .else
        mtspr   SPRN_SRR1,r12
        .endif
-       ori     r11,r11,PACA_IRQ_HARD_DIS
-       stb     r11,PACAIRQHAPPENED(r13)
+       ori     r9,r9,PACA_IRQ_HARD_DIS
+       stb     r9,PACAIRQHAPPENED(r13)
 2:     /* done */
-       li      r10,0
+       li      r9,0
        .if \hsrr
-       stb     r10,PACAHSRR_VALID(r13)
+       stb     r9,PACAHSRR_VALID(r13)
        .else
-       stb     r10,PACASRR_VALID(r13)
+       stb     r9,PACASRR_VALID(r13)
        .endif
-       ld      r10,PACA_EXGEN+EX_CTR(r13)
-       mtctr   r10
+
+       ld      r9,PACA_EXGEN+EX_CTR(r13)
+       mtctr   r9
+       lwz     r9,PACA_EXGEN+EX_CCR(r13)
        mtcrf   0x80,r9
        std     r1,PACAR1(r13)
        ld      r9,PACA_EXGEN+EX_R9(r13)
-- 
2.23.0

Reply via email to