From 9e7ff69031f171313ebf79305f2518af6f10a801 Mon Sep 17 00:00:00 2001 From: Miod Vallat Date: Wed, 23 Jun 2004 00:30:37 +0000 Subject: 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. --- sys/arch/mvme88k/mvme88k/machdep.c | 24 ++++++++++++++---------- 1 file 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 */ -- cgit v1.2.3