xref: /openbmc/linux/include/asm-generic/bitops/le.h (revision 03ab8e6297acd1bc0eedaa050e2a1635c576fd11)
1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2930ae745SAkinobu Mita #ifndef _ASM_GENERIC_BITOPS_LE_H_
3930ae745SAkinobu Mita #define _ASM_GENERIC_BITOPS_LE_H_
4930ae745SAkinobu Mita 
5930ae745SAkinobu Mita #include <asm/types.h>
6930ae745SAkinobu Mita #include <asm/byteorder.h>
7930ae745SAkinobu Mita 
8930ae745SAkinobu Mita #if defined(__LITTLE_ENDIAN)
9930ae745SAkinobu Mita 
1063ab595fSAkinobu Mita #define BITOP_LE_SWIZZLE	0
11930ae745SAkinobu Mita 
12930ae745SAkinobu Mita #elif defined(__BIG_ENDIAN)
13930ae745SAkinobu Mita 
1463ab595fSAkinobu Mita #define BITOP_LE_SWIZZLE	((BITS_PER_LONG-1) & ~0x7)
1563ab595fSAkinobu Mita 
1619de85efSAkinobu Mita #endif
1719de85efSAkinobu Mita 
1863ab595fSAkinobu Mita 
test_bit_le(int nr,const void * addr)19a56560b3SAkinobu Mita static inline int test_bit_le(int nr, const void *addr)
20a56560b3SAkinobu Mita {
21a56560b3SAkinobu Mita 	return test_bit(nr ^ BITOP_LE_SWIZZLE, addr);
22a56560b3SAkinobu Mita }
23930ae745SAkinobu Mita 
set_bit_le(int nr,void * addr)24b9034bf1STakuya Yoshikawa static inline void set_bit_le(int nr, void *addr)
25b9034bf1STakuya Yoshikawa {
26b9034bf1STakuya Yoshikawa 	set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
27b9034bf1STakuya Yoshikawa }
28b9034bf1STakuya Yoshikawa 
clear_bit_le(int nr,void * addr)29b9034bf1STakuya Yoshikawa static inline void clear_bit_le(int nr, void *addr)
30b9034bf1STakuya Yoshikawa {
31b9034bf1STakuya Yoshikawa 	clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
32b9034bf1STakuya Yoshikawa }
33b9034bf1STakuya Yoshikawa 
__set_bit_le(int nr,void * addr)34a56560b3SAkinobu Mita static inline void __set_bit_le(int nr, void *addr)
35a56560b3SAkinobu Mita {
36a56560b3SAkinobu Mita 	__set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
37a56560b3SAkinobu Mita }
38930ae745SAkinobu Mita 
__clear_bit_le(int nr,void * addr)39a56560b3SAkinobu Mita static inline void __clear_bit_le(int nr, void *addr)
40a56560b3SAkinobu Mita {
41a56560b3SAkinobu Mita 	__clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
42a56560b3SAkinobu Mita }
43a56560b3SAkinobu Mita 
test_and_set_bit_le(int nr,void * addr)44a56560b3SAkinobu Mita static inline int test_and_set_bit_le(int nr, void *addr)
45a56560b3SAkinobu Mita {
46a56560b3SAkinobu Mita 	return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
47a56560b3SAkinobu Mita }
48a56560b3SAkinobu Mita 
test_and_clear_bit_le(int nr,void * addr)49a56560b3SAkinobu Mita static inline int test_and_clear_bit_le(int nr, void *addr)
50a56560b3SAkinobu Mita {
51a56560b3SAkinobu Mita 	return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
52a56560b3SAkinobu Mita }
53a56560b3SAkinobu Mita 
__test_and_set_bit_le(int nr,void * addr)54a56560b3SAkinobu Mita static inline int __test_and_set_bit_le(int nr, void *addr)
55a56560b3SAkinobu Mita {
56a56560b3SAkinobu Mita 	return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
57a56560b3SAkinobu Mita }
58a56560b3SAkinobu Mita 
__test_and_clear_bit_le(int nr,void * addr)59a56560b3SAkinobu Mita static inline int __test_and_clear_bit_le(int nr, void *addr)
60a56560b3SAkinobu Mita {
61a56560b3SAkinobu Mita 	return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
62a56560b3SAkinobu Mita }
63930ae745SAkinobu Mita 
64930ae745SAkinobu Mita #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
65