powerpc/64s/exception: simplify hmi windup code
authorNicholas Piggin <npiggin@gmail.com>
Fri, 28 Jun 2019 05:33:25 +0000 (15:33 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 2 Jul 2019 11:39:48 +0000 (21:39 +1000)
Duplicate the hmi windup code for both cases, rather than to put a
special case branch in the middle of it. Remove unused label. This
helps with later code consolidation.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/exceptions-64s.S

index d8f1d70c675f8af67cbc2ace40092f854c824de8..cbed1e42d85c05ec1c32f2b9fbecaa4450015467 100644 (file)
@@ -1781,6 +1781,7 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
        addi    r3,r1,STACK_FRAME_OVERHEAD
        BRANCH_LINK_TO_FAR(DOTSYM(hmi_exception_realmode)) /* Function call ABI */
        cmpdi   cr0,r3,0
+       bne     1f
 
        /* Windup the stack. */
        /* Move original HSRR0 and HSRR1 into the respective regs */
@@ -1799,13 +1800,28 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
        REST_GPR(10, r1)
        ld      r11,_CCR(r1)
        REST_2GPRS(12, r1)
-       bne     1f
        mtcr    r11
        REST_GPR(11, r1)
        ld      r1,GPR1(r1)
        HRFI_TO_USER_OR_KERNEL
 
-1:     mtcr    r11
+1:
+       ld      r9,_MSR(r1)
+       mtspr   SPRN_HSRR1,r9
+       ld      r9,_NIP(r1)
+       mtspr   SPRN_HSRR0,r9
+       ld      r9,_CTR(r1)
+       mtctr   r9
+       ld      r9,_XER(r1)
+       mtxer   r9
+       ld      r9,_LINK(r1)
+       mtlr    r9
+       REST_GPR(0, r1)
+       REST_8GPRS(2, r1)
+       REST_GPR(10, r1)
+       ld      r11,_CCR(r1)
+       REST_2GPRS(12, r1)
+       mtcr    r11
        REST_GPR(11, r1)
        ld      r1,GPR1(r1)
 
@@ -1813,8 +1829,6 @@ TRAMP_REAL_BEGIN(hmi_exception_early)
         * Go to virtual mode and pull the HMI event information from
         * firmware.
         */
-       .globl hmi_exception_after_realmode
-hmi_exception_after_realmode:
        SET_SCRATCH0(r13)
        EXCEPTION_PROLOG_0 PACA_EXGEN
        b       tramp_real_hmi_exception