summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authorrpaulo <rpaulo@FreeBSD.org>2013-04-21 08:35:38 +0000
committerrpaulo <rpaulo@FreeBSD.org>2013-04-21 08:35:38 +0000
commitd3e64b0dcc9d06a6d981586ed378ba4ad72ca6c1 (patch)
tree06830ad167251b661ca64bde4bcca9b57c0bc349 /sys/powerpc
parent3cd1c80381a50317f72aaf617ebe2b1ac115f48e (diff)
downloadFreeBSD-src-d3e64b0dcc9d06a6d981586ed378ba4ad72ca6c1.zip
FreeBSD-src-d3e64b0dcc9d06a6d981586ed378ba4ad72ca6c1.tar.gz
Fix an off by one calculation in wiipic_dispatch().
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/wii/wii_pic.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/powerpc/wii/wii_pic.c b/sys/powerpc/wii/wii_pic.c
index e6c6ae4..07987c0 100644
--- a/sys/powerpc/wii/wii_pic.c
+++ b/sys/powerpc/wii/wii_pic.c
@@ -156,7 +156,10 @@ wiipic_dispatch(device_t dev, struct trapframe *tf)
uint32_t irq;
sc = device_get_softc(dev);
- irq = ffs(wiipic_icr_read(sc) & wiipic_imr_read(sc));
+ irq = wiipic_icr_read(sc) & wiipic_imr_read(sc);
+ if (irq == 0)
+ return;
+ irq = ffs(irq) - 1;
KASSERT(irq < WIIPIC_NIRQ, ("bogus irq %d", irq));
powerpc_dispatch_intr(sc->sc_vector[irq], tf);
}
OpenPOWER on IntegriCloud