le.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef _ASM_GENERIC_BITOPS_LE_H_
  2. #define _ASM_GENERIC_BITOPS_LE_H_
  3. #include <asm/types.h>
  4. #include <asm/byteorder.h>
  5. #define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
  6. #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
  7. #if defined(__LITTLE_ENDIAN)
  8. #define generic_test_le_bit(nr, addr) test_bit(nr, addr)
  9. #define generic___set_le_bit(nr, addr) __set_bit(nr, addr)
  10. #define generic___clear_le_bit(nr, addr) __clear_bit(nr, addr)
  11. #define generic_test_and_set_le_bit(nr, addr) test_and_set_bit(nr, addr)
  12. #define generic_test_and_clear_le_bit(nr, addr) test_and_clear_bit(nr, addr)
  13. #define generic___test_and_set_le_bit(nr, addr) __test_and_set_bit(nr, addr)
  14. #define generic___test_and_clear_le_bit(nr, addr) __test_and_clear_bit(nr, addr)
  15. #define generic_find_next_zero_le_bit(addr, size, offset) find_next_zero_bit(addr, size, offset)
  16. #define generic_find_next_le_bit(addr, size, offset) \
  17. find_next_bit(addr, size, offset)
  18. #elif defined(__BIG_ENDIAN)
  19. #define generic_test_le_bit(nr, addr) \
  20. test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  21. #define generic___set_le_bit(nr, addr) \
  22. __set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  23. #define generic___clear_le_bit(nr, addr) \
  24. __clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  25. #define generic_test_and_set_le_bit(nr, addr) \
  26. test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  27. #define generic_test_and_clear_le_bit(nr, addr) \
  28. test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  29. #define generic___test_and_set_le_bit(nr, addr) \
  30. __test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  31. #define generic___test_and_clear_le_bit(nr, addr) \
  32. __test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  33. extern unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
  34. unsigned long size, unsigned long offset);
  35. extern unsigned long generic_find_next_le_bit(const unsigned long *addr,
  36. unsigned long size, unsigned long offset);
  37. #else
  38. #error "Please fix <asm/byteorder.h>"
  39. #endif
  40. #define generic_find_first_zero_le_bit(addr, size) \
  41. generic_find_next_zero_le_bit((addr), (size), 0)
  42. #endif /* _ASM_GENERIC_BITOPS_LE_H_ */