282
282
/* Little-endian versions */
284
static __inline__ int test_le_bit(unsigned long nr,
285
__const__ unsigned long *addr)
284
static __inline__ int test_bit_le(unsigned long nr,
285
__const__ void *addr)
287
287
__const__ unsigned char *tmp = (__const__ unsigned char *) addr;
288
288
return (tmp[nr >> 3] >> (nr & 7)) & 1;
291
#define __set_le_bit(nr, addr) \
292
__set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
293
#define __clear_le_bit(nr, addr) \
294
__clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
296
#define test_and_set_le_bit(nr, addr) \
297
test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
298
#define test_and_clear_le_bit(nr, addr) \
299
test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
301
#define __test_and_set_le_bit(nr, addr) \
302
__test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
303
#define __test_and_clear_le_bit(nr, addr) \
304
__test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
306
#define find_first_zero_le_bit(addr, size) generic_find_next_zero_le_bit((addr), (size), 0)
307
unsigned long generic_find_next_zero_le_bit(const unsigned long *addr,
291
static inline void __set_bit_le(int nr, void *addr)
293
__set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
296
static inline void __clear_bit_le(int nr, void *addr)
298
__clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
301
static inline int test_and_set_bit_le(int nr, void *addr)
303
return test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
306
static inline int test_and_clear_bit_le(int nr, void *addr)
308
return test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
311
static inline int __test_and_set_bit_le(int nr, void *addr)
313
return __test_and_set_bit(nr ^ BITOP_LE_SWIZZLE, addr);
316
static inline int __test_and_clear_bit_le(int nr, void *addr)
318
return __test_and_clear_bit(nr ^ BITOP_LE_SWIZZLE, addr);
321
#define find_first_zero_bit_le(addr, size) \
322
find_next_zero_bit_le((addr), (size), 0)
323
unsigned long find_next_zero_bit_le(const void *addr,
308
324
unsigned long size, unsigned long offset);
310
unsigned long generic_find_next_le_bit(const unsigned long *addr,
326
unsigned long find_next_bit_le(const void *addr,
311
327
unsigned long size, unsigned long offset);
312
328
/* Bitmap functions for the ext2 filesystem */
314
#define ext2_set_bit(nr,addr) \
315
__test_and_set_le_bit((nr), (unsigned long*)addr)
316
#define ext2_clear_bit(nr, addr) \
317
__test_and_clear_le_bit((nr), (unsigned long*)addr)
319
330
#define ext2_set_bit_atomic(lock, nr, addr) \
320
test_and_set_le_bit((nr), (unsigned long*)addr)
331
test_and_set_bit_le((nr), (unsigned long*)addr)
321
332
#define ext2_clear_bit_atomic(lock, nr, addr) \
322
test_and_clear_le_bit((nr), (unsigned long*)addr)
324
#define ext2_test_bit(nr, addr) test_le_bit((nr),(unsigned long*)addr)
326
#define ext2_find_first_zero_bit(addr, size) \
327
find_first_zero_le_bit((unsigned long*)addr, size)
328
#define ext2_find_next_zero_bit(addr, size, off) \
329
generic_find_next_zero_le_bit((unsigned long*)addr, size, off)
331
#define ext2_find_next_bit(addr, size, off) \
332
generic_find_next_le_bit((unsigned long *)addr, size, off)
333
/* Bitmap functions for the minix filesystem. */
335
#define minix_test_and_set_bit(nr,addr) \
336
__test_and_set_le_bit(nr, (unsigned long *)addr)
337
#define minix_set_bit(nr,addr) \
338
__set_le_bit(nr, (unsigned long *)addr)
339
#define minix_test_and_clear_bit(nr,addr) \
340
__test_and_clear_le_bit(nr, (unsigned long *)addr)
341
#define minix_test_bit(nr,addr) \
342
test_le_bit(nr, (unsigned long *)addr)
344
#define minix_find_first_zero_bit(addr,size) \
345
find_first_zero_le_bit((unsigned long *)addr, size)
333
test_and_clear_bit_le((nr), (unsigned long*)addr)
347
335
#include <asm-generic/bitops/sched.h>