Fix traceback through interrupts. This isn't complete but at least it's
displaying useful output again: db{0}> bt cpu_Debugger(c1aa4800,c1aa8b1c,c1aa803c,1,c1aa48ec) at netbsd:cpu_Debugger+0x4 comintr(c1aa4800,cf38fc04,0,0,0) at netbsd:comintr+0x65c DDB lost frame for netbsd:Xintr_ioapic_edge4+0xa8, trying 0xcf413ff4 Xintr_ioapic_edge4() at netbsd:Xintr_ioapic_edge4+0xa8 --- interrupt --- --- switch to interrupt stack --- cpu_idle(cf421e00,cf421e00,0,c0264950,cf421e00) at netbsd:cpu_idle+0x30 idle_loop(cf421e00,0,c01002d2,fbff,c01002d2) at netbsd:idle_loop+0x7a
This commit is contained in:
parent
2e1a7ade3c
commit
c8a5b7d261
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: db_trace.c,v 1.56 2007/03/07 21:43:43 thorpej Exp $ */
|
||||
/* $NetBSD: db_trace.c,v 1.57 2007/08/05 19:27:45 ad Exp $ */
|
||||
|
||||
/*
|
||||
* Mach Operating System
|
||||
@ -27,7 +27,7 @@
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.56 2007/03/07 21:43:43 thorpej Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: db_trace.c,v 1.57 2007/08/05 19:27:45 ad Exp $");
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
@ -316,7 +316,12 @@ db_nextframe(
|
||||
break;
|
||||
case INTERRUPT:
|
||||
(*pr)("--- interrupt ---\n");
|
||||
tf = (struct trapframe *)argp;
|
||||
/*
|
||||
* Get intrframe address as saved when switching
|
||||
* to interrupt stack, and convert to trapframe
|
||||
* (add 4). See frame.h.
|
||||
*/
|
||||
tf = (struct trapframe *)(*(argp - 1) + 4);
|
||||
break;
|
||||
}
|
||||
*ip = (db_addr_t)tf->tf_eip;
|
||||
@ -385,7 +390,7 @@ db_stack_trace_print(db_expr_t addr, bool have_addr, db_expr_t count,
|
||||
int *retaddr, *arg0;
|
||||
int *argp;
|
||||
db_addr_t callpc;
|
||||
int is_trap;
|
||||
int is_trap = NONE;
|
||||
bool kernel_only = true;
|
||||
bool trace_thread = false;
|
||||
bool lwpaddr = false;
|
||||
|
Loading…
Reference in New Issue
Block a user