Module Name: src Committed By: riastradh Date: Thu Jul 13 19:42:24 UTC 2023
Modified Files: src/sys/arch/arm/xscale: pxa2x0_intr.c pxa2x0_intr.h src/sys/arch/evbarm/g42xxeb: obio.c src/sys/arch/evbarm/lubbock: obio.c sacc_obio.c Log Message: arm/xscale: Use sys/bitops.h fls32 - 1 instead of 31 - __builtin_clz. Sidesteps namespace collision with `#define bits ...' in net/zlib.c. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/sys/arch/arm/xscale/pxa2x0_intr.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/arm/xscale/pxa2x0_intr.h cvs rdiff -u -r1.13 -r1.14 src/sys/arch/evbarm/g42xxeb/obio.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/evbarm/lubbock/obio.c cvs rdiff -u -r1.15 -r1.16 src/sys/arch/evbarm/lubbock/sacc_obio.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/arm/xscale/pxa2x0_intr.c diff -u src/sys/arch/arm/xscale/pxa2x0_intr.c:1.25 src/sys/arch/arm/xscale/pxa2x0_intr.c:1.26 --- src/sys/arch/arm/xscale/pxa2x0_intr.c:1.25 Mon Oct 31 21:22:05 2022 +++ src/sys/arch/arm/xscale/pxa2x0_intr.c Thu Jul 13 19:42:24 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pxa2x0_intr.c,v 1.25 2022/10/31 21:22:05 andvar Exp $ */ +/* $NetBSD: pxa2x0_intr.c,v 1.26 2023/07/13 19:42:24 riastradh Exp $ */ /* * Copyright (c) 2002 Genetec Corporation. All rights reserved. @@ -39,12 +39,14 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pxa2x0_intr.c,v 1.25 2022/10/31 21:22:05 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pxa2x0_intr.c,v 1.26 2023/07/13 19:42:24 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/bus.h> +#include <sys/bitops.h> + #include <machine/intr.h> #include <machine/lock.h> @@ -161,7 +163,7 @@ pxa2x0_irq_handler(void *arg) /* get pending IRQs */ irqbits = read_icu(SAIPIC_IP); - while ((irqno = find_first_bit(irqbits)) >= 0) { + while ((irqno = fls32(irqbits) - 1) >= 0) { /* XXX: Should we handle IRQs in priority order? */ /* raise spl to stop interrupts of lower priorities */ Index: src/sys/arch/arm/xscale/pxa2x0_intr.h diff -u src/sys/arch/arm/xscale/pxa2x0_intr.h:1.15 src/sys/arch/arm/xscale/pxa2x0_intr.h:1.16 --- src/sys/arch/arm/xscale/pxa2x0_intr.h:1.15 Wed Jan 24 09:04:45 2018 +++ src/sys/arch/arm/xscale/pxa2x0_intr.h Thu Jul 13 19:42:24 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: pxa2x0_intr.h,v 1.15 2018/01/24 09:04:45 skrll Exp $ */ +/* $NetBSD: pxa2x0_intr.h,v 1.16 2023/07/13 19:42:24 riastradh Exp $ */ /* Derived from i80321_intr.h */ @@ -114,21 +114,6 @@ pxa2x0_spllower(int ipl) return old; } -/* - * An useful function for interrupt handlers. - * XXX: This shouldn't be here. - */ -static inline int -find_first_bit(uint32_t bits) -{ - /* - * Since CLZ is available only on ARMv5, this isn't portable - * to all ARM CPUs. This file is for PXA2[15]0 processor. - */ - return 31 - __builtin_clz(bits); -} - - int _splraise(int); int _spllower(int); void splx(int); Index: src/sys/arch/evbarm/g42xxeb/obio.c diff -u src/sys/arch/evbarm/g42xxeb/obio.c:1.13 src/sys/arch/evbarm/g42xxeb/obio.c:1.14 --- src/sys/arch/evbarm/g42xxeb/obio.c:1.13 Sat Aug 7 16:18:49 2021 +++ src/sys/arch/evbarm/g42xxeb/obio.c Thu Jul 13 19:42:24 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: obio.c,v 1.13 2021/08/07 16:18:49 thorpej Exp $ */ +/* $NetBSD: obio.c,v 1.14 2023/07/13 19:42:24 riastradh Exp $ */ /* * Copyright (c) 2002, 2003, 2005 Genetec corp. All rights reserved. @@ -35,6 +35,7 @@ #include <sys/device.h> #include <sys/kernel.h> #include <sys/reboot.h> +#include <sys/bitops.h> #include <machine/cpu.h> #include <sys/bus.h> @@ -98,7 +99,7 @@ obio_intr(void *arg) #endif for (pending = get_pending(sc); - (irqno = find_first_bit(pending)) >= 0; + (irqno = fls32(pending) - 1) >= 0; pending = get_pending(sc)) { /* reset pending bit */ Index: src/sys/arch/evbarm/lubbock/obio.c diff -u src/sys/arch/evbarm/lubbock/obio.c:1.12 src/sys/arch/evbarm/lubbock/obio.c:1.13 --- src/sys/arch/evbarm/lubbock/obio.c:1.12 Sat Aug 7 16:18:50 2021 +++ src/sys/arch/evbarm/lubbock/obio.c Thu Jul 13 19:42:24 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: obio.c,v 1.12 2021/08/07 16:18:50 thorpej Exp $ */ +/* $NetBSD: obio.c,v 1.13 2023/07/13 19:42:24 riastradh Exp $ */ /* * Copyright (c) 2002, 2003 Genetec Corporation. All rights reserved. @@ -35,13 +35,14 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.12 2021/08/07 16:18:50 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: obio.c,v 1.13 2023/07/13 19:42:24 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/device.h> #include <sys/kernel.h> #include <sys/reboot.h> +#include <sys/bitops.h> #include <machine/cpu.h> #include <sys/bus.h> @@ -163,7 +164,7 @@ obio_softintr(void *arg) int spl_save = curcpl(); psw = disable_interrupts(I32_bit); - while ((irqno = find_first_bit(sc->sc_obio_intr_pending)) >= 0) { + while ((irqno = fls32(sc->sc_obio_intr_pending) - 1) >= 0) { sc->sc_obio_intr_pending &= ~(1U<<irqno); restore_interrupts(psw); Index: src/sys/arch/evbarm/lubbock/sacc_obio.c diff -u src/sys/arch/evbarm/lubbock/sacc_obio.c:1.15 src/sys/arch/evbarm/lubbock/sacc_obio.c:1.16 --- src/sys/arch/evbarm/lubbock/sacc_obio.c:1.15 Sat Aug 7 16:18:50 2021 +++ src/sys/arch/evbarm/lubbock/sacc_obio.c Thu Jul 13 19:42:24 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: sacc_obio.c,v 1.15 2021/08/07 16:18:50 thorpej Exp $ */ +/* $NetBSD: sacc_obio.c,v 1.16 2023/07/13 19:42:24 riastradh Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sacc_obio.c,v 1.15 2021/08/07 16:18:50 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sacc_obio.c,v 1.16 2023/07/13 19:42:24 riastradh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -45,6 +45,7 @@ __KERNEL_RCSID(0, "$NetBSD: sacc_obio.c, #include <sys/syslog.h> #include <sys/select.h> #include <sys/device.h> +#include <sys/bitops.h> #include <net/if.h> #include <net/if_dl.h> @@ -197,7 +198,7 @@ sacc_obio_intr(void *arg) bus_space_read_4(sc->sc_iot, sc->sc_ioh, SACCIC_INTSTATCLR1); DPRINTF(("sacc_obio_intr_dispatch: %x %x\n", intstat.lo, intstat.hi)); - while ((i = find_first_bit(intstat.lo)) >= 0) { + while ((i = fls32(intstat.lo) - 1) >= 0) { /* * Clear intr status before calling intr handlers.