summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2004-06-17 06:06:19 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2004-06-17 06:06:19 +0000
commitb51fcbac7f6bb09a656ed402dde63b554eb43ce1 (patch)
tree77ff07fe1606ec44c37aa1e6dd9721a3cdbb60fd /sys
parent4ead9a268dbe5aceee63f4a66fd722ee6399b57a (diff)
reset both irr's; put a barrier upon imr reset such that icr is reset properly and do it once
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/hppa/dev/dino.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/arch/hppa/dev/dino.c b/sys/arch/hppa/dev/dino.c
index 7985d91084c..75774a390da 100644
--- a/sys/arch/hppa/dev/dino.c
+++ b/sys/arch/hppa/dev/dino.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dino.c,v 1.6 2004/06/17 05:40:32 mickey Exp $ */
+/* $OpenBSD: dino.c,v 1.7 2004/06/17 06:06:18 mickey Exp $ */
/*
* Copyright (c) 2003 Michael Shalayeff
@@ -245,7 +245,6 @@ dino_intr_establish(void *v, pci_intr_handle_t ih,
sc->sc_imr |= (1 << (ih - 1));
else
r->imr = sc->sc_imr |= (1 << (ih - 1));
- r->icr &= ~(1 << (ih - 1));
}
return (iv);
@@ -1487,7 +1486,10 @@ dinoattach(parent, self, aux)
s = splhigh();
r->imr = ~0;
data = r->irr0;
+ data = r->irr1;
r->imr = 0;
+ __asm __volatile ("" ::: "memory");
+ r->icr = 0;
r->iar0 = cpu_gethpa(0) | (31 - ca->ca_irq);
splx(s);