Home | History | Annotate | Download | only in bitops
      1 #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 
      7 #define BITOP_WORD(nr)		((nr) / BITS_PER_LONG)
      8 #define BITOP_LE_SWIZZLE	((BITS_PER_LONG-1) & ~0x7)
      9 
     10 #if defined(__LITTLE_ENDIAN)
     11 
     12 #define generic_test_le_bit(nr, addr) test_bit(nr, addr)
     13 #define generic___set_le_bit(nr, addr) __set_bit(nr, addr)
     14 #define generic___clear_le_bit(nr, addr) __clear_bit(nr, addr)
     15 
     16 #define generic_test_and_set_le_bit(nr, addr) test_and_set_bit(nr, addr)
     17 #define generic_test_and_clear_le_bit(nr, addr) test_and_clear_bit(nr, addr)
     18 
     19 #define generic___test_and_set_le_bit(nr, addr) __test_and_set_bit(nr, addr)
     20 #define generic___test_and_clear_le_bit(nr, addr) __test_and_clear_bit(nr, addr)
     21 
     22 #define generic_find_next_zero_le_bit(addr, size, offset) find_next_zero_bit(addr, size, offset)
     23 
     24 #elif defined(__BIG_ENDIAN)
     25 
     26 #define generic_test_le_bit(nr, addr) \
     27 	test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
     28 #define generic___set_le_bit(nr, addr) \
     29 	__set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
     30 #define generic___clear_le_bit(nr, addr) \
     31 	__clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
     32 
     33 #define generic_test_and_set_le_bit(nr, addr) \
     34 	test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
     35 #define generic_test_and_clear_le_bit(nr, addr) \
     36 	test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
     37 
     38 #define generic___test_and_set_le_bit(nr, addr) \
     39 	__test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
     40 #define generic___test_and_clear_le_bit(nr, addr) \
     41 	__test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
     42 
     43 extern unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
     44 		unsigned long size, unsigned long offset);
     45 
     46 #else
     47 #error "Please fix <asm/byteorder.h>"
     48 #endif
     49 
     50 #define generic_find_first_zero_le_bit(addr, size) \
     51         generic_find_next_zero_le_bit((addr), (size), 0)
     52 
     53 #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
     54