powerpc: add a definition for the marker offset within the interrupt frame
authorNicholas Piggin <npiggin@gmail.com>
Sun, 27 Nov 2022 12:49:33 +0000 (22:49 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 2 Dec 2022 06:54:08 +0000 (17:54 +1100)
Define a constant rather than open-code the offset for the
"regs" marker.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20221127124942.1665522-9-npiggin@gmail.com
arch/powerpc/include/asm/ptrace.h
arch/powerpc/kernel/entry_32.S
arch/powerpc/kernel/exceptions-64e.S
arch/powerpc/kernel/exceptions-64s.S
arch/powerpc/kernel/head_32.h
arch/powerpc/kernel/head_booke.h
arch/powerpc/kernel/interrupt_64.S
arch/powerpc/kvm/book3s_hv_rmhandlers.S

index a4ae67aa9b76deadeed01fa35b6c60219c243066..8a9f4cf8c4c585d9f8dcc1cbe413b80fce18b68d 100644 (file)
@@ -125,6 +125,7 @@ struct pt_regs
 #define STACK_INT_FRAME_SIZE   (sizeof(struct pt_regs) + \
                                 STACK_FRAME_OVERHEAD + KERNEL_REDZONE_SIZE)
 #define STACK_INT_FRAME_REGS   STACK_FRAME_OVERHEAD
+#define STACK_INT_FRAME_MARKER (STACK_FRAME_OVERHEAD - 16)
 #define STACK_FRAME_MARKER     12
 
 #ifdef CONFIG_PPC64_ELF_ABI_V2
@@ -145,6 +146,7 @@ struct pt_regs
 #define STACK_FRAME_LR_SAVE    1       /* Location of LR in stack frame */
 #define STACK_INT_FRAME_SIZE   (sizeof(struct pt_regs) + STACK_FRAME_OVERHEAD)
 #define STACK_INT_FRAME_REGS   STACK_FRAME_OVERHEAD
+#define STACK_INT_FRAME_MARKER (STACK_FRAME_OVERHEAD - 8)
 #define STACK_FRAME_MARKER     2
 #define STACK_FRAME_MIN_SIZE   STACK_FRAME_OVERHEAD
 
index 24c8d84a56c96987c0e50732f2b7a606850ceff1..2f61b7d3677c1552306f0b9a8b07637c6b0084f5 100644 (file)
@@ -114,7 +114,7 @@ transfer_to_syscall:
        addi    r12,r12,STACK_FRAME_REGS_MARKER@l
        stw     r9,_MSR(r1)
        li      r2, INTERRUPT_SYSCALL
-       stw     r12,8(r1)
+       stw     r12,STACK_INT_FRAME_MARKER(r1)
        stw     r2,_TRAP(r1)
        SAVE_GPR(0, r1)
        SAVE_GPRS(3, 8, r1)
index 62033d022e0a20a51ff060e678646ff3214edb39..b9cec22df9f97a87d0b21dc5234a8f69020eb396 100644 (file)
@@ -391,7 +391,7 @@ exc_##n##_common:                                                       \
        std     r10,_CCR(r1);           /* store orig CR in stackframe */   \
        std     r9,GPR1(r1);            /* store stack frame back link */   \
        std     r11,SOFTE(r1);          /* and save it to stackframe */     \
-       std     r12,STACK_FRAME_OVERHEAD-16(r1); /* mark the frame */       \
+       std     r12,STACK_INT_FRAME_MARKER(r1); /* mark the frame */        \
        std     r3,_TRAP(r1);           /* set trap number              */  \
        std     r0,RESULT(r1);          /* clear regs->result */            \
        SAVE_NVGPRS(r1);
index 29b78536ca597d04f463fe29968e7cd388908220..ac3b0580224eeea1daa212595275422d3bf3e2bd 100644 (file)
@@ -591,7 +591,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_CFAR)
        li      r10,0
        LOAD_REG_IMMEDIATE(r11, STACK_FRAME_REGS_MARKER)
        std     r10,RESULT(r1)          /* clear regs->result           */
