Commit 9d3c18a1 authored by Christophe Leroy's avatar Christophe Leroy Committed by Michael Ellerman

powerpc/40x: Change CRITICAL_EXCEPTION_PROLOG macro to a gas macro

Change CRITICAL_EXCEPTION_PROLOG macro to a gas macro to
remove the ugly ; and \ on each line.
Signed-off-by: default avatarChristophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/73291fb9dc9ec58182c27a40dfc3db204e3f4024.1615552866.git.christophe.leroy@csgroup.eu
parent 52ae92cc
...@@ -100,42 +100,43 @@ _ENTRY(saved_ksp_limit) ...@@ -100,42 +100,43 @@ _ENTRY(saved_ksp_limit)
* Instead we use a couple of words of memory at low physical addresses. * 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. * This is OK since we don't support SMP on these processors.
*/ */
#define CRITICAL_EXCEPTION_PROLOG \ .macro CRITICAL_EXCEPTION_PROLOG
stw r10,crit_r10@l(0); /* save two registers to work with */\ stw r10,crit_r10@l(0) /* save two registers to work with */
stw r11,crit_r11@l(0); \ stw r11,crit_r11@l(0)
mfcr r10; /* save CR in r10 for now */\ mfcr r10 /* save CR in r10 for now */
mfspr r11,SPRN_SRR3; /* check whether user or kernel */\ mfspr r11,SPRN_SRR3 /* check whether user or kernel */
andi. r11,r11,MSR_PR; \ andi. r11,r11,MSR_PR
lis r11,critirq_ctx@ha; \ lis r11,critirq_ctx@ha
tophys(r11,r11); \ tophys(r11,r11)
lwz r11,critirq_ctx@l(r11); \ lwz r11,critirq_ctx@l(r11)
beq 1f; \ beq 1f
/* COMING FROM USER MODE */ \ /* COMING FROM USER MODE */
mfspr r11,SPRN_SPRG_THREAD; /* if from user, start at top of */\ mfspr r11,SPRN_SPRG_THREAD /* if from user, start at top of */
lwz r11,TASK_STACK-THREAD(r11); /* this thread's kernel stack */\ lwz r11,TASK_STACK-THREAD(r11) /* this thread's kernel stack */
1: addi r11,r11,THREAD_SIZE-INT_FRAME_SIZE; /* Alloc an excpt frm */\ 1: addi r11,r11,THREAD_SIZE-INT_FRAME_SIZE /* Alloc an excpt frm */
tophys(r11,r11); \ tophys(r11,r11)
stw r10,_CCR(r11); /* save various registers */\ stw r10,_CCR(r11) /* save various registers */
stw r12,GPR12(r11); \ stw r12,GPR12(r11)
stw r9,GPR9(r11); \ stw r9,GPR9(r11)
mflr r10; \ mflr r10
stw r10,_LINK(r11); \ stw r10,_LINK(r11)
mfspr r12,SPRN_DEAR; /* save DEAR and ESR in the frame */\ mfspr r12,SPRN_DEAR /* save DEAR and ESR in the frame */
stw r12,_DEAR(r11); /* since they may have had stuff */\ stw r12,_DEAR(r11) /* since they may have had stuff */
mfspr r9,SPRN_ESR; /* in them at the point where the */\ mfspr r9,SPRN_ESR /* in them at the point where the */
stw r9,_ESR(r11); /* exception was taken */\ stw r9,_ESR(r11) /* exception was taken */
mfspr r12,SPRN_SRR2; \ mfspr r12,SPRN_SRR2
stw r1,GPR1(r11); \ stw r1,GPR1(r11)
mfspr r9,SPRN_SRR3; \ mfspr r9,SPRN_SRR3
stw r1,0(r11); \ stw r1,0(r11)
tovirt(r1,r11); \ tovirt(r1,r11)
rlwinm r9,r9,0,14,12; /* clear MSR_WE (necessary?) */\ rlwinm r9,r9,0,14,12 /* clear MSR_WE (necessary?) */
stw r0,GPR0(r11); \ stw r0,GPR0(r11)
lis r10, STACK_FRAME_REGS_MARKER@ha; /* exception frame marker */\ lis r10, STACK_FRAME_REGS_MARKER@ha /* exception frame marker */
addi r10, r10, STACK_FRAME_REGS_MARKER@l; \ addi r10, r10, STACK_FRAME_REGS_MARKER@l
stw r10, 8(r11); \ stw r10, 8(r11)
SAVE_4GPRS(3, r11); \ SAVE_4GPRS(3, r11)
SAVE_2GPRS(7, r11) SAVE_2GPRS(7, r11)
.endm
/* /*
* State at this point: * State at this point:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment