Module Name:    src
Committed By:   dyoung
Date:           Sun Apr  3 22:29:28 UTC 2011

Modified Files:
        src/sys/arch/amd64/amd64: db_interface.c kgdb_machdep.c trap.c
        src/sys/arch/amd64/conf: files.amd64
        src/sys/arch/i386/i386: db_interface.c kgdb_machdep.c trap.c
        src/sys/arch/i386/include: mca_machdep.h
        src/sys/arch/i386/mca: mca_machdep.c
        src/sys/arch/x86/include: intr.h
        src/sys/arch/x86/x86: intr.c
        src/sys/arch/xen/conf: files.xen
        src/sys/kern: kgdb_stub.c
        src/sys/sys: kgdb.h
Added Files:
        src/sys/arch/x86/x86: x86_stub.c

Log Message:
Clean up excessive #ifdef'age of NMI trap handling for amd64/i386/xen.
Handle NMI in all Xen kernels.


To generate a diff of this commit:
cvs rdiff -u -r1.22 -r1.23 src/sys/arch/amd64/amd64/db_interface.c
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/amd64/amd64/kgdb_machdep.c
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/amd64/amd64/trap.c
cvs rdiff -u -r1.69 -r1.70 src/sys/arch/amd64/conf/files.amd64
cvs rdiff -u -r1.65 -r1.66 src/sys/arch/i386/i386/db_interface.c
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/i386/i386/kgdb_machdep.c
cvs rdiff -u -r1.260 -r1.261 src/sys/arch/i386/i386/trap.c
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/i386/include/mca_machdep.h
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/i386/mca/mca_machdep.c
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/x86/include/intr.h
cvs rdiff -u -r1.70 -r1.71 src/sys/arch/x86/x86/intr.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/x86/x86/x86_stub.c
cvs rdiff -u -r1.113 -r1.114 src/sys/arch/xen/conf/files.xen
cvs rdiff -u -r1.23 -r1.24 src/sys/kern/kgdb_stub.c
cvs rdiff -u -r1.11 -r1.12 src/sys/sys/kgdb.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/amd64/amd64/db_interface.c
diff -u src/sys/arch/amd64/amd64/db_interface.c:1.22 src/sys/arch/amd64/amd64/db_interface.c:1.23
--- src/sys/arch/amd64/amd64/db_interface.c:1.22	Mon Dec 20 00:25:24 2010
+++ src/sys/arch/amd64/amd64/db_interface.c	Sun Apr  3 22:29:25 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_interface.c,v 1.22 2010/12/20 00:25:24 matt Exp $	*/
+/*	$NetBSD: db_interface.c,v 1.23 2011/04/03 22:29:25 dyoung Exp $	*/
 
 /*
  * Mach Operating System
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.22 2010/12/20 00:25:24 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.23 2011/04/03 22:29:25 dyoung Exp $");
 
 #include "opt_ddb.h"
 #include "opt_multiprocessor.h"
@@ -173,9 +173,11 @@
 	db_regs_t dbreg;
 
 	switch (type) {
+	case T_NMI:	/* NMI */
+		printf("NMI ... going to debugger\n");
+		/*FALLTHROUGH*/
 	case T_BPTFLT:	/* breakpoint */
 	case T_TRCTRAP:	/* single_step */
-	case T_NMI:	/* NMI */
 	case -1:	/* keyboard interrupt */
 		break;
 	default:

