The patch titled s390: introduce little-endian bitops has been removed from the -mm tree. Its filename was s390-introduce-little-endian-bitops.patch This patch was dropped because an updated version will be merged The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: s390: introduce little-endian bitops From: Akinobu Mita <akinobu.mita@xxxxxxxxx> Introduce little-endian bit operations by renaming native ext2 bit operations. The ext2 bit operations are kept as wrapper macros using little-endian bit operations to maintain bisectability until the conversions are finished. Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx> Acked-by: Arnd Bergmann <arnd@xxxxxxxx> Cc: Martin Schwidefsky <schwidefsky@xxxxxxxxxx> Cc: Heiko Carstens <heiko.carstens@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/s390/include/asm/bitops.h | 57 +++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 17 deletions(-) diff -puN arch/s390/include/asm/bitops.h~s390-introduce-little-endian-bitops arch/s390/include/asm/bitops.h --- a/arch/s390/include/asm/bitops.h~s390-introduce-little-endian-bitops +++ a/arch/s390/include/asm/bitops.h @@ -742,18 +742,22 @@ static inline int sched_find_first_bit(u * 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24 */ -#define ext2_set_bit(nr, addr) \ - __test_and_set_bit((nr)^(__BITOPS_WORDSIZE - 8), (unsigned long *)addr) -#define ext2_set_bit_atomic(lock, nr, addr) \ - test_and_set_bit((nr)^(__BITOPS_WORDSIZE - 8), (unsigned long *)addr) -#define ext2_clear_bit(nr, addr) \ - __test_and_clear_bit((nr)^(__BITOPS_WORDSIZE - 8), (unsigned long *)addr) -#define ext2_clear_bit_atomic(lock, nr, addr) \ - test_and_clear_bit((nr)^(__BITOPS_WORDSIZE - 8), (unsigned long *)addr) -#define ext2_test_bit(nr, addr) \ - test_bit((nr)^(__BITOPS_WORDSIZE - 8), (unsigned long *)addr) +#define __set_le_bit(nr, addr) \ + __set_bit((nr)^(__BITOPS_WORDSIZE - 8), (addr)) +#define __clear_le_bit(nr, addr) \ + __clear_bit((nr)^(__BITOPS_WORDSIZE - 8), (addr)) +#define __test_and_set_le_bit(nr, addr) \ + __test_and_set_bit((nr)^(__BITOPS_WORDSIZE - 8), (addr)) +#define test_and_set_le_bit(nr, addr) \ + test_and_set_bit((nr)^(__BITOPS_WORDSIZE - 8), (addr)) +#define __test_and_clear_le_bit(nr, addr) \ + __test_and_clear_bit((nr)^(__BITOPS_WORDSIZE - 8), (addr)) +#define test_and_clear_le_bit(nr, addr) \ + test_and_clear_bit((nr)^(__BITOPS_WORDSIZE - 8), (addr)) +#define test_le_bit(nr, addr) \ + test_bit((nr)^(__BITOPS_WORDSIZE - 8), (addr)) -static inline int ext2_find_first_zero_bit(void *vaddr, unsigned int size) +static inline int find_first_zero_le_bit(void *vaddr, unsigned int size) { unsigned long bytes, bits; @@ -764,7 +768,7 @@ static inline int ext2_find_first_zero_b return (bits < size) ? bits : size; } -static inline int ext2_find_next_zero_bit(void *vaddr, unsigned long size, +static inline int find_next_zero_le_bit(void *vaddr, unsigned long size, unsigned long offset) { unsigned long *addr = vaddr, *p; @@ -790,11 +794,10 @@ static inline int ext2_find_next_zero_bi size -= __BITOPS_WORDSIZE; p++; } - return offset + ext2_find_first_zero_bit(p, size); + return offset + find_first_zero_le_bit(p, size); } -static inline unsigned long ext2_find_first_bit(void *vaddr, - unsigned long size) +static inline unsigned long find_first_le_bit(void *vaddr, unsigned long size) { unsigned long bytes, bits; @@ -805,7 +808,7 @@ static inline unsigned long ext2_find_fi return (bits < size) ? bits : size; } -static inline int ext2_find_next_bit(void *vaddr, unsigned long size, +static inline int find_next_le_bit(void *vaddr, unsigned long size, unsigned long offset) { unsigned long *addr = vaddr, *p; @@ -831,9 +834,29 @@ static inline int ext2_find_next_bit(voi size -= __BITOPS_WORDSIZE; p++; } - return offset + ext2_find_first_bit(p, size); + return offset + find_first_le_bit(p, size); } +#define ext2_set_bit(nr, addr) \ + __test_and_set_le_bit((nr), (unsigned long *)(addr)) +#define ext2_set_bit_atomic(lock, nr, addr) \ + test_and_set_le_bit((nr), (unsigned long *)(addr)) +#define ext2_clear_bit(nr, addr) \ + __test_and_clear_le_bit((nr), (unsigned long *)(addr)) +#define ext2_clear_bit_atomic(lock, nr, addr) \ + test_and_clear_le_bit((nr), (unsigned long *)(addr)) +#define ext2_test_bit(nr, addr) \ + test_le_bit((nr), (unsigned long *)(addr)) + +#define ext2_find_first_zero_bit(vaddr, size) \ + find_first_zero_le_bit((unsigned long *)(vaddr), (size)) +#define ext2_find_next_zero_bit(vaddr, size, offset) \ + find_next_zero_le_bit((unsigned long *)(vaddr), (size), (offset)) +#define ext2_find_first_bit(vaddr, size) \ + find_first_le_bit((unsigned long *)(vaddr), (size)) +#define ext2_find_next_bit(vaddr, size, offset) \ + find_next_le_bit((unsigned long *)(vaddr), (size), (offset)) + #include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ _ Patches currently in -mm which might be from akinobu.mita@xxxxxxxxx are origin.patch arm-introduce-little-endian-bitops.patch m68k-introduce-little-endian-bitops.patch bitops-introduce-config_generic_find_le_bit.patch m68knommu-introduce-little-endian-bitops.patch bitops-introduce-little-endian-bitops-for-most-architectures.patch rds-stop-including-asm-generic-bitops-leh.patch kvm-stop-including-asm-generic-bitops-leh.patch asm-generic-use-little-endian-bitops.patch ext3-use-little-endian-bitops.patch ext4-use-little-endian-bitops.patch ocfs2-use-little-endian-bitops.patch nilfs2-use-little-endian-bitops.patch reiserfs-use-little-endian-bitops.patch udf-use-little-endian-bitops.patch ufs-use-little-endian-bitops.patch md-use-little-endian-bit-operations.patch dm-use-little-endian-bit-operations.patch bitops-remove-ext2-non-atomic-bitops-from-asm-bitopsh.patch m68k-remove-inline-asm-from-minix_find_first_zero_bit.patch bitops-remove-minix-bitops-from-asm-bitopsh.patch bitops-use-find_first_zero_bit-instead-of-find_next_zero_bitaddr-size-0.patch spufs-use-simple_write_to_buffer.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html