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 #define BITOP_WORD(nr) ((nr) / BITS_PER_LONG) 8930ae745SAkinobu Mita #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) 9930ae745SAkinobu Mita 10930ae745SAkinobu Mita #if defined(__LITTLE_ENDIAN) 11930ae745SAkinobu Mita 12930ae745SAkinobu Mita #define generic_test_le_bit(nr, addr) test_bit(nr, addr) 13930ae745SAkinobu Mita #define generic___set_le_bit(nr, addr) __set_bit(nr, addr) 14930ae745SAkinobu Mita #define generic___clear_le_bit(nr, addr) __clear_bit(nr, addr) 15930ae745SAkinobu Mita 16930ae745SAkinobu Mita #define generic_test_and_set_le_bit(nr, addr) test_and_set_bit(nr, addr) 17930ae745SAkinobu Mita #define generic_test_and_clear_le_bit(nr, addr) test_and_clear_bit(nr, addr) 18930ae745SAkinobu Mita 19930ae745SAkinobu Mita #define generic___test_and_set_le_bit(nr, addr) __test_and_set_bit(nr, addr) 20930ae745SAkinobu Mita #define generic___test_and_clear_le_bit(nr, addr) __test_and_clear_bit(nr, addr) 21930ae745SAkinobu Mita 22930ae745SAkinobu Mita #define generic_find_next_zero_le_bit(addr, size, offset) find_next_zero_bit(addr, size, offset) 23*aa02ad67SAneesh Kumar K.V #define generic_find_next_le_bit(addr, size, offset) \ 24*aa02ad67SAneesh Kumar K.V find_next_bit(addr, size, offset) 25930ae745SAkinobu Mita 26930ae745SAkinobu Mita #elif defined(__BIG_ENDIAN) 27930ae745SAkinobu Mita 28930ae745SAkinobu Mita #define generic_test_le_bit(nr, addr) \ 29930ae745SAkinobu Mita test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) 30930ae745SAkinobu Mita #define generic___set_le_bit(nr, addr) \ 31930ae745SAkinobu Mita __set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) 32930ae745SAkinobu Mita #define generic___clear_le_bit(nr, addr) \ 33930ae745SAkinobu Mita __clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) 34930ae745SAkinobu Mita 35930ae745SAkinobu Mita #define generic_test_and_set_le_bit(nr, addr) \ 36930ae745SAkinobu Mita test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) 37930ae745SAkinobu Mita #define generic_test_and_clear_le_bit(nr, addr) \ 38930ae745SAkinobu Mita test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) 39930ae745SAkinobu Mita 40930ae745SAkinobu Mita #define generic___test_and_set_le_bit(nr, addr) \ 41930ae745SAkinobu Mita __test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) 42930ae745SAkinobu Mita #define generic___test_and_clear_le_bit(nr, addr) \ 43930ae745SAkinobu Mita __test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) 44930ae745SAkinobu Mita 45930ae745SAkinobu Mita extern unsigned long generic_find_next_zero_le_bit(const unsigned long *addr, 46930ae745SAkinobu Mita unsigned long size, unsigned long offset); 47*aa02ad67SAneesh Kumar K.V extern unsigned long generic_find_next_le_bit(const unsigned long *addr, 48*aa02ad67SAneesh Kumar K.V unsigned long size, unsigned long offset); 49930ae745SAkinobu Mita 50930ae745SAkinobu Mita #else 51930ae745SAkinobu Mita #error "Please fix <asm/byteorder.h>" 52930ae745SAkinobu Mita #endif 53930ae745SAkinobu Mita 54930ae745SAkinobu Mita #define generic_find_first_zero_le_bit(addr, size) \ 55930ae745SAkinobu Mita generic_find_next_zero_le_bit((addr), (size), 0) 56930ae745SAkinobu Mita 57930ae745SAkinobu Mita #endif /* _ASM_GENERIC_BITOPS_LE_H_ */ 58