diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/sgi/sgi/ip30_machdep.c | 12 | ||||
-rw-r--r-- | sys/arch/sgi/sgi/ip30_nmi.S | 7 |
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 |