Index: src/sys/arch/amd64/amd64/kgdb_machdep.c
diff -u src/sys/arch/amd64/amd64/kgdb_machdep.c:1.7 src/sys/arch/amd64/amd64/kgdb_machdep.c:1.8
--- src/sys/arch/amd64/amd64/kgdb_machdep.c:1.7	Mon Dec 20 00:25:24 2010
+++ src/sys/arch/amd64/amd64/kgdb_machdep.c	Sun Apr  3 22:29:25 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kgdb_machdep.c,v 1.7 2010/12/20 00:25:24 matt Exp $	*/
+/*	$NetBSD: kgdb_machdep.c,v 1.8 2011/04/03 22:29:25 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kgdb_machdep.c,v 1.7 2010/12/20 00:25:24 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kgdb_machdep.c,v 1.8 2011/04/03 22:29:25 dyoung Exp $");
 
 #include "opt_ddb.h"
 
@@ -99,6 +99,13 @@
 	return (1);
 }
 
+void
+kgdb_entry_notice(int type, db_regs_t *regs)
+{
+	if (type == T_NMI)
+		printf("NMI ... going to debugger\n");
+}
+
 /*
  * Translate a trap number into a unix compatible signal value.
  * (gdb only understands unix signal numbers).

Index: src/sys/arch/amd64/amd64/trap.c
diff -u src/sys/arch/amd64/amd64/trap.c:1.65 src/sys/arch/amd64/amd64/trap.c:1.66
--- src/sys/arch/amd64/amd64/trap.c:1.65	Mon Dec 20 00:25:24 2010
+++ src/sys/arch/amd64/amd64/trap.c	Sun Apr  3 22:29:25 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.65 2010/12/20 00:25:24 matt Exp $	*/
+/*	$NetBSD: trap.c,v 1.66 2011/04/03 22:29:25 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.65 2010/12/20 00:25:24 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.66 2011/04/03 22:29:25 dyoung Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -98,9 +98,7 @@
 #include <machine/reg.h>
 #include <machine/trap.h>
 #include <machine/userret.h>
-#ifdef DDB
 #include <machine/db_machdep.h>
-#endif
 
 #include <x86/nmi.h>
 
@@ -108,9 +106,7 @@
 #include "isa.h"
 #endif
 
-#ifdef KGDB
 #include <sys/kgdb.h>
-#endif
 
 #ifdef KDTRACE_HOOKS
 #include <sys/dtrace_bsd.h>
@@ -283,24 +279,17 @@
 		       " %lx cpl %x rsp %lx\n",
 		    type, frame->tf_err, (u_long)frame->tf_rip, frame->tf_cs,
 		    frame->tf_rflags, rcr2(), curcpu()->ci_ilevel, frame->tf_rsp);
-#ifdef DDB
 		if (kdb_trap(type, 0, frame))
 			return;
-#endif
-#ifdef KGDB
 		if (kgdb_trap(type, frame))
 			return;
-		else {
-			/*
-			 * If this is a breakpoint, don't panic
-			 * if we're not connected.
-			 */
-			if (type == T_BPTFLT) {
-				printf("kgdb: ignored %s\n", trap_type[type]);
-				return;
-			}
+		/*
+		 * If this is a breakpoint, don't panic if we're not connected.
+		 */
+		if (type == T_BPTFLT && kgdb_disconnected()) {
+			printf("kgdb: ignored %s\n", trap_type[type]);
+			return;
 		}
-#endif
 		panic("trap");
 		/*NOTREACHED*/
 
@@ -675,32 +664,17 @@
 		break;
 
 	case T_NMI:
-#if !defined(XEN)
 		if (nmi_dispatch(frame))
 			return;
-#endif /* !defined(XEN) */
-#if	NISA > 0
-#if defined(KGDB) || defined(DDB)
 		/* NMI can be hooked up to a pushbutton for debugging */
-		printf ("NMI ... going to debugger\n");
-#ifdef KGDB
-
 		if (kgdb_trap(type, frame))
 			return;
-#endif
-#ifdef DDB
 		if (kdb_trap(type, 0, frame))
 			return;
-#endif
-#endif /* KGDB || DDB */
 		/* machine/parity/power fail/"kitchen sink" faults */
 
-		if (x86_nmi() != 0)
-			goto we_re_toast;
-		else
-			return;
-#endif /* NISA > 0 */
-		;	/* avoid a label at end of compound statement */
+		x86_nmi();
+		return;
 	}
 
 	if ((type & T_USER) == 0)

Index: src/sys/arch/amd64/conf/files.amd64
diff -u src/sys/arch/amd64/conf/files.amd64:1.69 src/sys/arch/amd64/conf/files.amd64:1.70
--- src/sys/arch/amd64/conf/files.amd64:1.69	Thu Jul  8 11:24:59 2010
+++ src/sys/arch/amd64/conf/files.amd64	Sun Apr  3 22:29:26 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: files.amd64,v 1.69 2010/07/08 11:24:59 rmind Exp $
+#	$NetBSD: files.amd64,v 1.70 2011/04/03 22:29:26 dyoung Exp $
 #
 # new style config file for amd64 architecture
 #
