summaryrefslogtreecommitdiff
path: root/sys/arch/macppc/dev/openpic.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/macppc/dev/openpic.c')
-rw-r--r--sys/arch/macppc/dev/openpic.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/arch/macppc/dev/openpic.c b/sys/arch/macppc/dev/openpic.c
index bf0d02ac1ef..7a93112979e 100644
--- a/sys/arch/macppc/dev/openpic.c
+++ b/sys/arch/macppc/dev/openpic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: openpic.c,v 1.39 2007/05/10 15:28:09 drahn Exp $ */
+/* $OpenBSD: openpic.c,v 1.40 2007/05/29 18:10:43 miod Exp $ */
/*-
* Copyright (c) 1995 Per Fogelstrom
@@ -46,6 +46,7 @@
#include <uvm/uvm.h>
#include <ddb/db_var.h>
+#include <machine/atomic.h>
#include <machine/autoconf.h>
#include <machine/intr.h>
#include <machine/psl.h>
@@ -501,10 +502,13 @@ openpic_do_pending_int()
}
if((ci->ci_ipending & SINT_NET) & ~pcpl) {
extern int netisr;
- int pisr = netisr;
- netisr = 0;
+ int pisr;
+
ci->ci_ipending &= ~SINT_NET;
- softnet(pisr);
+ while ((pisr = netisr) != 0) {
+ atomic_clearbits_int(&netisr, pisr);
+ softnet(pisr);
+ }
}
if((ci->ci_ipending & SINT_TTY) & ~pcpl) {
ci->ci_ipending &= ~SINT_TTY;