-       std     r11,STACK_FRAME_OVERHEAD-16(r1) /* mark the frame       */
+       std     r11,STACK_INT_FRAME_MARKER(r1) /* mark the frame        */
 .endm
 
 /*
index 117d25330e139e21394e975d489fe42de653c044..f8e2911478a79949103a9378c10f8cba8f91461f 100644 (file)
@@ -112,7 +112,7 @@ _ASM_NOKPROBE_SYMBOL(\name\()_virt)
        stw     r0,GPR0(r1)
        lis     r10,STACK_FRAME_REGS_MARKER@ha /* exception frame marker */
        addi    r10,r10,STACK_FRAME_REGS_MARKER@l
-       stw     r10,8(r1)
+       stw     r10,STACK_INT_FRAME_MARKER(r1)
        li      r10, \trapno
        stw     r10,_TRAP(r1)
        SAVE_GPRS(3, 8, r1)
index 3149ac20b18e0a01bfd98066fbc496d3f2cd6d6c..37d43c1726766f23ed5af1211ff403d9d1b26e15 100644 (file)
@@ -84,7 +84,7 @@ END_BTB_FLUSH_SECTION
        stw     r0,GPR0(r1)
        lis     r10, STACK_FRAME_REGS_MARKER@ha /* exception frame marker */
        addi    r10, r10, STACK_FRAME_REGS_MARKER@l
-       stw     r10, 8(r1)
+       stw     r10, STACK_INT_FRAME_MARKER(r1)
        li      r10, \trapno
        stw     r10,_TRAP(r1)
        SAVE_GPRS(3, 8, r1)
index 49d585eae7c8b25c3d36d3a6b51a276cf15a4140..321992c1c9f900881250b2728e3668557e75dd17 100644 (file)
@@ -77,11 +77,11 @@ _ASM_NOKPROBE_SYMBOL(system_call_vectored_\name)
        std     r11,_TRAP(r1)
        std     r12,_CCR(r1)
        std     r3,ORIG_GPR3(r1)
+       LOAD_REG_IMMEDIATE(r11, STACK_FRAME_REGS_MARKER)
+       std     r11,STACK_INT_FRAME_MARKER(r1)          /* "regs" marker */
        /* Calling convention has r3 = regs, r4 = orig r0 */
        addi    r3,r1,STACK_INT_FRAME_REGS
        mr      r4,r0
-       LOAD_REG_IMMEDIATE(r11, STACK_FRAME_REGS_MARKER)
-       std     r11,-16(r3)             /* "regshere" marker */
 
 BEGIN_FTR_SECTION
        HMT_MEDIUM
@@ -250,11 +250,11 @@ END_BTB_FLUSH_SECTION
        std     r11,_TRAP(r1)
        std     r12,_CCR(r1)
        std     r3,ORIG_GPR3(r1)
+       LOAD_REG_IMMEDIATE(r11, STACK_FRAME_REGS_MARKER)
+       std     r11,STACK_INT_FRAME_MARKER(r1)          /* "regs" marker */
        /* Calling convention has r3 = regs, r4 = orig r0 */
        addi    r3,r1,STACK_INT_FRAME_REGS
        mr      r4,r0
-       LOAD_REG_IMMEDIATE(r11, STACK_FRAME_REGS_MARKER)
-       std     r11,-16(r3)             /* "regshere" marker */
 
 #ifdef CONFIG_PPC_BOOK3S
        li      r11,1
@@ -637,7 +637,7 @@ ALT_FTR_SECTION_END_IFCLR(CPU_FTR_STCX_CHECKS_ADDRESS)
         * Leaving a stale STACK_FRAME_REGS_MARKER on the stack can confuse
         * the reliable stack unwinder later on. Clear it.
         */
-       std     r0,STACK_FRAME_OVERHEAD-16(r1)
+       std     r0,STACK_INT_FRAME_MARKER(r1)
 
        REST_GPRS(2, 5, r1)
 
index 37f50861dd98fe538af9424d68424675dee3e612..a9e162a1deec994fa4bea3fe02d7b393ea64d03a 100644 (file)
@@ -2729,7 +2729,7 @@ kvmppc_bad_host_intr:
        std     r6, SOFTE(r1)
        LOAD_PACA_TOC()
        LOAD_REG_IMMEDIATE(3, STACK_FRAME_REGS_MARKER)
-       std     r3, STACK_FRAME_OVERHEAD-16(r1)
+       std     r3, STACK_INT_FRAME_MARKER(r1)
 
        /*
         * XXX On POWER7 and POWER8, we just spin here since we don't