@@ -111,6 +111,9 @@
 # TSC timecounter support
 file	arch/x86/x86/tsc.c
 
+# Stubs for x86 routines not included in the system
+file	arch/x86/x86/x86_stub.c
+
 # attribute used to represent the "keyboard controller"
 # XXX should be a real device
 define	pckbcport { [irq = -1], [port = -1] }

Index: src/sys/arch/i386/i386/db_interface.c
diff -u src/sys/arch/i386/i386/db_interface.c:1.65 src/sys/arch/i386/i386/db_interface.c:1.66
--- src/sys/arch/i386/i386/db_interface.c:1.65	Wed Jun  9 02:48:52 2010
+++ src/sys/arch/i386/i386/db_interface.c	Sun Apr  3 22:29:26 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: db_interface.c,v 1.65 2010/06/09 02:48:52 mrg Exp $	*/
+/*	$NetBSD: db_interface.c,v 1.66 2011/04/03 22:29:26 dyoung Exp $	*/
 
 /*
  * Mach Operating System
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.65 2010/06/09 02:48:52 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: db_interface.c,v 1.66 2011/04/03 22:29:26 dyoung Exp $");
 
 #include "opt_ddb.h"
 #include "opt_multiprocessor.h"
@@ -182,9 +182,11 @@
 	regs->tf_err &= ~TC_FLAGMASK;
 
 	switch (type) {
+	case T_NMI:	/* NMI */
+		printf("NMI ... going to debugger\n");
+		/*FALLTHROUGH*/
 	case T_BPTFLT:	/* breakpoint */
 	case T_TRCTRAP:	/* single_step */
-	case T_NMI:	/* NMI */
 	case -1:	/* keyboard interrupt */
 		break;
 	default:

Index: src/sys/arch/i386/i386/kgdb_machdep.c
diff -u src/sys/arch/i386/i386/kgdb_machdep.c:1.21 src/sys/arch/i386/i386/kgdb_machdep.c:1.22
--- src/sys/arch/i386/i386/kgdb_machdep.c:1.21	Sun Oct 18 18:14:00 2009
+++ src/sys/arch/i386/i386/kgdb_machdep.c	Sun Apr  3 22:29:26 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kgdb_machdep.c,v 1.21 2009/10/18 18:14:00 snj Exp $	*/
+/*	$NetBSD: kgdb_machdep.c,v 1.22 2011/04/03 22:29:26 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -56,7 +56,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kgdb_machdep.c,v 1.21 2009/10/18 18:14:00 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kgdb_machdep.c,v 1.22 2011/04/03 22:29:26 dyoung Exp $");
 
 #include "opt_ddb.h"
 
@@ -105,6 +105,13 @@
 	return (1);
 }
 
+void
+kgdb_entry_notice(int type, db_regs_t *regs)
+{
+	if (type == T_NMI)
+		printf("NMI ... going to debugger\n");
+}
+
 /*
  * Translate a trap number into a unix compatible signal value.
  * (gdb only understands unix signal numbers).

Index: src/sys/arch/i386/i386/trap.c
diff -u src/sys/arch/i386/i386/trap.c:1.260 src/sys/arch/i386/i386/trap.c:1.261
--- src/sys/arch/i386/i386/trap.c:1.260	Mon Dec 20 00:25:35 2010
+++ src/sys/arch/i386/i386/trap.c	Sun Apr  3 22:29:26 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.260 2010/12/20 00:25:35 matt Exp $	*/
+/*	$NetBSD: trap.c,v 1.261 2011/04/03 22:29:26 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2000, 2005, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.260 2010/12/20 00:25:35 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: trap.c,v 1.261 2011/04/03 22:29:26 dyoung Exp $");
 
 #include "opt_ddb.h"
 #include "opt_kgdb.h"
@@ -102,22 +102,16 @@
 #include <machine/reg.h>
 #include <machine/trap.h>
 #include <machine/userret.h>
-#ifdef DDB
 #include <machine/db_machdep.h>
-#endif
 
 #include "mca.h"
-#if NMCA > 0
 #include <machine/mca_machdep.h>
-#endif
 
 #include <x86/nmi.h>
 
 #include "isa.h"
 
-#ifdef KGDB
 #include <sys/kgdb.h>
-#endif
 
 #include "npx.h"
 
@@ -388,24 +382,17 @@
 			check_dr0();
 		else
 			trap_print(type, frame);
-#ifdef DDB
 		if (kdb_trap(type, 0, frame))
 			return;
-#endif
-#ifdef KGDB
 		if (kgdb_trap(type, frame))
 			return;
-		else {
-			/*
-			 * If this is a breakpoint, don't panic
-			 * if we're not connected.
-			 */
-			if (type == T_BPTFLT) {
-				printf("kgdb: ignored %s\n", trap_type[type]);
-				return;
-			}
+		/*
+		 * If this is a breakpoint, don't panic if we're not connected.
+		 */
+		if (type == T_BPTFLT && kgdb_disconnected()) {
+			printf("kgdb: ignored %s\n", trap_type[type]);
+			return;
 		}
