aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Houchard <cognet@FreeBSD.org>2008-09-11 20:43:38 +0000
committerOlivier Houchard <cognet@FreeBSD.org>2008-09-11 20:43:38 +0000
commit34ba28d1826c8ee62efecb10274bcbfa7458d367 (patch)
tree15327fe6aa531b575666e84dbf8df36436e3efca
parent5ac74cc6e48055cd37f09f399f9f03440d3bafba (diff)
Notes
-rw-r--r--sys/arm/xscale/ixp425/ixp425.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/sys/arm/xscale/ixp425/ixp425.c b/sys/arm/xscale/ixp425/ixp425.c
index b1a7a56099b13..af87503084591 100644
--- a/sys/arm/xscale/ixp425/ixp425.c
+++ b/sys/arm/xscale/ixp425/ixp425.c
@@ -143,22 +143,27 @@ ixp425_irq2gpio_bit(int irq)
void
arm_mask_irq(uintptr_t nb)
{
+ int i;
+
+ i = disable_interrupts(I32_bit);
intr_enabled &= ~(1 << nb);
ixp425_set_intrmask();
+ restore_interrupts(i);
/*XXX; If it's a GPIO interrupt, ACK it know. Can it be a problem ?*/
if ((1 << nb) & IXP425_INT_GPIOMASK)
IXPREG(IXP425_GPIO_VBASE + IXP425_GPIO_GPISR) =
ixp425_irq2gpio_bit(nb);
-
-
}
void
arm_unmask_irq(uintptr_t nb)
{
-
+ int i;
+
+ i = disable_interrupts(I32_bit);
intr_enabled |= (1 << nb);
ixp425_set_intrmask();
+ restore_interrupts(i);
}
static __inline uint32_t