Module Name:    src
Committed By:   macallan
Date:           Thu Jun  7 02:39:22 UTC 2012

Modified Files:
        src/sys/arch/powerpc/pic: intr.c

Log Message:
look at the right cpu_softints bits in pic_do_pending_int()
so we call the right softint handlers


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/powerpc/pic/intr.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/pic/intr.c
diff -u src/sys/arch/powerpc/pic/intr.c:1.20 src/sys/arch/powerpc/pic/intr.c:1.21
--- src/sys/arch/powerpc/pic/intr.c:1.20	Wed Feb  1 09:54:03 2012
+++ src/sys/arch/powerpc/pic/intr.c	Thu Jun  7 02:39:22 2012
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.c,v 1.20 2012/02/01 09:54:03 matt Exp $ */
+/*	$NetBSD: intr.c,v 1.21 2012/06/07 02:39:22 macallan Exp $ */
 
 /*-
  * Copyright (c) 2007 Michael Lorenz
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.20 2012/02/01 09:54:03 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.21 2012/06/07 02:39:22 macallan Exp $");
 
 #include "opt_interrupt.h"
 #include "opt_multiprocessor.h"
@@ -508,7 +508,11 @@ again:
 	}
 
 #ifdef __HAVE_FAST_SOFTINTS
-	const u_int softints = (ci->ci_data.cpu_softints << pcpl) & IPL_SOFTMASK;
+	const u_int softints = ci->ci_data.cpu_softints &
+				 (IPL_SOFTMASK << pcpl);
+
+	/* make sure there are no bits to screw with the line above */
+	KASSERT((ci->ci_data.cpu_softints & ~IPL_SOFTMASK) == 0);
 
 	if (__predict_false(softints != 0)) {
 		ci->ci_cpl = IPL_HIGH;

Reply via email to