From 67dd4d6995c2bef9910e031f23aae88e07354587 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Sat, 4 Feb 2012 18:08:17 -0500 Subject: [PATCH] Generic find_first_set_bit can use __builtin_ctz instead of __builtin_ffs The former gives 0-based indexes, which is what our implementation returns, making the "- 1" unnecessary. Change-Id: I172ab5e06695be62e4a18d4fd0415b8314f5dc26 --- firmware/asm/ffs.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/firmware/asm/ffs.c b/firmware/asm/ffs.c index 6826f42e94..a4512e0c55 100644 --- a/firmware/asm/ffs.c +++ b/firmware/asm/ffs.c @@ -35,7 +35,8 @@ int find_first_set_bit(uint32_t val) if (val == 0) return 32; - /* __builtin_ffs(l(l)): Returns one plus the index of the least significant - 1-bit of x, or if x is zero, returns zero. */ - return __builtin_ffs(val) - 1; + /* __builtin_ctz[l[l]]: Returns the number of trailing 0-bits in x, + * starting at the least significant bit position. If x is 0, the result + * is undefined. */ + return __builtin_ctz(val); }