blob: 394ac3ebcbdefbf9a9dc19ea84f2da6b9d8f279e [file] [log] [blame]
Akinobu Mita930ae742006-03-26 01:39:15 -08001#ifndef _ASM_GENERIC_BITOPS_LE_H_
2#define _ASM_GENERIC_BITOPS_LE_H_
3
4#include <asm/types.h>
5#include <asm/byteorder.h>
6
Akinobu Mita930ae742006-03-26 01:39:15 -08007#if defined(__LITTLE_ENDIAN)
8
Akinobu Mita63ab5952011-03-23 16:41:46 -07009#define BITOP_LE_SWIZZLE 0
Akinobu Mita930ae742006-03-26 01:39:15 -080010
Akinobu Mitac4945b92011-03-23 16:41:47 -070011#define find_next_zero_bit_le(addr, size, offset) \
Akinobu Mita63ab5952011-03-23 16:41:46 -070012 find_next_zero_bit(addr, size, offset)
Akinobu Mitac4945b92011-03-23 16:41:47 -070013#define find_next_bit_le(addr, size, offset) \
Akinobu Mita63ab5952011-03-23 16:41:46 -070014 find_next_bit(addr, size, offset)
Akinobu Mitac4945b92011-03-23 16:41:47 -070015#define find_first_zero_bit_le(addr, size) \
Akinobu Mita63ab5952011-03-23 16:41:46 -070016 find_first_zero_bit(addr, size)
Akinobu Mita930ae742006-03-26 01:39:15 -080017
18#elif defined(__BIG_ENDIAN)
19
Akinobu Mita63ab5952011-03-23 16:41:46 -070020#define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
21
Akinobu Mitac4945b92011-03-23 16:41:47 -070022extern unsigned long find_next_zero_bit_le(const unsigned long *addr,
Akinobu Mita63ab5952011-03-23 16:41:46 -070023 unsigned long size, unsigned long offset);
Akinobu Mitac4945b92011-03-23 16:41:47 -070024extern unsigned long find_next_bit_le(const unsigned long *addr,
Akinobu Mita63ab5952011-03-23 16:41:46 -070025 unsigned long size, unsigned long offset);
26
Akinobu Mitac4945b92011-03-23 16:41:47 -070027#define find_first_zero_bit_le(addr, size) \
28 find_next_zero_bit_le((addr), (size), 0)
Akinobu Mita63ab5952011-03-23 16:41:46 -070029
30#else
31#error "Please fix <asm/byteorder.h>"
32#endif
33
Akinobu Mitac4945b92011-03-23 16:41:47 -070034#define test_bit_le(nr, addr) \
Akinobu Mita930ae742006-03-26 01:39:15 -080035 test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
Akinobu Mitac4945b92011-03-23 16:41:47 -070036#define __set_bit_le(nr, addr) \
Akinobu Mita930ae742006-03-26 01:39:15 -080037 __set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
Akinobu Mitac4945b92011-03-23 16:41:47 -070038#define __clear_bit_le(nr, addr) \
Akinobu Mita930ae742006-03-26 01:39:15 -080039 __clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
40
Akinobu Mitac4945b92011-03-23 16:41:47 -070041#define test_and_set_bit_le(nr, addr) \
Akinobu Mita930ae742006-03-26 01:39:15 -080042 test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
Akinobu Mitac4945b92011-03-23 16:41:47 -070043#define test_and_clear_bit_le(nr, addr) \
Akinobu Mita930ae742006-03-26 01:39:15 -080044 test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
45
Akinobu Mitac4945b92011-03-23 16:41:47 -070046#define __test_and_set_bit_le(nr, addr) \
Akinobu Mita930ae742006-03-26 01:39:15 -080047 __test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
Akinobu Mitac4945b92011-03-23 16:41:47 -070048#define __test_and_clear_bit_le(nr, addr) \
Akinobu Mita930ae742006-03-26 01:39:15 -080049 __test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
50
Akinobu Mita930ae742006-03-26 01:39:15 -080051#endif /* _ASM_GENERIC_BITOPS_LE_H_ */