summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2008-12-05 11:34:36 +0000
committerkib <kib@FreeBSD.org>2008-12-05 11:34:36 +0000
commitd57e5b9d8b3abb250cd15d2e7d49be4668ad956a (patch)
tree59a36ad0b6a72cc5b464133910a2006f8128d67c
parent409a3b958d3b16d4c0d1484009dad362acc631b9 (diff)
downloadFreeBSD-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.c6
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 ||
OpenPOWER on IntegriCloud