powerpc/64s/exception: Expand EXCEPTION_PROLOG_COMMON_1 and 2 into caller
authorNicholas Piggin <npiggin@gmail.com>
Fri, 2 Aug 2019 10:56:56 +0000 (20:56 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 30 Aug 2019 01:14:58 +0000 (11:14 +1000)
No generated code change except BUG line number constants.

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

index 492786604b103d309f8dbe2aebcba7353487c4ee..7a4f215c4c5b04c71cfc14f2eb5e617a3ffd9b90 100644 (file)
@@ -390,49 +390,6 @@ END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,948)
 .endm
 #endif
 
-#define EXCEPTION_PROLOG_COMMON_1()                                       \
-       std     r9,_CCR(r1);            /* save CR in stackframe        */ \
-       std     r11,_NIP(r1);           /* save SRR0 in stackframe      */ \
-       std     r12,_MSR(r1);           /* save SRR1 in stackframe      */ \
-       std     r10,0(r1);              /* make stack chain pointer     */ \
-       std     r0,GPR0(r1);            /* save r0 in stackframe        */ \
-       std     r10,GPR1(r1);           /* save r1 in stackframe        */ \
-
-/* Save original regs values from save area to stack frame. */
-#define EXCEPTION_PROLOG_COMMON_2(area, trap)                             \
-       ld      r9,area+EX_R9(r13);     /* move r9, r10 to stackframe   */ \
-       ld      r10,area+EX_R10(r13);                                      \
-       std     r9,GPR9(r1);                                               \
-       std     r10,GPR10(r1);                                             \
-       ld      r9,area+EX_R11(r13);    /* move r11 - r13 to stackframe */ \
-       ld      r10,area+EX_R12(r13);                                      \
-       ld      r11,area+EX_R13(r13);                                      \
-       std     r9,GPR11(r1);                                              \
-       std     r10,GPR12(r1);                                             \
-       std     r11,GPR13(r1);                                             \
-BEGIN_FTR_SECTION_NESTED(66);                                             \
-       ld      r10,area+EX_CFAR(r13);                                     \
-       std     r10,ORIG_GPR3(r1);                                         \
-END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66);                           \
-       GET_CTR(r10, area);                                                \
-       std     r10,_CTR(r1);                                              \
-       std     r2,GPR2(r1);            /* save r2 in stackframe        */ \
-       SAVE_4GPRS(3, r1);              /* save r3 - r6 in stackframe   */ \
-       SAVE_2GPRS(7, r1);              /* save r7, r8 in stackframe    */ \
-       mflr    r9;                     /* Get LR, later save to stack  */ \
-       ld      r2,PACATOC(r13);        /* get kernel TOC into r2       */ \
-       std     r9,_LINK(r1);                                              \
-       lbz     r10,PACAIRQSOFTMASK(r13);                                  \
-       mfspr   r11,SPRN_XER;           /* save XER in stackframe       */ \
-       std     r10,SOFTE(r1);                                             \
-       std     r11,_XER(r1);                                              \
-       li      r9,(trap)+1;                                               \
-       std     r9,_TRAP(r1);           /* set trap number              */ \
-       li      r10,0;                                                     \
-       ld      r11,exception_marker@toc(r2);                              \
-       std     r10,RESULT(r1);         /* clear regs->result           */ \
-       std     r11,STACK_FRAME_OVERHEAD-16(r1); /* mark the frame      */
-
 /*
  * On entry r13 points to the paca, r9-r13 are saved in the paca,
  * r9 contains the saved CR, r11 and r12 contain the saved SRR0 and
@@ -452,7 +409,13 @@ END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66);                       \
        EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,0
 3:
        .endif
-       EXCEPTION_PROLOG_COMMON_1()
+
+       std     r9,_CCR(r1)             /* save CR in stackframe        */
+       std     r11,_NIP(r1)            /* save SRR0 in stackframe      */
+       std     r12,_MSR(r1)            /* save SRR1 in stackframe      */
+       std     r10,0(r1)               /* make stack chain pointer     */
+       std     r0,GPR0(r1)             /* save r0 in stackframe        */
+       std     r10,GPR1(r1)            /* save r1 in stackframe        */
 
        .if \stack
        .if \kaup
@@ -468,7 +431,39 @@ END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66);                       \
        .endif
        .endif
 
-       EXCEPTION_PROLOG_COMMON_2(\area, \vec)
+       /* Save original regs values from save area to stack frame. */
+       ld      r9,\area+EX_R9(r13)     /* move r9, r10 to stackframe   */
+       ld      r10,\area+EX_R10(r13)
+       std     r9,GPR9(r1)
+       std     r10,GPR10(r1)
+       ld      r9,\area+EX_R11(r13)    /* move r11 - r13 to stackframe */
+       ld      r10,\area+EX_R12(r13)
+       ld      r11,\area+EX_R13(r13)
+       std     r9,GPR11(r1)
+       std     r10,GPR12(r1)
+       std     r11,GPR13(r1)
+BEGIN_FTR_SECTION_NESTED(66)
+       ld      r10,\area+EX_CFAR(r13)
+       std     r10,ORIG_GPR3(r1)
+END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66)
+       GET_CTR(r10, \area)
+       std     r10,_CTR(r1)
+       std     r2,GPR2(r1)             /* save r2 in stackframe        */
+       SAVE_4GPRS(3, r1)               /* save r3 - r6 in stackframe   */
+       SAVE_2GPRS(7, r1)               /* save r7, r8 in stackframe    */
+       mflr    r9                      /* Get LR, later save to stack  */
+       ld      r2,PACATOC(r13)         /* get kernel TOC into r2       */
+       std     r9,_LINK(r1)
+       lbz     r10,PACAIRQSOFTMASK(r13)
+       mfspr   r11,SPRN_XER            /* save XER in stackframe       */
+       std     r10,SOFTE(r1)
+       std     r11,_XER(r1)
+       li      r9,(\vec)+1
+       std     r9,_TRAP(r1)            /* set trap number              */
+       li      r10,0
+       ld      r11,exception_marker@toc(r2)
+       std     r10,RESULT(r1)          /* clear regs->result           */
+       std     r11,STACK_FRAME_OVERHEAD-16(r1) /* mark the frame       */
 
        .if \stack
        ACCOUNT_STOLEN_TIME