summaryrefslogtreecommitdiffstats
path: root/sys/powerpc/aim
diff options
context:
space:
mode:
authorgrehan <grehan@FreeBSD.org>2005-12-23 13:05:27 +0000
committergrehan <grehan@FreeBSD.org>2005-12-23 13:05:27 +0000
commitb14a15198504a2347d4337c611b8d2bd71f86f2f (patch)
treeadae55e3d7e1d097e934d8bbd40da968892f9460 /sys/powerpc/aim
parentfc4af16293b1158c6a7e8c5bf02843d70eb5c751 (diff)
downloadFreeBSD-src-b14a15198504a2347d4337c611b8d2bd71f86f2f.zip
FreeBSD-src-b14a15198504a2347d4337c611b8d2bd71f86f2f.tar.gz
Mark the return address of the call to ast() in the generic trap
handling code so the stack trace unwinders don't start trying to go into user-space. Found by trying to create core dumps with a KTR_COMPILE/KTR_GEOM kernel, which results in a stack_save() call in the ast() coredump path - this created a panic, and then calling 'trace' in ddb resulted in the black screen of death after printing out most of the backtrace.
Diffstat (limited to 'sys/powerpc/aim')
-rw-r--r--sys/powerpc/aim/trap_subr.S2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/powerpc/aim/trap_subr.S b/sys/powerpc/aim/trap_subr.S
index c719917..06ed891 100644
--- a/sys/powerpc/aim/trap_subr.S
+++ b/sys/powerpc/aim/trap_subr.S
@@ -438,6 +438,8 @@ CNAME(trapexit):
isync
addi %r3,%r1,8
bl CNAME(ast)
+ .globl CNAME(asttrapexit) /* backtrace code sentinel #2 */
+CNAME(asttrapexit):
b trapexit /* test ast ret value ? */
1:
FRAME_LEAVE(PC_TEMPSAVE)
OpenPOWER on IntegriCloud