summaryrefslogtreecommitdiffstats
path: root/include/qemu/bitops.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/qemu/bitops.h')
-rw-r--r--include/qemu/bitops.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h
index 340b1e7..7e2d5c9 100644
--- a/include/qemu/bitops.h
+++ b/include/qemu/bitops.h
@@ -157,7 +157,17 @@ unsigned long find_next_zero_bit(const unsigned long *addr,
static inline unsigned long find_first_bit(const unsigned long *addr,
unsigned long size)
{
- return find_next_bit(addr, size, 0);
+ unsigned long result, tmp;
+
+ for (result = 0; result < size; result += BITS_PER_LONG) {
+ tmp = *addr++;
+ if (tmp) {
+ result += ctzl(tmp);
+ return result < size ? result : size;
+ }
+ }
+ /* Not found */
+ return size;
}
/**
OpenPOWER on IntegriCloud