Module Name: src
Committed By: rin
Date: Wed Dec 28 09:36:02 UTC 2016
Modified Files:
src/sys/arch/powerpc/ibm4xx: trap_subr.S
Log Message:
PR port-powerpc/51367: kernel panic for powerpc/ibm4xx with "option DDB"
Stop using ddbstk/ipkdbstk to make nested traps possible, which avoids
kernel panics reported in the PR.
Suggested and approved by matt.
To generate a diff of this commit:
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/powerpc/ibm4xx/trap_subr.S
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/powerpc/ibm4xx/trap_subr.S
diff -u src/sys/arch/powerpc/ibm4xx/trap_subr.S:1.25 src/sys/arch/powerpc/ibm4xx/trap_subr.S:1.26
--- src/sys/arch/powerpc/ibm4xx/trap_subr.S:1.25 Mon Dec 26 20:28:00 2016
+++ src/sys/arch/powerpc/ibm4xx/trap_subr.S Wed Dec 28 09:36:02 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: trap_subr.S,v 1.25 2016/12/26 20:28:00 rin Exp $ */
+/* $NetBSD: trap_subr.S,v 1.26 2016/12/28 09:36:02 rin Exp $ */
/*
* Copyright 2001 Wasabi Systems, Inc.
@@ -191,20 +191,9 @@ _C_LABEL(extsize) = .-_C_LABEL(extint)
/*
* In case of DDB we want a separate trap catcher for it
*/
- .lcomm ddbstk,INTSTK,16 /* ddb stack */
-
.globl _C_LABEL(ddblow),_C_LABEL(ddbsize)
_C_LABEL(ddblow):
- mtsprg1 %r1 /* save SP */
- GET_CPUINFO(%r1)
- stmw %r28,CI_DDBSAVE(%r1) /* free r28-r31 */
- mflr %r28 /* save LR */
- mfcr %r29 /* save CR */
- mfsrr0 %r30
- mfsrr1 %r31
- stmw %r30,(CI_DDBSAVE+CPUSAVE_SRR0)(%r1) /* save srr0/srr1 */
- lis %r1,ddbstk+INTSTK-CALLFRAMELEN@ha /* get new SP */
- addi %r1,%r1,ddbstk+INTSTK-CALLFRAMELEN@l
+ ACCESS_PROLOG(CI_DDBSAVE)
bla ddbtrap
_C_LABEL(ddbsize) = .-_C_LABEL(ddblow)
#endif /* DDB || KGDB */
@@ -213,21 +202,9 @@ _C_LABEL(ddbsize) = .-_C_LABEL(ddblow)
/*
* In case of IPKDB we want a separate trap catcher for it
*/
-
- .lcomm ipkdbstk,INTSTK,16 /* ipkdb stack */
-
.globl _C_LABEL(ipkdblow),_C_LABEL(ipkdbsize)
_C_LABEL(ipkdblow):
- mtsprg1 %r1 /* save SP */
- GET_CPUINFO(%r1)
- stmw %r28,CI_IPKDBSAVE(%r1) /* free r28-r31 */
- mflr %r28 /* save LR */
- mfcr %r29 /* save CR */
- mfsrr0 %r30
- mfsrr1 %r31
- stmw %r30,(CI_IPKDBSAVE+CPUSAVE_SRR0)(%r1) /* save srr0/srr1 */
- lis %r1,ipkdbstk+INTSTK-CALLFRAMELEN@ha /* get new SP */
- addi %r1,%r1,ipkdbstk+INTSTK-CALLFRAMELEN@l
+ ACCESS_PROLOG(CI_IPKDBSAVE)
bla ipkdbtrap
_C_LABEL(ipkdbsize) = .-_C_LABEL(ipkdblow)
#endif /* IPKDB */