diff options
author | kib <kib@FreeBSD.org> | 2008-12-05 11:34:36 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2008-12-05 11:34:36 +0000 |
commit | d57e5b9d8b3abb250cd15d2e7d49be4668ad956a (patch) | |
tree | 59a36ad0b6a72cc5b464133910a2006f8128d67c | |
parent | 409a3b958d3b16d4c0d1484009dad362acc631b9 (diff) | |
download | FreeBSD-src-d57e5b9d8b3abb250cd15d2e7d49be4668ad956a.zip FreeBSD-src-d57e5b9d8b3abb250cd15d2e7d49be4668ad956a.tar.gz |
Improve db_backtrace() for compat ia32 on amd64. 32bit image enters
the kernel via Xint0x80_syscall().
Submitted by: dchagin
MFC after: 1 week
-rw-r--r-- | sys/amd64/amd64/db_trace.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/amd64/amd64/db_trace.c b/sys/amd64/amd64/db_trace.c index c4e552d..9676963 100644 --- a/sys/amd64/amd64/db_trace.c +++ b/sys/amd64/amd64/db_trace.c @@ -27,6 +27,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_compat.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/kdb.h> @@ -318,6 +320,10 @@ db_nextframe(struct amd64_frame **fp, db_addr_t *ip, struct thread *td) frame_type = INTERRUPT; else if (strcmp(name, "Xfast_syscall") == 0) frame_type = SYSCALL; +#ifdef COMPAT_IA32 + else if (strcmp(name, "Xint0x80_syscall") == 0) + frame_type = SYSCALL; +#endif /* XXX: These are interrupts with trap frames. */ else if (strcmp(name, "Xtimerint") == 0 || strcmp(name, "Xcpustop") == 0 || |