mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
bitops: move find_bit_*_le functions from le.h to find.h
It's convenient to have all find_bit declarations in one place. Signed-off-by: Yury Norov <yury.norov@gmail.com> Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
This commit is contained in:
parent
b7ec62d7ee
commit
6b8ecb84f8
2 changed files with 69 additions and 64 deletions
|
@ -190,4 +190,73 @@ extern unsigned long find_next_clump8(unsigned long *clump,
|
||||||
#define find_first_clump8(clump, bits, size) \
|
#define find_first_clump8(clump, bits, size) \
|
||||||
find_next_clump8((clump), (bits), (size), 0)
|
find_next_clump8((clump), (bits), (size), 0)
|
||||||
|
|
||||||
|
#if defined(__LITTLE_ENDIAN)
|
||||||
|
|
||||||
|
static inline unsigned long find_next_zero_bit_le(const void *addr,
|
||||||
|
unsigned long size, unsigned long offset)
|
||||||
|
{
|
||||||
|
return find_next_zero_bit(addr, size, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long find_next_bit_le(const void *addr,
|
||||||
|
unsigned long size, unsigned long offset)
|
||||||
|
{
|
||||||
|
return find_next_bit(addr, size, offset);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline unsigned long find_first_zero_bit_le(const void *addr,
|
||||||
|
unsigned long size)
|
||||||
|
{
|
||||||
|
return find_first_zero_bit(addr, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
#elif defined(__BIG_ENDIAN)
|
||||||
|
|
||||||
|
#ifndef find_next_zero_bit_le
|
||||||
|
static inline
|
||||||
|
unsigned long find_next_zero_bit_le(const void *addr, unsigned
|
||||||
|
long size, unsigned long offset)
|
||||||
|
{
|
||||||
|
if (small_const_nbits(size)) {
|
||||||
|
unsigned long val = *(const unsigned long *)addr;
|
||||||
|
|
||||||
|
if (unlikely(offset >= size))
|
||||||
|
return size;
|
||||||
|
|
||||||
|
val = swab(val) | ~GENMASK(size - 1, offset);
|
||||||
|
return val == ~0UL ? size : ffz(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
return _find_next_bit(addr, NULL, size, offset, ~0UL, 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef find_next_bit_le
|
||||||
|
static inline
|
||||||
|
unsigned long find_next_bit_le(const void *addr, unsigned
|
||||||
|
long size, unsigned long offset)
|
||||||
|
{
|
||||||
|
if (small_const_nbits(size)) {
|
||||||
|
unsigned long val = *(const unsigned long *)addr;
|
||||||
|
|
||||||
|
if (unlikely(offset >= size))
|
||||||
|
return size;
|
||||||
|
|
||||||
|
val = swab(val) & GENMASK(size - 1, offset);
|
||||||
|
return val ? __ffs(val) : size;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _find_next_bit(addr, NULL, size, offset, 0UL, 1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef find_first_zero_bit_le
|
||||||
|
#define find_first_zero_bit_le(addr, size) \
|
||||||
|
find_next_zero_bit_le((addr), (size), 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
#error "Please fix <asm/byteorder.h>"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /*_ASM_GENERIC_BITOPS_FIND_H_ */
|
#endif /*_ASM_GENERIC_BITOPS_FIND_H_ */
|
||||||
|
|
|
@ -2,83 +2,19 @@
|
||||||
#ifndef _ASM_GENERIC_BITOPS_LE_H_
|
#ifndef _ASM_GENERIC_BITOPS_LE_H_
|
||||||
#define _ASM_GENERIC_BITOPS_LE_H_
|
#define _ASM_GENERIC_BITOPS_LE_H_
|
||||||
|
|
||||||
#include <asm-generic/bitops/find.h>
|
|
||||||
#include <asm/types.h>
|
#include <asm/types.h>
|
||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
#include <linux/swab.h>
|
|
||||||
|
|
||||||
#if defined(__LITTLE_ENDIAN)
|
#if defined(__LITTLE_ENDIAN)
|
||||||
|
|
||||||
#define BITOP_LE_SWIZZLE 0
|
#define BITOP_LE_SWIZZLE 0
|
||||||
|
|
||||||
static inline unsigned long find_next_zero_bit_le(const void *addr,
|
|
||||||
unsigned long size, unsigned long offset)
|
|
||||||
{
|
|
||||||
return find_next_zero_bit(addr, size, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned long find_next_bit_le(const void *addr,
|
|
||||||
unsigned long size, unsigned long offset)
|
|
||||||
{
|
|
||||||
return find_next_bit(addr, size, offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned long find_first_zero_bit_le(const void *addr,
|
|
||||||
unsigned long size)
|
|
||||||
{
|
|
||||||
return find_first_zero_bit(addr, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(__BIG_ENDIAN)
|
#elif defined(__BIG_ENDIAN)
|
||||||
|
|
||||||
#define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
|
#define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
|
||||||
|
|
||||||
#ifndef find_next_zero_bit_le
|
|
||||||
static inline
|
|
||||||
unsigned long find_next_zero_bit_le(const void *addr, unsigned
|
|
||||||
long size, unsigned long offset)
|
|
||||||
{
|
|
||||||
if (small_const_nbits(size)) {
|
|
||||||
unsigned long val = *(const unsigned long *)addr;
|
|
||||||
|
|
||||||
if (unlikely(offset >= size))
|
|
||||||
return size;
|
|
||||||
|
|
||||||
val = swab(val) | ~GENMASK(size - 1, offset);
|
|
||||||
return val == ~0UL ? size : ffz(val);
|
|
||||||
}
|
|
||||||
|
|
||||||
return _find_next_bit(addr, NULL, size, offset, ~0UL, 1);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef find_next_bit_le
|
|
||||||
static inline
|
|
||||||
unsigned long find_next_bit_le(const void *addr, unsigned
|
|
||||||
long size, unsigned long offset)
|
|
||||||
{
|
|
||||||
if (small_const_nbits(size)) {
|
|
||||||
unsigned long val = *(const unsigned long *)addr;
|
|
||||||
|
|
||||||
if (unlikely(offset >= size))
|
|
||||||
return size;
|
|
||||||
|
|
||||||
val = swab(val) & GENMASK(size - 1, offset);
|
|
||||||
return val ? __ffs(val) : size;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _find_next_bit(addr, NULL, size, offset, 0UL, 1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef find_first_zero_bit_le
|
|
||||||
#define find_first_zero_bit_le(addr, size) \
|
|
||||||
find_next_zero_bit_le((addr), (size), 0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
#error "Please fix <asm/byteorder.h>"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline int test_bit_le(int nr, const void *addr)
|
static inline int test_bit_le(int nr, const void *addr)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue