Module Name:    src
Committed By:   riastradh
Date:           Fri Jul 14 12:57:10 UTC 2023

Modified Files:
        src/sys/arch/evbarm/g42xxeb: obio.c

Log Message:
evbarm/g42xxeb: Fix off-by-one in previous.

The original find_first_bit(x) was 31 - __builtin_clz((uint32_t)x),
which is equivalent to fls32(x) - 1, not to fls32(x).

Note that fls32 is 1-based and returns 0 for x=0.


To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/evbarm/g42xxeb/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/evbarm/g42xxeb/obio.c
diff -u src/sys/arch/evbarm/g42xxeb/obio.c:1.15 src/sys/arch/evbarm/g42xxeb/obio.c:1.16
--- src/sys/arch/evbarm/g42xxeb/obio.c:1.15	Thu Jul 13 20:22:29 2023
+++ src/sys/arch/evbarm/g42xxeb/obio.c	Fri Jul 14 12:57:10 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: obio.c,v 1.15 2023/07/13 20:22:29 mrg Exp $ */
+/*	$NetBSD: obio.c,v 1.16 2023/07/14 12:57:10 riastradh Exp $ */
 
 /*
  * Copyright (c) 2002, 2003, 2005  Genetec corp.  All rights reserved.
@@ -156,7 +156,7 @@ obio_softint(void *arg)
 	int psw;
 
 	psw = disable_interrupts(I32_bit);
-	while ((irqno = fls32(sc->sc_intr_pending)) >= 0) {
+	while ((irqno = fls32(sc->sc_intr_pending) - 1) >= 0) {
 		sc->sc_intr_pending &= ~(1U<<irqno);
 
 		restore_interrupts(psw);

Reply via email to