Commit 6d71759a authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

powerpc/64s/exception: Remove old INT_COMMON macro

parent fc589ee4
Loading
Loading
Loading
Loading
+24 −27
Original line number Diff line number Diff line
@@ -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.
 * 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
	.if \stack
.macro GEN_COMMON name
	.if ISTACK
	andi.	r10,r12,MSR_PR		/* See if coming from user	*/
	mr	r10,r1			/* Save r1			*/
	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	r10,GPR1(r1)		/* save r1 in stackframe	*/

	.if \stack
	.if \kuap
	.if ISTACK
	.if IKUAP
	kuap_save_amr_and_lock r9, r10, cr1, cr0
	.endif
	beq	101f			/* if from kernel mode		*/
	ACCOUNT_CPU_USER_ENTRY(r13, r9, r10)
	SAVE_PPR(\area, r9)
	SAVE_PPR(IAREA, r9)
101:
	.else
	.if \kuap
	.if IKUAP
	kuap_save_amr_and_lock r9, r10, cr1
	.endif
	.endif

	/* 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)
	ld	r9,IAREA+EX_R9(r13)	/* move r9, r10 to stackframe	*/
	ld	r10,IAREA+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)
	ld	r9,IAREA+EX_R11(r13)	/* move r11 - r13 to stackframe	*/
	ld	r10,IAREA+EX_R12(r13)
	ld	r11,IAREA+EX_R13(r13)
	std	r9,GPR11(r1)
	std	r10,GPR12(r1)
	std	r11,GPR13(r1)
	.if \dar
	.if \dar == 2
	.if IDAR
	.if IDAR == 2
	ld	r10,_NIP(r1)
	.else
	ld	r10,\area+EX_DAR(r13)
	ld	r10,IAREA+EX_DAR(r13)
	.endif
	std	r10,_DAR(r1)
	.endif
	.if \dsisr
	.if \dsisr == 2
	.if IDSISR
	.if IDSISR == 2
	ld	r10,_MSR(r1)
	lis	r11,DSISR_SRR1_MATCH_64S@h
	and	r10,r10,r11
	.else
	lwz	r10,\area+EX_DSISR(r13)
	lwz	r10,IAREA+EX_DSISR(r13)
	.endif
	std	r10,_DSISR(r1)
	.endif
BEGIN_FTR_SECTION_NESTED(66)
	ld	r10,\area+EX_CFAR(r13)
	ld	r10,IAREA+EX_CFAR(r13)
	std	r10,ORIG_GPR3(r1)
END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66)
	GET_CTR(r10, \area)
	GET_CTR(r10, IAREA)
	std	r10,_CTR(r1)
	std	r2,GPR2(r1)		/* save r2 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	*/
	std	r10,SOFTE(r1)
	std	r11,_XER(r1)
	li	r9,(\vec)+1
	li	r9,(IVEC)+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
	.if ISTACK
	ACCOUNT_STOLEN_TIME
	.endif

	.if \reconcile
	.if IRECONCILE
	RECONCILE_IRQ_STATE(r10, r11)
	.endif
.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
 * standard exception.
@@ -2387,7 +2383,8 @@ EXC_COMMON_BEGIN(soft_nmi_common)
	mr	r10,r1
	ld	r1,PACAEMERGSP(r13)
	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
	addi	r3,r1,STACK_FRAME_OVERHEAD
	bl	soft_nmi_interrupt