qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 5/7] omap_intc: convert ffs(3) to ctz32() in omap_in


From: Stefan Hajnoczi
Subject: [Qemu-devel] [PATCH 5/7] omap_intc: convert ffs(3) to ctz32() in omap_inth_sir_update()
Date: Tue, 17 Mar 2015 11:56:48 +0000

The loop previously terminated on ffs(0) == 0, now it terminates on
ctz32(0) + 1 == 33.

Other than this change, ffs() is simply replaced with ctz32() + 1.

Cc: Peter Maydell <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
 hw/intc/omap_intc.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/hw/intc/omap_intc.c b/hw/intc/omap_intc.c
index ad3931c..0cf2d2d 100644
--- a/hw/intc/omap_intc.c
+++ b/hw/intc/omap_intc.c
@@ -72,14 +72,15 @@ static void omap_inth_sir_update(struct omap_intr_handler_s 
*s, int is_fiq)
     for (j = 0; j < s->nbanks; ++j) {
         level = s->bank[j].irqs & ~s->bank[j].mask &
                 (is_fiq ? s->bank[j].fiq : ~s->bank[j].fiq);
-        for (f = ffs(level), i = f - 1, level >>= f - 1; f; i += f,
-                        level >>= f) {
+        for (f = ctz32(level) + 1, i = f - 1, level >>= f - 1;
+             f != 33;
+             i += f, level >>= f) {
             p = s->bank[j].priority[i];
             if (p <= p_intr) {
                 p_intr = p;
                 sir_intr = 32 * j + i;
             }
-            f = ffs(level >> 1);
+            f = ctz32(level >> 1) + 1;
         }
     }
     s->sir_intr[is_fiq] = sir_intr;
-- 
2.1.0




reply via email to

[Prev in Thread] Current Thread [Next in Thread]