From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52864) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YXq7q-0005ZO-I0 for qemu-devel@nongnu.org; Tue, 17 Mar 2015 07:58:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YXq7O-00037E-0m for qemu-devel@nongnu.org; Tue, 17 Mar 2015 07:57:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43698) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YXq7N-000372-NR for qemu-devel@nongnu.org; Tue, 17 Mar 2015 07:57:05 -0400 From: Stefan Hajnoczi Date: Tue, 17 Mar 2015 11:56:48 +0000 Message-Id: <1426593410-21405-6-git-send-email-stefanha@redhat.com> In-Reply-To: <1426593410-21405-1-git-send-email-stefanha@redhat.com> References: <1426593410-21405-1-git-send-email-stefanha@redhat.com> Subject: [Qemu-devel] [PATCH 5/7] omap_intc: convert ffs(3) to ctz32() in omap_inth_sir_update() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Markus Armbruster , Stefan Hajnoczi 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 Signed-off-by: Stefan Hajnoczi --- 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