summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/arch/sgi/sgi/ip30_machdep.c12
-rw-r--r--sys/arch/sgi/sgi/ip30_nmi.S7
2 files changed, 12 insertions, 7 deletions
diff --git a/sys/arch/sgi/sgi/ip30_machdep.c b/sys/arch/sgi/sgi/ip30_machdep.c
index 101160b5354..9eb86598c50 100644
--- a/sys/arch/sgi/sgi/ip30_machdep.c
+++ b/sys/arch/sgi/sgi/ip30_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip30_machdep.c,v 1.32 2010/01/13 22:57:30 miod Exp $ */
+/* $OpenBSD: ip30_machdep.c,v 1.33 2010/01/13 23:24:27 miod Exp $ */
/*
* Copyright (c) 2008, 2009 Miodrag Vallat.
@@ -371,9 +371,19 @@ ip30_nmi_handler()
{
extern int kdb_trap(int, struct trap_frame *);
extern void stacktrace(struct trap_frame *);
+ struct cpu_info *ci = curcpu();
struct trap_frame *fr0, *fr1;
+ int s;
setsr(getsr() & ~SR_BOOT_EXC_VEC);
+
+ s = splhigh();
+ ENABLEIPI();
+
+ if (!CPU_IS_PRIMARY(ci)) {
+ for (;;) ;
+ }
+
printf("NMI\n");
fr0 = (struct trap_frame *)PHYS_TO_XKPHYS(IP30_MEMORY_BASE + 0x4000,
diff --git a/sys/arch/sgi/sgi/ip30_nmi.S b/sys/arch/sgi/sgi/ip30_nmi.S
index 0454df73acb..b3f2cbf2b23 100644
--- a/sys/arch/sgi/sgi/ip30_nmi.S
+++ b/sys/arch/sgi/sgi/ip30_nmi.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip30_nmi.S,v 1.1 2010/01/13 22:57:30 miod Exp $ */
+/* $OpenBSD: ip30_nmi.S,v 1.2 2010/01/13 23:24:27 miod Exp $ */
/*
* Copyright (c) 2010 Miodrag Vallat.
@@ -85,11 +85,6 @@ ip30_nmi:
mtc0 a1, COP_0_STATUS_REG
ITLBNOPFIX
- LA k0, HW_CPU_NUMBER_REG
- PTR_L k1, 0(k0)
- bnez k1, 9f
- nop
-
jal ip30_nmi_handler /* ip30_machdep.c */
nop