summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Rahn <drahn@cvs.openbsd.org>2006-12-20 14:27:59 +0000
committerDale Rahn <drahn@cvs.openbsd.org>2006-12-20 14:27:59 +0000
commit1b6bcdace1e102b6acd3c88f5d7fd1c6dbbb6f09 (patch)
tree9770ce7c9c75587ccd643014a6456a061daafe2c
parent195a127b5df7afc746f9d38807329f7ca1fdb520 (diff)
Enable recursive interrupts on armish. nudge by deraadt@
-rw-r--r--sys/arch/arm/xscale/i80321_intr.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/arch/arm/xscale/i80321_intr.c b/sys/arch/arm/xscale/i80321_intr.c
index f0a3e5f0fc8..31112e2e2b8 100644
--- a/sys/arch/arm/xscale/i80321_intr.c
+++ b/sys/arch/arm/xscale/i80321_intr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: i80321_intr.c,v 1.8 2006/07/02 02:51:13 drahn Exp $ */
+/* $OpenBSD: i80321_intr.c,v 1.9 2006/12/20 14:27:58 drahn Exp $ */
/*
* Copyright (c) 2006 Dale Rahn <drahn@openbsd.org>
@@ -102,8 +102,12 @@ i80321intc_read_intsrc(void)
static inline void
i80321intc_setipl(int new)
{
+ int psw;
+
+ psw = disable_interrupts(I32_bit);
current_ipl_level = new;
i80321intc_write_intctl(i80321intc_imask[new]);
+ restore_interrupts(psw);
}
@@ -376,19 +380,15 @@ i80321_irq_handler(void *arg)
if (saved_spl_level < i80321_handler[irq].iq_irq)
i80321intc_setipl(i80321_handler[irq].iq_irq);
-#ifdef notyet
/* Enable interrupt */
- restore_interrupts(I32_bit);
-#endif
+ enable_interrupts(I32_bit);
TAILQ_FOREACH(ih, &i80321_handler[irq].iq_list, ih_list) {
if ((ih->ih_func)( ih->ih_arg == 0
? frame : ih->ih_arg))
ih->ih_count.ec_count++;
}
-#ifdef notyet
/* Disable interrupt */
disable_interrupts(I32_bit);
-#endif
hwpend &= ~(1<<irq);
}
uvmexp.intrs++;