powerpc/64s/exception: mtmsrd L=1 cleanup
authorNicholas Piggin <npiggin@gmail.com>
Fri, 28 Jun 2019 05:33:22 +0000 (15:33 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 2 Jul 2019 11:39:48 +0000 (21:39 +1000)
All supported 64s CPUs support mtmsrd L=1 instruction, so a cleanup
can be made in sreset and mce handlers.

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

index 3735b9d..33c253f 100644 (file)
@@ -882,11 +882,8 @@ EXC_COMMON_BEGIN(system_reset_common)
        addi    r3,r1,STACK_FRAME_OVERHEAD
        bl      system_reset_exception
 
-       /* This (and MCE) can be simplified with mtmsrd L=1 */
        /* Clear MSR_RI before setting SRR0 and SRR1. */
-       li      r0,MSR_RI
-       mfmsr   r9
-       andc    r9,r9,r0
+       li      r9,0
        mtmsrd  r9,1
 
        /*
@@ -1081,9 +1078,7 @@ EXC_COMMON_BEGIN(machine_check_common)
 
 #define MACHINE_CHECK_HANDLER_WINDUP                   \
        /* Clear MSR_RI before setting SRR0 and SRR1. */\
-       li      r0,MSR_RI;                              \
-       mfmsr   r9;             /* get MSR value */     \
-       andc    r9,r9,r0;                               \
+       li      r9,0;                                   \
        mtmsrd  r9,1;           /* Clear MSR_RI */      \
        /* Move original SRR0 and SRR1 into the respective regs */      \
        ld      r9,_MSR(r1);                            \