diff options
author | rpaulo <rpaulo@FreeBSD.org> | 2013-04-21 08:35:38 +0000 |
---|---|---|
committer | rpaulo <rpaulo@FreeBSD.org> | 2013-04-21 08:35:38 +0000 |
commit | d3e64b0dcc9d06a6d981586ed378ba4ad72ca6c1 (patch) | |
tree | 06830ad167251b661ca64bde4bcca9b57c0bc349 /sys/powerpc | |
parent | 3cd1c80381a50317f72aaf617ebe2b1ac115f48e (diff) | |
download | FreeBSD-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.c | 5 |
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); } |