-#endif
 		panic("trap");
 		/*NOTREACHED*/
 
@@ -806,40 +793,16 @@
 		break;
 
 	case T_NMI:
-#if !defined(XEN)
 		if (nmi_dispatch(frame))
 			return;
-#if (NISA > 0 || NMCA > 0)
-#if defined(KGDB) || defined(DDB)
 		/* NMI can be hooked up to a pushbutton for debugging */
-		printf ("NMI ... going to debugger\n");
-#ifdef KGDB
-
 		if (kgdb_trap(type, frame))
 			return;
-#endif
-#ifdef DDB
 		if (kdb_trap(type, 0, frame))
 			return;
-#endif
-#endif /* KGDB || DDB */
 		/* machine/parity/power fail/"kitchen sink" faults */
-
-#if NMCA > 0
-		/* mca_nmi() takes care to call x86_nmi() if appropriate */
-		if (mca_nmi() != 0)
-			goto we_re_toast;
-		else
-			return;
-#else /* NISA > 0 */
-		if (x86_nmi() != 0)
-			goto we_re_toast;
-		else
-			return;
-#endif /* NMCA > 0 */
-#endif /* (NISA > 0 || NMCA > 0) */
-#endif /* !defined(XEN) */
-		;	/* avoid a label at end of compound statement */
+		mca_nmi();
+		x86_nmi();
 	}
 
 	if ((type & T_USER) == 0)

Index: src/sys/arch/i386/include/mca_machdep.h
diff -u src/sys/arch/i386/include/mca_machdep.h:1.13 src/sys/arch/i386/include/mca_machdep.h:1.14
--- src/sys/arch/i386/include/mca_machdep.h:1.13	Mon May  4 12:19:29 2009
+++ src/sys/arch/i386/include/mca_machdep.h	Sun Apr  3 22:29:26 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: mca_machdep.h,v 1.13 2009/05/04 12:19:29 cegger Exp $	*/
+/*	$NetBSD: mca_machdep.h,v 1.14 2011/04/03 22:29:26 dyoung Exp $	*/
 
 /*
  * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
@@ -42,7 +42,7 @@
 /* set to 1 if MCA bus is detected */
 extern int MCA_system;
 
-int	mca_nmi(void);
+void	mca_nmi(void);
 
 /*
  * Types provided to machine-independent MCA code.

Index: src/sys/arch/i386/mca/mca_machdep.c
diff -u src/sys/arch/i386/mca/mca_machdep.c:1.39 src/sys/arch/i386/mca/mca_machdep.c:1.40
--- src/sys/arch/i386/mca/mca_machdep.c:1.39	Tue Mar 23 21:18:23 2010
+++ src/sys/arch/i386/mca/mca_machdep.c	Sun Apr  3 22:29:27 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: mca_machdep.c,v 1.39 2010/03/23 21:18:23 dyoung Exp $	*/
+/*	$NetBSD: mca_machdep.c,v 1.40 2011/04/03 22:29:27 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 2000, 2001 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mca_machdep.c,v 1.39 2010/03/23 21:18:23 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mca_machdep.c,v 1.40 2011/04/03 22:29:27 dyoung Exp $");
 
 #include <sys/types.h>
 #include <sys/param.h>
@@ -236,7 +236,7 @@
  * Handle a NMI.
  * return true to panic system, false to ignore.
  */
