summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2009-05-21 16:25:27 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2009-05-21 16:25:27 +0000
commit17de17646f8e68cae61a0906428351c5e9571d69 (patch)
treeca3a19284e8a99f19c97a7f14a231ae569a1c3d3 /sys
parent631c46cb77be0f687af1cce71918800b7928d281 (diff)
If we had interrupts to service and interrupts to mark as pending, after
servicing interrupts, correctly mask the other (marked as pending) interrupts in imr. Otherwise we get another interrupt immediately for nothing (which updates imr correctly the second time).
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/sgi/sgi/ip27_machdep.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/sgi/sgi/ip27_machdep.c b/sys/arch/sgi/sgi/ip27_machdep.c
index 429ee8db024..831c6046bff 100644
--- a/sys/arch/sgi/sgi/ip27_machdep.c
+++ b/sys/arch/sgi/sgi/ip27_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ip27_machdep.c,v 1.6 2009/05/15 22:59:07 miod Exp $ */
+/* $OpenBSD: ip27_machdep.c,v 1.7 2009/05/21 16:25:26 miod Exp $ */
/*
* Copyright (c) 2008, 2009 Miodrag Vallat.
@@ -80,7 +80,8 @@ ip27_setup()
/*
* Initialize the early console parameters.
* This assumes BRIDGE is on widget 8 and IOC3 is mapped in
- * memory space at address 0x600000.
+ * memory space at address 0x600000. Although on IP35 it is
+ * actually widget 15...
*
* XXX And that 0x600000 should be computed from the first BAR
* XXX of the IOC3 in pci configuration space. Joy. I'll get there
@@ -374,6 +375,7 @@ ip27_hub_intr_handler(intrmask_t hwpend, struct trap_frame *frame)
if ((mask = isr & frame->cpl) != 0) {
atomic_setbits_int(&ipending, mask);
isr &= ~mask;
+ imr &= ~mask;
}
/*