xref: /openbmc/linux/include/asm-generic/bitops/le.h (revision 63ab595fb6b34234f116f05f95dc752dd5f8affb)
1930ae745SAkinobu Mita #ifndef _ASM_GENERIC_BITOPS_LE_H_
2930ae745SAkinobu Mita #define _ASM_GENERIC_BITOPS_LE_H_
3930ae745SAkinobu Mita 
4930ae745SAkinobu Mita #include <asm/types.h>
5930ae745SAkinobu Mita #include <asm/byteorder.h>
6930ae745SAkinobu Mita 
7930ae745SAkinobu Mita #if defined(__LITTLE_ENDIAN)
8930ae745SAkinobu Mita 
9*63ab595fSAkinobu Mita #define BITOP_LE_SWIZZLE	0
10930ae745SAkinobu Mita 
11*63ab595fSAkinobu Mita #define generic_find_next_zero_le_bit(addr, size, offset) \
12*63ab595fSAkinobu Mita 	find_next_zero_bit(addr, size, offset)
13aa02ad67SAneesh Kumar K.V #define generic_find_next_le_bit(addr, size, offset) \
14aa02ad67SAneesh Kumar K.V 	find_next_bit(addr, size, offset)
15*63ab595fSAkinobu Mita #define generic_find_first_zero_le_bit(addr, size) \
16*63ab595fSAkinobu Mita 	find_first_zero_bit(addr, size)
17930ae745SAkinobu Mita 
18930ae745SAkinobu Mita #elif defined(__BIG_ENDIAN)
19930ae745SAkinobu Mita 
20*63ab595fSAkinobu Mita #define BITOP_LE_SWIZZLE	((BITS_PER_LONG-1) & ~0x7)
21*63ab595fSAkinobu Mita 
22*63ab595fSAkinobu Mita extern unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
23*63ab595fSAkinobu Mita 		unsigned long size, unsigned long offset);
24*63ab595fSAkinobu Mita extern unsigned long generic_find_next_le_bit(const unsigned long *addr,
25*63ab595fSAkinobu Mita 		unsigned long size, unsigned long offset);
26*63ab595fSAkinobu Mita 
27*63ab595fSAkinobu Mita #define generic_find_first_zero_le_bit(addr, size) \
28*63ab595fSAkinobu Mita 	generic_find_next_zero_le_bit((addr), (size), 0)
29*63ab595fSAkinobu Mita 
30*63ab595fSAkinobu Mita #else
31*63ab595fSAkinobu Mita #error "Please fix <asm/byteorder.h>"
32*63ab595fSAkinobu Mita #endif
33*63ab595fSAkinobu Mita 
34930ae745SAkinobu Mita #define generic_test_le_bit(nr, addr) \
35930ae745SAkinobu Mita 	test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
36930ae745SAkinobu Mita #define generic___set_le_bit(nr, addr) \
37930ae745SAkinobu Mita 	__set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
38930ae745SAkinobu Mita #define generic___clear_le_bit(nr, addr) \
39930ae745SAkinobu Mita 	__clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
40930ae745SAkinobu Mita 
41930ae745SAkinobu Mita #define generic_test_and_set_le_bit(nr, addr) \
42930ae745SAkinobu Mita 	test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
43930ae745SAkinobu Mita #define generic_test_and_clear_le_bit(nr, addr) \
44930ae745SAkinobu Mita 	test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
45930ae745SAkinobu Mita 
46930ae745SAkinobu Mita #define generic___test_and_set_le_bit(nr, addr) \
47930ae745SAkinobu Mita 	__test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
48930ae745SAkinobu Mita #define generic___test_and_clear_le_bit(nr, addr) \
49930ae745SAkinobu Mita 	__test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
50930ae745SAkinobu Mita 
51930ae745SAkinobu Mita #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
52