summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/mvme88k/machdep.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/mvme88k/mvme88k/machdep.c')
-rw-r--r--sys/arch/mvme88k/mvme88k/machdep.c24
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 */