lkml.org 
[lkml]   [2021]   [Mar]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 03/41] powerpc/40x: Change CRITICAL_EXCEPTION_PROLOG macro to a gas macro
    Date
    Change CRITICAL_EXCEPTION_PROLOG macro to a gas macro to
    remove the ugly ; and \ on each line.

    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    ---
    arch/powerpc/kernel/head_40x.S | 71 +++++++++++++++++-----------------
    1 file changed, 36 insertions(+), 35 deletions(-)

    diff --git a/arch/powerpc/kernel/head_40x.S b/arch/powerpc/kernel/head_40x.S
    index 383238a98f77..9cef423d574b 100644
    --- a/arch/powerpc/kernel/head_40x.S
    +++ b/arch/powerpc/kernel/head_40x.S
    @@ -100,42 +100,43 @@ _ENTRY(saved_ksp_limit)
    * Instead we use a couple of words of memory at low physical addresses.
    * This is OK since we don't support SMP on these processors.
    */
    -#define CRITICAL_EXCEPTION_PROLOG \
    - stw r10,crit_r10@l(0); /* save two registers to work with */\
    - stw r11,crit_r11@l(0); \
    - mfcr r10; /* save CR in r10 for now */\
    - mfspr r11,SPRN_SRR3; /* check whether user or kernel */\
    - andi. r11,r11,MSR_PR; \
    - lis r11,critirq_ctx@ha; \
    - tophys(r11,r11); \
    - lwz r11,critirq_ctx@l(r11); \
    - beq 1f; \
    - /* COMING FROM USER MODE */ \
    - mfspr r11,SPRN_SPRG_THREAD; /* if from user, start at top of */\
    - lwz r11,TASK_STACK-THREAD(r11); /* this thread's kernel stack */\
    -1: addi r11,r11,THREAD_SIZE-INT_FRAME_SIZE; /* Alloc an excpt frm */\
    - tophys(r11,r11); \
    - stw r10,_CCR(r11); /* save various registers */\
    - stw r12,GPR12(r11); \
    - stw r9,GPR9(r11); \
    - mflr r10; \
    - stw r10,_LINK(r11); \
    - mfspr r12,SPRN_DEAR; /* save DEAR and ESR in the frame */\
    - stw r12,_DEAR(r11); /* since they may have had stuff */\
    - mfspr r9,SPRN_ESR; /* in them at the point where the */\
    - stw r9,_ESR(r11); /* exception was taken */\
    - mfspr r12,SPRN_SRR2; \
    - stw r1,GPR1(r11); \
    - mfspr r9,SPRN_SRR3; \
    - stw r1,0(r11); \
    - tovirt(r1,r11); \
    - rlwinm r9,r9,0,14,12; /* clear MSR_WE (necessary?) */\
    - stw r0,GPR0(r11); \
    - lis r10, STACK_FRAME_REGS_MARKER@ha; /* exception frame marker */\
    - addi r10, r10, STACK_FRAME_REGS_MARKER@l; \
    - stw r10, 8(r11); \
    - SAVE_4GPRS(3, r11); \
    +.macro CRITICAL_EXCEPTION_PROLOG
    + stw r10,crit_r10@l(0) /* save two registers to work with */
    + stw r11,crit_r11@l(0)
    + mfcr r10 /* save CR in r10 for now */
    + mfspr r11,SPRN_SRR3 /* check whether user or kernel */
    + andi. r11,r11,MSR_PR
    + lis r11,critirq_ctx@ha
    + tophys(r11,r11)
    + lwz r11,critirq_ctx@l(r11)
    + beq 1f
    + /* COMING FROM USER MODE */
    + mfspr r11,SPRN_SPRG_THREAD /* if from user, start at top of */
    + lwz r11,TASK_STACK-THREAD(r11) /* this thread's kernel stack */
    +1: addi r11,r11,THREAD_SIZE-INT_FRAME_SIZE /* Alloc an excpt frm */
    + tophys(r11,r11)
    + stw r10,_CCR(r11) /* save various registers */
    + stw r12,GPR12(r11)
    + stw r9,GPR9(r11)
    + mflr r10
    + stw r10,_LINK(r11)
    + mfspr r12,SPRN_DEAR /* save DEAR and ESR in the frame */
    + stw r12,_DEAR(r11) /* since they may have had stuff */
    + mfspr r9,SPRN_ESR /* in them at the point where the */
    + stw r9,_ESR(r11) /* exception was taken */
    + mfspr r12,SPRN_SRR2
    + stw r1,GPR1(r11)
    + mfspr r9,SPRN_SRR3
    + stw r1,0(r11)
    + tovirt(r1,r11)
    + rlwinm r9,r9,0,14,12 /* clear MSR_WE (necessary?) */
    + stw r0,GPR0(r11)
    + lis r10, STACK_FRAME_REGS_MARKER@ha /* exception frame marker */
    + addi r10, r10, STACK_FRAME_REGS_MARKER@l
    + stw r10, 8(r11)
    + SAVE_4GPRS(3, r11)
    SAVE_2GPRS(7, r11)
    +.endm

    /*
    * State at this point:
    --
    2.25.0
    \
     
     \ /
      Last update: 2021-03-12 13:51    [W:4.676 / U:0.124 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site