Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/arch/powerpc/ibm4xx PR port-powerpc/51367: kernel panic ...
details: https://anonhg.NetBSD.org/src/rev/61c08bceb8b6
branches: trunk
changeset: 349929:61c08bceb8b6
user: rin <rin%NetBSD.org@localhost>
date: Wed Dec 28 09:36:02 2016 +0000
description:
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.
diffstat:
sys/arch/powerpc/ibm4xx/trap_subr.S | 29 +++--------------------------
1 files changed, 3 insertions(+), 26 deletions(-)
diffs (54 lines):
diff -r 53ac5c29b171 -r 61c08bceb8b6 sys/arch/powerpc/ibm4xx/trap_subr.S
--- a/sys/arch/powerpc/ibm4xx/trap_subr.S Wed Dec 28 09:29:35 2016 +0000
+++ b/sys/arch/powerpc/ibm4xx/trap_subr.S Wed Dec 28 09:36:02 2016 +0000
@@ -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 @@
/*
* 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 @@
/*
* 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 */
Home |
Main Index |
Thread Index |
Old Index