diff options
author | Dale S. Rahn <rahnds@cvs.openbsd.org> | 1998-08-25 02:58:22 +0000 |
---|---|---|
committer | Dale S. Rahn <rahnds@cvs.openbsd.org> | 1998-08-25 02:58:22 +0000 |
commit | 923d3efb3783636276351a1690f6e8205ab8e834 (patch) | |
tree | 0d3a27ee9bdf3a71adde5fe8772add363530b98c /sys/arch/powerpc/isa | |
parent | 53544d132422e71c6a3497b559ebcf0fb11794ab (diff) |
clear softints when they are taken, by the time hwpend as used, it was zeroed.
Diffstat (limited to 'sys/arch/powerpc/isa')
-rw-r--r-- | sys/arch/powerpc/isa/isabus.c | 5 |
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; |