powerpc/64s/exception: Remove old INT_COMMON macro
Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200225173541.1549955-8-npiggin@gmail.com
This commit is contained in:

committed by
Michael Ellerman

parent
fc589ee416
commit
6d71759a74
@@ -591,8 +591,8 @@ END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,948)
|
|||||||
* If stack=0, then the stack is already set in r1, and r1 is saved in r10.
|
* If stack=0, then the stack is already set in r1, and r1 is saved in r10.
|
||||||
* PPR save and CPU accounting is not done for the !stack case (XXX why not?)
|
* PPR save and CPU accounting is not done for the !stack case (XXX why not?)
|
||||||
*/
|
*/
|
||||||
.macro INT_COMMON vec, area, stack, kuap, reconcile, dar, dsisr
|
.macro GEN_COMMON name
|
||||||
.if \stack
|
.if ISTACK
|
||||||
andi. r10,r12,MSR_PR /* See if coming from user */
|
andi. r10,r12,MSR_PR /* See if coming from user */
|
||||||
mr r10,r1 /* Save r1 */
|
mr r10,r1 /* Save r1 */
|
||||||
subi r1,r1,INT_FRAME_SIZE /* alloc frame on kernel stack */
|
subi r1,r1,INT_FRAME_SIZE /* alloc frame on kernel stack */
|
||||||
@@ -609,54 +609,54 @@ END_FTR_SECTION_NESTED(CPU_FTR_HAS_PPR,CPU_FTR_HAS_PPR,948)
|
|||||||
std r0,GPR0(r1) /* save r0 in stackframe */
|
std r0,GPR0(r1) /* save r0 in stackframe */
|
||||||
std r10,GPR1(r1) /* save r1 in stackframe */
|
std r10,GPR1(r1) /* save r1 in stackframe */
|
||||||
|
|
||||||
.if \stack
|
.if ISTACK
|
||||||
.if \kuap
|
.if IKUAP
|
||||||
kuap_save_amr_and_lock r9, r10, cr1, cr0
|
kuap_save_amr_and_lock r9, r10, cr1, cr0
|
||||||
.endif
|
.endif
|
||||||
beq 101f /* if from kernel mode */
|
beq 101f /* if from kernel mode */
|
||||||
ACCOUNT_CPU_USER_ENTRY(r13, r9, r10)
|
ACCOUNT_CPU_USER_ENTRY(r13, r9, r10)
|
||||||
SAVE_PPR(\area, r9)
|
SAVE_PPR(IAREA, r9)
|
||||||
101:
|
101:
|
||||||
.else
|
.else
|
||||||
.if \kuap
|
.if IKUAP
|
||||||
kuap_save_amr_and_lock r9, r10, cr1
|
kuap_save_amr_and_lock r9, r10, cr1
|
||||||
.endif
|
.endif
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
/* Save original regs values from save area to stack frame. */
|
/* Save original regs values from save area to stack frame. */
|
||||||
ld r9,\area+EX_R9(r13) /* move r9, r10 to stackframe */
|
ld r9,IAREA+EX_R9(r13) /* move r9, r10 to stackframe */
|
||||||
ld r10,\area+EX_R10(r13)
|
ld r10,IAREA+EX_R10(r13)
|
||||||
std r9,GPR9(r1)
|
std r9,GPR9(r1)
|
||||||
std r10,GPR10(r1)
|
std r10,GPR10(r1)
|
||||||
ld r9,\area+EX_R11(r13) /* move r11 - r13 to stackframe */
|
ld r9,IAREA+EX_R11(r13) /* move r11 - r13 to stackframe */
|
||||||
ld r10,\area+EX_R12(r13)
|
ld r10,IAREA+EX_R12(r13)
|
||||||
ld r11,\area+EX_R13(r13)
|
ld r11,IAREA+EX_R13(r13)
|
||||||
std r9,GPR11(r1)
|
std r9,GPR11(r1)
|
||||||
std r10,GPR12(r1)
|
std r10,GPR12(r1)
|
||||||
std r11,GPR13(r1)
|
std r11,GPR13(r1)
|
||||||
.if \dar
|
.if IDAR
|
||||||
.if \dar == 2
|
.if IDAR == 2
|
||||||
ld r10,_NIP(r1)
|
ld r10,_NIP(r1)
|
||||||
.else
|
.else
|
||||||
ld r10,\area+EX_DAR(r13)
|
ld r10,IAREA+EX_DAR(r13)
|
||||||
.endif
|
.endif
|
||||||
std r10,_DAR(r1)
|
std r10,_DAR(r1)
|
||||||
.endif
|
.endif
|
||||||
.if \dsisr
|
.if IDSISR
|
||||||
.if \dsisr == 2
|
.if IDSISR == 2
|
||||||
ld r10,_MSR(r1)
|
ld r10,_MSR(r1)
|
||||||
lis r11,DSISR_SRR1_MATCH_64S@h
|
lis r11,DSISR_SRR1_MATCH_64S@h
|
||||||
and r10,r10,r11
|
and r10,r10,r11
|
||||||
.else
|
.else
|
||||||
lwz r10,\area+EX_DSISR(r13)
|
lwz r10,IAREA+EX_DSISR(r13)
|
||||||
.endif
|
.endif
|
||||||
std r10,_DSISR(r1)
|
std r10,_DSISR(r1)
|
||||||
.endif
|
.endif
|
||||||
BEGIN_FTR_SECTION_NESTED(66)
|
BEGIN_FTR_SECTION_NESTED(66)
|
||||||
ld r10,\area+EX_CFAR(r13)
|
ld r10,IAREA+EX_CFAR(r13)
|
||||||
std r10,ORIG_GPR3(r1)
|
std r10,ORIG_GPR3(r1)
|
||||||
END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66)
|
END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66)
|
||||||
GET_CTR(r10, \area)
|
GET_CTR(r10, IAREA)
|
||||||
std r10,_CTR(r1)
|
std r10,_CTR(r1)
|
||||||
std r2,GPR2(r1) /* save r2 in stackframe */
|
std r2,GPR2(r1) /* save r2 in stackframe */
|
||||||
SAVE_4GPRS(3, r1) /* save r3 - r6 in stackframe */
|
SAVE_4GPRS(3, r1) /* save r3 - r6 in stackframe */
|
||||||
@@ -668,26 +668,22 @@ END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66)
|
|||||||
mfspr r11,SPRN_XER /* save XER in stackframe */
|
mfspr r11,SPRN_XER /* save XER in stackframe */
|
||||||
std r10,SOFTE(r1)
|
std r10,SOFTE(r1)
|
||||||
std r11,_XER(r1)
|
std r11,_XER(r1)
|
||||||
li r9,(\vec)+1
|
li r9,(IVEC)+1
|
||||||
std r9,_TRAP(r1) /* set trap number */
|
std r9,_TRAP(r1) /* set trap number */
|
||||||
li r10,0
|
li r10,0
|
||||||
ld r11,exception_marker@toc(r2)
|
ld r11,exception_marker@toc(r2)
|
||||||
std r10,RESULT(r1) /* clear regs->result */
|
std r10,RESULT(r1) /* clear regs->result */
|
||||||
std r11,STACK_FRAME_OVERHEAD-16(r1) /* mark the frame */
|
std r11,STACK_FRAME_OVERHEAD-16(r1) /* mark the frame */
|
||||||
|
|
||||||
.if \stack
|
.if ISTACK
|
||||||
ACCOUNT_STOLEN_TIME
|
ACCOUNT_STOLEN_TIME
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if \reconcile
|
.if IRECONCILE
|
||||||
RECONCILE_IRQ_STATE(r10, r11)
|
RECONCILE_IRQ_STATE(r10, r11)
|
||||||
.endif
|
.endif
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro GEN_COMMON name
|
|
||||||
INT_COMMON IVEC, IAREA, ISTACK, IKUAP, IRECONCILE, IDAR, IDSISR
|
|
||||||
.endm
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Restore all registers including H/SRR0/1 saved in a stack frame of a
|
* Restore all registers including H/SRR0/1 saved in a stack frame of a
|
||||||
* standard exception.
|
* standard exception.
|
||||||
@@ -2387,7 +2383,8 @@ EXC_COMMON_BEGIN(soft_nmi_common)
|
|||||||
mr r10,r1
|
mr r10,r1
|
||||||
ld r1,PACAEMERGSP(r13)
|
ld r1,PACAEMERGSP(r13)
|
||||||
subi r1,r1,INT_FRAME_SIZE
|
subi r1,r1,INT_FRAME_SIZE
|
||||||
INT_COMMON 0x900, PACA_EXGEN, 0, 1, 1, 0, 0
|
__ISTACK(decrementer)=0
|
||||||
|
GEN_COMMON decrementer
|
||||||
bl save_nvgprs
|
bl save_nvgprs
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
bl soft_nmi_interrupt
|
bl soft_nmi_interrupt
|
||||||
|
Reference in New Issue
Block a user