diff options
Diffstat (limited to 'tools/lib/find_bit.c')
| -rw-r--r-- | tools/lib/find_bit.c | 20 | 
1 files changed, 20 insertions, 0 deletions
diff --git a/tools/lib/find_bit.c b/tools/lib/find_bit.c index 109aa7ffcf97..ba4b8d94e004 100644 --- a/tools/lib/find_bit.c +++ b/tools/lib/find_bit.c @@ -96,6 +96,26 @@ unsigned long _find_first_bit(const unsigned long *addr, unsigned long size)  }  #endif +#ifndef find_first_and_bit +/* + * Find the first set bit in two memory regions. + */ +unsigned long _find_first_and_bit(const unsigned long *addr1, +				  const unsigned long *addr2, +				  unsigned long size) +{ +	unsigned long idx, val; + +	for (idx = 0; idx * BITS_PER_LONG < size; idx++) { +		val = addr1[idx] & addr2[idx]; +		if (val) +			return min(idx * BITS_PER_LONG + __ffs(val), size); +	} + +	return size; +} +#endif +  #ifndef find_first_zero_bit  /*   * Find the first cleared bit in a memory region.  |