-int
+void
 mca_nmi(void)
 {
 	/*
@@ -272,9 +272,8 @@
    out:
 	if (!mcanmi) {
 		/* no CHCK bits asserted, assume ISA NMI */
-		return (x86_nmi());
-	} else
-		return(0);
+		x86_nmi();
+	}
 }
 
 /*

Index: src/sys/arch/x86/include/intr.h
diff -u src/sys/arch/x86/include/intr.h:1.41 src/sys/arch/x86/include/intr.h:1.42
--- src/sys/arch/x86/include/intr.h:1.41	Sun May  2 18:03:31 2010
+++ src/sys/arch/x86/include/intr.h	Sun Apr  3 22:29:27 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.h,v 1.41 2010/05/02 18:03:31 plunky Exp $	*/
+/*	$NetBSD: intr.h,v 1.42 2011/04/03 22:29:27 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 1998, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -171,7 +171,7 @@
 struct pcibus_attach_args;
 
 void intr_default_setup(void);
-int x86_nmi(void);
+void x86_nmi(void);
 void *intr_establish(int, struct pic *, int, int, int, int (*)(void *), void *, bool);
 void intr_disestablish(struct intrhand *);
 void intr_add_pcibus(struct pcibus_attach_args *);

Index: src/sys/arch/x86/x86/intr.c
diff -u src/sys/arch/x86/x86/intr.c:1.70 src/sys/arch/x86/x86/intr.c:1.71
--- src/sys/arch/x86/x86/intr.c:1.70	Sat Jan 22 14:01:27 2011
+++ src/sys/arch/x86/x86/intr.c	Sun Apr  3 22:29:27 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.c,v 1.70 2011/01/22 14:01:27 tsutsui Exp $	*/
+/*	$NetBSD: intr.c,v 1.71 2011/04/03 22:29:27 dyoung Exp $	*/
 
 /*-
  * Copyright (c) 2007, 2008, 2009 The NetBSD Foundation, Inc.
@@ -133,7 +133,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.70 2011/01/22 14:01:27 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.71 2011/04/03 22:29:27 dyoung Exp $");
 
 #include "opt_intrdebug.h"
 #include "opt_multiprocessor.h"
@@ -222,12 +222,11 @@
  * Handle a NMI, possibly a machine check.
  * return true to panic system, false to ignore.
  */
-int
+void
 x86_nmi(void)
 {
 
 	log(LOG_CRIT, "NMI port 61 %x, port 70 %x\n", inb(0x61), inb(0x70));
-	return(0);
 }
 
 /*

Index: src/sys/arch/xen/conf/files.xen
diff -u src/sys/arch/xen/conf/files.xen:1.113 src/sys/arch/xen/conf/files.xen:1.114
--- src/sys/arch/xen/conf/files.xen:1.113	Thu Feb 24 10:56:03 2011
+++ src/sys/arch/xen/conf/files.xen	Sun Apr  3 22:29:27 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: files.xen,v 1.113 2011/02/24 10:56:03 jruoho Exp $
+#	$NetBSD: files.xen,v 1.114 2011/04/03 22:29:27 dyoung Exp $
 #	NetBSD: files.x86,v 1.10 2003/10/08 17:30:00 bouyer Exp 
 #	NetBSD: files.i386,v 1.254 2004/03/25 23:32:10 jmc Exp 
 
@@ -255,6 +255,9 @@
 file	arch/x86/x86/acpi_machdep.c	acpi
 file	arch/x86/x86/i8259.c
 
+# Stubs for x86 routines not included in the system
+file	arch/x86/x86/x86_stub.c
+
 # MP configuration using Intel SMP specification 1.4
 file	arch/x86/x86/mpbios.c		mpbios
 
@@ -265,6 +268,7 @@
 file	arch/x86/pci/pci_addr_fixup.c	pci_addr_fixup
 
 file	arch/x86/x86/apic.c		ioapic
+file	arch/x86/x86/nmi.c
 
 device ioapic
 attach ioapic at ioapicbus

Index: src/sys/kern/kgdb_stub.c
diff -u src/sys/kern/kgdb_stub.c:1.23 src/sys/kern/kgdb_stub.c:1.24
--- src/sys/kern/kgdb_stub.c:1.23	Sun Jan 11 10:20:53 2009
+++ src/sys/kern/kgdb_stub.c	Sun Apr  3 22:29:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kgdb_stub.c,v 1.23 2009/01/11 10:20:53 cegger Exp $	*/
+/*	$NetBSD: kgdb_stub.c,v 1.24 2011/04/03 22:29:28 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1990, 1993
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kgdb_stub.c,v 1.23 2009/01/11 10:20:53 cegger Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kgdb_stub.c,v 1.24 2011/04/03 22:29:28 dyoung Exp $");
 
 #include "opt_kgdb.h"
 
@@ -94,6 +94,16 @@
  */
 void (*db_trap_callback)(int);
 
