Module Name:    src
Committed By:   sborrill
Date:           Fri Feb  7 11:41:02 UTC 2014

Modified Files:
        src/sys/arch/i386/i386 [netbsd-6]: db_machdep.c
        src/sys/arch/x86/include [netbsd-6]: db_machdep.h

Log Message:
Pull up the following revisions(s) (requested by christos in ticket #1017):
        sys/arch/x86/include/db_machdep.h:      revision 1.4
        sys/arch/i386/i386/db_machdep.c:        revision 1.5

Fix ddb backtrace for softintr (i386).


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.16.1 src/sys/arch/i386/i386/db_machdep.c
cvs rdiff -u -r1.3 -r1.3.14.1 src/sys/arch/x86/include/db_machdep.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/i386/i386/db_machdep.c
diff -u src/sys/arch/i386/i386/db_machdep.c:1.3 src/sys/arch/i386/i386/db_machdep.c:1.3.16.1
--- src/sys/arch/i386/i386/db_machdep.c:1.3	Thu Apr 14 16:05:59 2011
+++ src/sys/arch/i386/i386/db_machdep.c	Fri Feb  7 11:41:02 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_machdep.c,v 1.3 2011/04/14 16:05:59 yamt Exp $	*/
+/*	$NetBSD: db_machdep.c,v 1.3.16.1 2014/02/07 11:41:02 sborrill Exp $	*/
 
 /* 
  * Mach Operating System
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.3 2011/04/14 16:05:59 yamt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_machdep.c,v 1.3.16.1 2014/02/07 11:41:02 sborrill Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -148,10 +148,12 @@ db_frame_info(long *frame, db_addr_t cal
 			    !strncmp(name, "Xstray", 6) ||
 			    !strncmp(name, "Xhold", 5) ||
 			    !strncmp(name, "Xrecurse", 8) ||
-			    !strcmp(name, "Xdoreti") ||
-			    !strncmp(name, "Xsoft", 5)) {
+			    !strcmp(name, "Xdoreti")) {
 				*is_trap = INTERRUPT;
 				narg = 0;
+			} else if (!strcmp(name, "Xsoftintr")) {
+				*is_trap = SOFTINTR;
+				narg = 0;
 			} else if (!strncmp(name, "Xtss_", 5)) {
 				*is_trap = INTERRUPT_TSS;
 				narg = 0;
@@ -173,10 +175,12 @@ db_frame_info(long *frame, db_addr_t cal
 			    !strncmp(name, "_Xstray", 7) ||
 			    !strncmp(name, "_Xhold", 6) ||
 			    !strncmp(name, "_Xrecurse", 9) ||
-			    !strcmp(name, "_Xdoreti") ||
-			    !strncmp(name, "_Xsoft", 6)) {
+			    !strcmp(name, "_Xdoreti")) {
 				*is_trap = INTERRUPT;
 				narg = 0;
+			} else if (!strcmp(name, "_Xsoftintr")) {
+				*is_trap = SOFTINTR;
+				narg = 0;
 			} else if (!strncmp(name, "_Xtss_", 6)) {
 				*is_trap = INTERRUPT_TSS;
 				narg = 0;
@@ -253,6 +257,7 @@ db_nextframe(
 	    case TRAP:
 	    case SYSCALL:
 	    case INTERRUPT:
+	    case SOFTINTR:
 	    default:
 		/* The only argument to trap() or syscall() is the trapframe. */
 		switch (is_trap) {
@@ -273,6 +278,11 @@ db_nextframe(
 			 */
 			db_read_bytes((db_addr_t)argp, sizeof(tf), (char *)&tf);
 			break;
+		case SOFTINTR:
+			(*pr)("--- softint ---\n");
+			tf.tf_eip = 0;
+			tf.tf_ebp = 0;
+			break;
 		}
 		*ip = (db_addr_t)tf.tf_eip;
 		fp = (struct i386_frame *)tf.tf_ebp;

Index: src/sys/arch/x86/include/db_machdep.h
diff -u src/sys/arch/x86/include/db_machdep.h:1.3 src/sys/arch/x86/include/db_machdep.h:1.3.14.1
--- src/sys/arch/x86/include/db_machdep.h:1.3	Sat Apr 30 16:58:35 2011
+++ src/sys/arch/x86/include/db_machdep.h	Fri Feb  7 11:41:02 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_machdep.h,v 1.3 2011/04/30 16:58:35 christos Exp $	*/
+/*	$NetBSD: db_machdep.h,v 1.3.14.1 2014/02/07 11:41:02 sborrill Exp $	*/
 
 #ifndef _X86_DB_MACHDEP_H_
 #define _X86_DB_MACHDEP_H_
@@ -11,6 +11,7 @@
 #define INTERRUPT	3
 #define INTERRUPT_TSS	4
 #define TRAP_TSS	5
+#define SOFTINTR	6
 
 #define MAXNARG		16
 

Reply via email to