summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale S. Rahn <rahnds@cvs.openbsd.org>1998-08-25 02:58:22 +0000
committerDale S. Rahn <rahnds@cvs.openbsd.org>1998-08-25 02:58:22 +0000
commit923d3efb3783636276351a1690f6e8205ab8e834 (patch)
tree0d3a27ee9bdf3a71adde5fe8772add363530b98c
parent53544d132422e71c6a3497b559ebcf0fb11794ab (diff)
clear softints when they are taken, by the time hwpend as used, it was zeroed.
-rw-r--r--sys/arch/powerpc/isa/isabus.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/arch/powerpc/isa/isabus.c b/sys/arch/powerpc/isa/isabus.c
index a7f9d0e8525..8bfe97e80ef 100644
--- a/sys/arch/powerpc/isa/isabus.c
+++ b/sys/arch/powerpc/isa/isabus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: isabus.c,v 1.5 1998/08/25 02:36:05 rahnds Exp $ */
+/* $OpenBSD: isabus.c,v 1.6 1998/08/25 02:58:21 rahnds Exp $ */
/* $NetBSD: isa.c,v 1.33 1995/06/28 04:30:51 cgd Exp $ */
/*-
@@ -447,6 +447,7 @@ static int processing;
hwpend &= ((1L << ICU_LEN) - 1);
imen &= ~hwpend;
while(hwpend) {
+ evirq[ICU_LEN].ev_count++;
vector = ffs(hwpend) - 1;
hwpend &= ~(1L << vector);
ih = intrhand[vector];
@@ -455,6 +456,7 @@ static int processing;
(*ih->ih_fun)(ih->ih_arg);
ih = ih->ih_next;
}
+ ipending &= ~(1L << vector);
}
if((ipending & SINT_CLOCK)& ~pcpl) {
ipending &= ~SINT_CLOCK;
@@ -467,7 +469,6 @@ static int processing;
ipending &= ~SINT_NET;
softnet(pisr);
}
- ipending &= ~hwpend;
cpl = pcpl; /* Don't use splx... we are here already! */
__asm__ volatile("mtmsr %0" :: "r"(emsr));
processing = 0;