diff options
Diffstat (limited to 'sys/arch/macppc/dev/openpic.c')
-rw-r--r-- | sys/arch/macppc/dev/openpic.c | 12 |
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; |