Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce54152f authored by Aneesh Kumar K.V's avatar Aneesh Kumar K.V Committed by Benjamin Herrenschmidt
Browse files

powerpc: Save DAR and DSISR in pt_regs on MCE



We were not saving DAR and DSISR on MCE. Save then and also print the values
along with exception details in xmon.

Acked-by: default avatarPaul Mackerras <paulus@samba.org>
Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 4b8f63d9
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -693,9 +693,18 @@ slb_miss_user_pseries:
	.align	7
	.align	7
	.globl machine_check_common
	.globl machine_check_common
machine_check_common:
machine_check_common:

	mfspr	r10,SPRN_DAR
	std	r10,PACA_EXGEN+EX_DAR(r13)
	mfspr	r10,SPRN_DSISR
	stw	r10,PACA_EXGEN+EX_DSISR(r13)
	EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC)
	EXCEPTION_PROLOG_COMMON(0x200, PACA_EXMC)
	FINISH_NAP
	FINISH_NAP
	DISABLE_INTS
	DISABLE_INTS
	ld	r3,PACA_EXGEN+EX_DAR(r13)
	lwz	r4,PACA_EXGEN+EX_DSISR(r13)
	std	r3,_DAR(r1)
	std	r4,_DSISR(r1)
	bl	.save_nvgprs
	bl	.save_nvgprs
	addi	r3,r1,STACK_FRAME_OVERHEAD
	addi	r3,r1,STACK_FRAME_OVERHEAD
	bl	.machine_check_exception
	bl	.machine_check_exception
+1 −1
Original line number Original line Diff line number Diff line
@@ -1430,7 +1430,7 @@ static void excprint(struct pt_regs *fp)
	printf("    sp: %lx\n", fp->gpr[1]);
	printf("    sp: %lx\n", fp->gpr[1]);
	printf("   msr: %lx\n", fp->msr);
	printf("   msr: %lx\n", fp->msr);


	if (trap == 0x300 || trap == 0x380 || trap == 0x600) {
	if (trap == 0x300 || trap == 0x380 || trap == 0x600 || trap == 0x200) {
		printf("   dar: %lx\n", fp->dar);
		printf("   dar: %lx\n", fp->dar);
		if (trap != 0x380)
		if (trap != 0x380)
			printf(" dsisr: %lx\n", fp->dsisr);
			printf(" dsisr: %lx\n", fp->dsisr);