diff options
author | grehan <grehan@FreeBSD.org> | 2005-12-23 13:05:27 +0000 |
---|---|---|
committer | grehan <grehan@FreeBSD.org> | 2005-12-23 13:05:27 +0000 |
commit | b14a15198504a2347d4337c611b8d2bd71f86f2f (patch) | |
tree | adae55e3d7e1d097e934d8bbd40da968892f9460 /sys/powerpc/aim | |
parent | fc4af16293b1158c6a7e8c5bf02843d70eb5c751 (diff) | |
download | FreeBSD-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.S | 2 |
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) |