Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/powerpc/pic look at the right cpu_softints bits in ...



details:   https://anonhg.NetBSD.org/src/rev/f3088881989f
branches:  trunk
changeset: 779638:f3088881989f
user:      macallan <macallan%NetBSD.org@localhost>
date:      Thu Jun 07 02:39:22 2012 +0000

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

diffstat:

 sys/arch/powerpc/pic/intr.c |  10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diffs (31 lines):

diff -r 1cbc5dd57f3e -r f3088881989f sys/arch/powerpc/pic/intr.c
--- a/sys/arch/powerpc/pic/intr.c       Thu Jun 07 01:01:12 2012 +0000
+++ b/sys/arch/powerpc/pic/intr.c       Thu Jun 07 02:39:22 2012 +0000
@@ -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 @@
        }
 
 #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;



Home | Main Index | Thread Index | Old Index