diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2004-06-23 00:30:37 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2004-06-23 00:30:37 +0000 |
commit | 9e7ff69031f171313ebf79305f2518af6f10a801 (patch) | |
tree | 83b26e0bb34487b77f4631387e728cfab57ca618 /sys | |
parent | 7c23bda801e5ac60151ea35df9e3957d4f780faa (diff) |
Since the NMI interrupt source on 88110 is, well, non maskable, it is
possible to receive it during autoconf.
In this case, do not enable _other_ interrupts while we are servicing it.
Note that, on the MVME197, since we are using the BUG for console output
during autoconf, it is still possible to abort the bootstrap and return
to the BUG with the NMI/ABORT switch.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/mvme88k/mvme88k/machdep.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/sys/arch/mvme88k/mvme88k/machdep.c b/sys/arch/mvme88k/mvme88k/machdep.c index 97b3eb19477..aa436d74ffa 100644 --- a/sys/arch/mvme88k/mvme88k/machdep.c +++ b/sys/arch/mvme88k/mvme88k/machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: machdep.c,v 1.142 2004/05/06 18:32:08 miod Exp $ */ +/* $OpenBSD: machdep.c,v 1.143 2004/06/23 00:30:36 miod Exp $ */ /* * Copyright (c) 1998, 1999, 2000, 2001 Steve Murphree, Jr. * Copyright (c) 1996 Nivas Madhur @@ -1810,10 +1810,12 @@ m197_ext_int(u_int v, struct trapframe *eframe) flush_pipeline(); } - /* block interrupts at level or lower */ - setipl(level); + if (v != T_NON_MASK || cold == 0) { + /* block interrupts at level or lower */ + setipl(level); - enable_interrupt(); + enable_interrupt(); + } if ((intr = intr_handlers[vec]) == NULL) { /* increment intr counter */ @@ -1853,13 +1855,15 @@ m197_ext_int(u_int v, struct trapframe *eframe) } } - disable_interrupt(); + if (v != T_NON_MASK || cold == 0) { + disable_interrupt(); - /* - * Restore the mask level to what it was when the interrupt - * was taken. - */ - setipl(mask); + /* + * Restore the mask level to what it was when the interrupt + * was taken. + */ + setipl(mask); + } } #endif /* MVME197 */ |