+void kgdb_voidop(void);
+
+__weak_alias(kgdb_entry_notice, kgdb_voidop);
+
+void
+kgdb_voidop(void)
+{
+	return;
+}
+
 /*
  * This little routine exists simply so that bcopy() can be debugged.
  */
@@ -321,6 +331,8 @@
 	size_t len;
 	u_char *p;
 
+	kgdb_entry_notice(type, regs);
+
 	if (kgdb_dev == NODEV || kgdb_getc == NULL) {
 		/* not debugging */
 		return (0);
@@ -527,3 +539,9 @@
 	kgdb_recover = 0;
 	return (1);
 }
+
+int
+kgdb_disconnected(void)
+{
+	return 1;
+}

Index: src/sys/sys/kgdb.h
diff -u src/sys/sys/kgdb.h:1.11 src/sys/sys/kgdb.h:1.12
--- src/sys/sys/kgdb.h:1.11	Sun Jan 11 10:20:53 2009
+++ src/sys/sys/kgdb.h	Sun Apr  3 22:29:28 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: kgdb.h,v 1.11 2009/01/11 10:20:53 cegger Exp $	*/
+/*	$NetBSD: kgdb.h,v 1.12 2011/04/03 22:29:28 dyoung Exp $	*/
 
 /*
  * Copyright (c) 1992, 1993
@@ -89,12 +89,14 @@
 void kgdb_connect(int);
 void kgdb_panic(void);
 int kgdb_trap(int, db_regs_t *);
+int kgdb_disconnected(void);
 
 /*
  * Machine dependent functions needed by kgdb_stub.c
  */
 int kgdb_signal(int);
 int kgdb_acc(vaddr_t, size_t);
+void kgdb_entry_notice(int, db_regs_t *);
 void kgdb_getregs(db_regs_t *, kgdb_reg_t *);
 void kgdb_setregs(db_regs_t *, kgdb_reg_t *);
 

Added files:

Index: src/sys/arch/x86/x86/x86_stub.c
diff -u /dev/null src/sys/arch/x86/x86/x86_stub.c:1.1
--- /dev/null	Sun Apr  3 22:29:28 2011
+++ src/sys/arch/x86/x86/x86_stub.c	Sun Apr  3 22:29:27 2011
@@ -0,0 +1,28 @@
+/* $NetBSD: x86_stub.c,v 1.1 2011/04/03 22:29:27 dyoung Exp $ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: x86_stub.c,v 1.1 2011/04/03 22:29:27 dyoung Exp $");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kgdb.h>
+
+int x86_nullop(void);
+void x86_voidop(void);
+
+void
+x86_voidop(void)
+{
+}
+
+int
+x86_nullop(void)
+{
+	return 0;
+}
+
+__weak_alias(kdb_trap, x86_nullop);
+__weak_alias(kgdb_disconnected, x86_nullop);
+__weak_alias(kgdb_trap, x86_nullop);
+__weak_alias(mca_nmi, x86_voidop);
+__weak_alias(x86_nmi, x86_voidop);

Reply via email to