Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  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. #define generic_find_next_le_bit(addr, size, offset) \
  24.                         find_next_bit(addr, size, offset)
  25.  
  26. #elif defined(__BIG_ENDIAN)
  27.  
  28. #define generic_test_le_bit(nr, addr) \
  29.         test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  30. #define generic___set_le_bit(nr, addr) \
  31.         __set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  32. #define generic___clear_le_bit(nr, addr) \
  33.         __clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  34.  
  35. #define generic_test_and_set_le_bit(nr, addr) \
  36.         test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  37. #define generic_test_and_clear_le_bit(nr, addr) \
  38.         test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  39.  
  40. #define generic___test_and_set_le_bit(nr, addr) \
  41.         __test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  42. #define generic___test_and_clear_le_bit(nr, addr) \
  43.         __test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
  44.  
  45. extern unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
  46.                 unsigned long size, unsigned long offset);
  47. extern unsigned long generic_find_next_le_bit(const unsigned long *addr,
  48.                 unsigned long size, unsigned long offset);
  49.  
  50. #else
  51. #error "Please fix <asm/byteorder.h>"
  52. #endif
  53.  
  54. #define generic_find_first_zero_le_bit(addr, size) \
  55.         generic_find_next_zero_le_bit((addr), (size), 0)
  56.  
  57. #endif /* _ASM_GENERIC_BITOPS_LE_H_ */
  58.