Commit 7cb3a1a0 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

powerpc/64s/exception: Add GEN_COMMON macro that uses INT_DEFINE parameters

parent a42a239d
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -206,6 +206,9 @@ END_FTR_SECTION_NESTED(ftr,ftr,943)
#define IMASK		.L_IMASK_\name\()
#define IKVM_REAL	.L_IKVM_REAL_\name\()
#define IKVM_VIRT	.L_IKVM_VIRT_\name\()
#define ISTACK		.L_ISTACK_\name\()
#define IRECONCILE	.L_IRECONCILE_\name\()
#define IKUAP		.L_IKUAP_\name\()

#define INT_DEFINE_BEGIN(n)						\
.macro int_define_ ## n name
@@ -246,6 +249,15 @@ do_define_int n
	.ifndef IKVM_VIRT
		IKVM_VIRT=0
	.endif
	.ifndef ISTACK
		ISTACK=1
	.endif
	.ifndef IRECONCILE
		IRECONCILE=1
	.endif
	.ifndef IKUAP
		IKUAP=1
	.endif
.endm

.macro INT_KVM_HANDLER name, vec, hsrr, area, skip
@@ -670,6 +682,10 @@ END_FTR_SECTION_NESTED(CPU_FTR_CFAR, CPU_FTR_CFAR, 66)
	.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.
@@ -1221,13 +1237,7 @@ EXC_VIRT_BEGIN(data_access, 0x4300, 0x80)
EXC_VIRT_END(data_access, 0x4300, 0x80)
INT_KVM_HANDLER data_access, 0x300, EXC_STD, PACA_EXGEN, 1
EXC_COMMON_BEGIN(data_access_common)
	/*
	 * Here r13 points to the paca, r9 contains the saved CR,
	 * SRR0 and SRR1 are saved in r11 and r12,
	 * r9 - r13 are saved in paca->exgen.
	 * EX_DAR and EX_DSISR have saved DAR/DSISR
	 */
	INT_COMMON 0x300, PACA_EXGEN, 1, 1, 1, 1, 1
	GEN_COMMON data_access
	ld	r4,_DAR(r1)
	ld	r5,_DSISR(r1)
BEGIN_MMU_FTR_SECTION