* [PATCH 05/22] m68k: introduce le bitops [not found] <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com> @ 2010-10-15 9:46 ` Akinobu Mita 2010-10-15 9:46 ` [PATCH 06/22] m68knommu: introduce little endian bitops Akinobu Mita ` (2 subsequent siblings) 3 siblings, 0 replies; 12+ messages in thread From: Akinobu Mita @ 2010-10-15 9:46 UTC (permalink / raw) To: linux-kernel, linux-arch, Arnd Bergmann, Christoph Hellwig, Andrew Morton Cc: Akinobu Mita, Geert Uytterhoeven, Roman Zippel, linux-m68k Introduce little endian bit operations by renaming native ext2 bit operations. The ext2 bit operations are kept by using little endian bit operations until the conversions are finished. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: linux-m68k@lists.linux-m68k.org --- arch/m68k/include/asm/bitops_mm.h | 64 +++++++++++++++++++++++++----------- 1 files changed, 44 insertions(+), 20 deletions(-) diff --git a/arch/m68k/include/asm/bitops_mm.h b/arch/m68k/include/asm/bitops_mm.h index f1010ab..8b3059d 100644 --- a/arch/m68k/include/asm/bitops_mm.h +++ b/arch/m68k/include/asm/bitops_mm.h @@ -359,24 +359,28 @@ static inline int minix_test_bit(int nr, const void *vaddr) return (p[nr >> 4] & (1U << (nr & 15))) != 0; } -/* Bitmap functions for the ext2 filesystem. */ - -#define ext2_set_bit(nr, addr) __test_and_set_bit((nr) ^ 24, (unsigned long *)(addr)) -#define ext2_set_bit_atomic(lock, nr, addr) test_and_set_bit((nr) ^ 24, (unsigned long *)(addr)) -#define ext2_clear_bit(nr, addr) __test_and_clear_bit((nr) ^ 24, (unsigned long *)(addr)) -#define ext2_clear_bit_atomic(lock, nr, addr) test_and_clear_bit((nr) ^ 24, (unsigned long *)(addr)) -#define ext2_find_next_zero_bit(addr, size, offset) \ - find_next_zero_le_bit((unsigned long *)addr, size, offset) -#define ext2_find_next_bit(addr, size, offset) \ - find_next_le_bit((unsigned long *)addr, size, offset) - -static inline int ext2_test_bit(int nr, const void *vaddr) +/* Bitmap functions for little endian. */ + +#define __set_le_bit(nr, addr) \ + __set_bit((nr) ^ 24, (addr)) +#define __clear_le_bit(nr, addr) \ + __clear_bit((nr) ^ 24, (addr)) +#define __test_and_set_le_bit(nr, addr) \ + __test_and_set_bit((nr) ^ 24, (addr)) +#define test_and_set_le_bit(lock, nr, addr) \ + test_and_set_bit((nr) ^ 24, (addr)) +#define __test_and_clear_le_bit(nr, addr) \ + __test_and_clear_bit((nr) ^ 24, (addr)) +#define test_and_clear_le_bit(lock, nr, addr) \ + test_and_clear_bit((nr) ^ 24, (addr)) + +static inline int test_le_bit(int nr, const void *vaddr) { const unsigned char *p = vaddr; return (p[nr >> 3] & (1U << (nr & 7))) != 0; } -static inline int ext2_find_first_zero_bit(const void *vaddr, unsigned size) +static inline int find_first_zero_le_bit(const void *vaddr, unsigned size) { const unsigned long *p = vaddr, *addr = vaddr; int res; @@ -393,7 +397,7 @@ static inline int ext2_find_first_zero_bit(const void *vaddr, unsigned size) --p; for (res = 0; res < 32; res++) - if (!ext2_test_bit (res, p)) + if (!test_le_bit(res, p)) break; return (p - addr) * 32 + res; } @@ -410,16 +414,16 @@ static inline unsigned long find_next_zero_le_bit(const unsigned long *addr, if (bit) { /* Look for zero in first longword */ for (res = bit; res < 32; res++) - if (!ext2_test_bit (res, p)) + if (!test_le_bit(res, p)) return (p - addr) * 32 + res; p++; } /* No zero yet, search remaining full bytes for a zero */ - res = ext2_find_first_zero_bit (p, size - 32 * (p - addr)); + res = find_first_zero_le_bit(p, size - 32 * (p - addr)); return (p - addr) * 32 + res; } -static inline int ext2_find_first_bit(const void *vaddr, unsigned size) +static inline int find_first_le_bit(const void *vaddr, unsigned size) { const unsigned long *p = vaddr, *addr = vaddr; int res; @@ -435,7 +439,7 @@ static inline int ext2_find_first_bit(const void *vaddr, unsigned size) --p; for (res = 0; res < 32; res++) - if (ext2_test_bit(res, p)) + if (test_le_bit(res, p)) break; return (p - addr) * 32 + res; } @@ -452,15 +456,35 @@ static inline unsigned long find_next_le_bit(const unsigned long *addr, if (bit) { /* Look for one in first longword */ for (res = bit; res < 32; res++) - if (ext2_test_bit(res, p)) + if (test_le_bit(res, p)) return (p - addr) * 32 + res; p++; } /* No set bit yet, search remaining full bytes for a set bit */ - res = ext2_find_first_bit(p, size - 32 * (p - addr)); + res = find_first_le_bit(p, size - 32 * (p - addr)); return (p - addr) * 32 + res; } +/* Bitmap functions for the ext2 filesystem. */ + +#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_find_next_zero_bit(addr, size, offset) \ + find_next_zero_le_bit((unsigned long *)(addr), size, offset) +#define ext2_find_next_bit(addr, size, offset) \ + find_next_le_bit((unsigned long *)(addr), size, offset) +#define ext2_test_bit(nr, vaddr) test_le_bit(nr, vaddr) +#define ext2_find_first_zero_bit(vaddr, size) \ + find_first_zero_le_bit((unsigned long *)(vaddr), size) +#define ext2_find_first_bit(vaddr, size) \ + find_first_le_bit((unsigned long *)(vaddr), size) + #endif /* __KERNEL__ */ #endif /* _M68K_BITOPS_H */ -- 1.7.1.231.gd0b16 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 06/22] m68knommu: introduce little endian bitops [not found] <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com> 2010-10-15 9:46 ` [PATCH 05/22] m68k: introduce le bitops Akinobu Mita @ 2010-10-15 9:46 ` Akinobu Mita 2010-10-15 9:46 ` [PATCH 21/22] m68k: convert minix bitops to use " Akinobu Mita [not found] ` <1287135981-17604-23-git-send-email-akinobu.mita@gmail.com> 3 siblings, 0 replies; 12+ messages in thread From: Akinobu Mita @ 2010-10-15 9:46 UTC (permalink / raw) To: linux-kernel, linux-arch, Arnd Bergmann, Christoph Hellwig, Andrew Morton Cc: Akinobu Mita, Greg Ungerer, Geert Uytterhoeven, Roman Zippel, linux-m68k Introduce little endian bit operations by renaming native ext2 bit operations. The ext2 bit operations are kept by using little endian bit operations until the conversions are finished. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Greg Ungerer <gerg@uclinux.org> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: linux-m68k@lists.linux-m68k.org --- arch/m68k/include/asm/bitops_no.h | 40 +++++++++++++++++++++++++++++------- 1 files changed, 32 insertions(+), 8 deletions(-) diff --git a/arch/m68k/include/asm/bitops_no.h b/arch/m68k/include/asm/bitops_no.h index 292e1ce..9f5eb02 100644 --- a/arch/m68k/include/asm/bitops_no.h +++ b/arch/m68k/include/asm/bitops_no.h @@ -196,7 +196,15 @@ static __inline__ int __test_bit(int nr, const volatile unsigned long * addr) #include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/lock.h> -static __inline__ int ext2_set_bit(int nr, volatile void * addr) +#define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7) + +#define __set_le_bit(nr, addr) \ + __set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) + +#define __clear_le_bit(nr, addr) \ + __clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr)) + +static inline int __test_and_set_le_bit(int nr, volatile void *addr) { char retval; @@ -215,7 +223,7 @@ static __inline__ int ext2_set_bit(int nr, volatile void * addr) return retval; } -static __inline__ int ext2_clear_bit(int nr, volatile void * addr) +static inline int __test_and_clear_le_bit(int nr, volatile void *addr) { char retval; @@ -238,7 +246,7 @@ static __inline__ int ext2_clear_bit(int nr, volatile void * addr) ({ \ int ret; \ spin_lock(lock); \ - ret = ext2_set_bit((nr), (addr)); \ + ret = __test_and_set_le_bit((nr), (addr)); \ spin_unlock(lock); \ ret; \ }) @@ -247,12 +255,12 @@ static __inline__ int ext2_clear_bit(int nr, volatile void * addr) ({ \ int ret; \ spin_lock(lock); \ - ret = ext2_clear_bit((nr), (addr)); \ + ret = __test_and_clear_le_bit((nr), (addr)); \ spin_unlock(lock); \ ret; \ }) -static __inline__ int ext2_test_bit(int nr, const volatile void * addr) +static inline int test_le_bit(int nr, const volatile void *addr) { char retval; @@ -271,10 +279,10 @@ static __inline__ int ext2_test_bit(int nr, const volatile void * addr) return retval; } -#define ext2_find_first_zero_bit(addr, size) \ - ext2_find_next_zero_bit((addr), (size), 0) +#define find_first_zero_le_bit(addr, size) \ + find_next_zero_le_bit((addr), (size), 0) -static __inline__ unsigned long ext2_find_next_zero_bit(void *addr, unsigned long size, unsigned long offset) +static inline unsigned long find_next_zero_le_bit(void *addr, unsigned long size, unsigned long offset) { unsigned long *p = ((unsigned long *) addr) + (offset >> 5); unsigned long result = offset & ~31UL; @@ -324,8 +332,24 @@ found_middle: return result + ffz(__swab32(tmp)); } +#define ext2_set_bit(nr, addr) \ + __test_and_set_le_bit(nr, addr) + +#define ext2_clear_bit(nr, addr) \ + test_and_clear_le_bit(nr, addr) + +#define ext2_test_bit(nr, addr) \ + test_le_bit(nr, addr) + +#define ext2_find_first_zero_bit(addr, size) \ + find_first_zero_le_bit(addr, size) + +#define ext2_find_next_zero_bit(addr, size, offset) \ + find_next_zero_le_bit(addr, size, offset) + #define ext2_find_next_bit(addr, size, off) \ find_next_le_bit((unsigned long *)(addr), (size), (off)) + #include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ -- 1.7.1.231.gd0b16 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH 21/22] m68k: convert minix bitops to use little endian bitops [not found] <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com> 2010-10-15 9:46 ` [PATCH 05/22] m68k: introduce le bitops Akinobu Mita 2010-10-15 9:46 ` [PATCH 06/22] m68knommu: introduce little endian bitops Akinobu Mita @ 2010-10-15 9:46 ` Akinobu Mita 2010-10-18 8:58 ` Andreas Schwab [not found] ` <1287135981-17604-23-git-send-email-akinobu.mita@gmail.com> 3 siblings, 1 reply; 12+ messages in thread From: Akinobu Mita @ 2010-10-15 9:46 UTC (permalink / raw) To: linux-kernel, linux-arch, Arnd Bergmann, Christoph Hellwig, Andrew Morton Cc: Akinobu Mita, Geert Uytterhoeven, Roman Zippel, linux-m68k The inode and block bitmap for minix filesystem is little endian byte order on m68k. This converts them to use little endian bit operations. Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: linux-m68k@lists.linux-m68k.org --- arch/m68k/include/asm/bitops_mm.h | 38 ++++++++---------------------------- 1 files changed, 9 insertions(+), 29 deletions(-) diff --git a/arch/m68k/include/asm/bitops_mm.h b/arch/m68k/include/asm/bitops_mm.h index e2cc3be..2451f7f 100644 --- a/arch/m68k/include/asm/bitops_mm.h +++ b/arch/m68k/include/asm/bitops_mm.h @@ -327,37 +327,17 @@ static inline int __fls(int x) /* Bitmap functions for the minix filesystem */ -static inline int minix_find_first_zero_bit(const void *vaddr, unsigned size) -{ - const unsigned short *p = vaddr, *addr = vaddr; - int res; - unsigned short num; - - if (!size) - return 0; - - size = (size >> 4) + ((size & 15) > 0); - while (*p++ == 0xffff) - { - if (--size == 0) - return (p - addr) << 4; - } +#define minix_find_first_zero_bit(vaddr, size) \ + find_first_zero_le_bit(vaddr, (size)) - num = ~*--p; - __asm__ __volatile__ ("bfffo %1{#16,#16},%0" - : "=d" (res) : "d" (num & -num)); - return ((p - addr) << 4) + (res ^ 31); -} +#define minix_test_and_set_bit(nr, addr) \ + __test_and_set_le_bit((nr), (unsigned long *)(addr)) +#define minix_set_bit(nr, addr) \ + __set_le_bit((nr), (unsigned long *)(addr)) +#define minix_test_and_clear_bit(nr, addr) \ + __test_and_clear_le_bit((nr), (unsigned long *)(addr)) -#define minix_test_and_set_bit(nr, addr) __test_and_set_bit((nr) ^ 16, (unsigned long *)(addr)) -#define minix_set_bit(nr,addr) __set_bit((nr) ^ 16, (unsigned long *)(addr)) -#define minix_test_and_clear_bit(nr, addr) __test_and_clear_bit((nr) ^ 16, (unsigned long *)(addr)) - -static inline int minix_test_bit(int nr, const void *vaddr) -{ - const unsigned short *p = vaddr; - return (p[nr >> 4] & (1U << (nr & 15))) != 0; -} +#define minix_test_bit(nr, addr) test_le_bit(nr, addr) /* Bitmap functions for little endian. */ -- 1.7.1.231.gd0b16 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH 21/22] m68k: convert minix bitops to use little endian bitops 2010-10-15 9:46 ` [PATCH 21/22] m68k: convert minix bitops to use " Akinobu Mita @ 2010-10-18 8:58 ` Andreas Schwab 0 siblings, 0 replies; 12+ messages in thread From: Andreas Schwab @ 2010-10-18 8:58 UTC (permalink / raw) To: Akinobu Mita Cc: linux-kernel, linux-arch, Arnd Bergmann, Christoph Hellwig, Andrew Morton, Geert Uytterhoeven, Roman Zippel, linux-m68k Akinobu Mita <akinobu.mita@gmail.com> writes: > The inode and block bitmap for minix filesystem is little endian > byte order on m68k. No, it isn't. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <1287135981-17604-23-git-send-email-akinobu.mita@gmail.com>]
[parent not found: <201010151253.15653.arnd@arndb.de>]
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h [not found] ` <201010151253.15653.arnd@arndb.de> @ 2010-10-16 7:59 ` Geert Uytterhoeven 2010-10-16 8:50 ` Andreas Schwab 0 siblings, 1 reply; 12+ messages in thread From: Geert Uytterhoeven @ 2010-10-16 7:59 UTC (permalink / raw) To: Arnd Bergmann Cc: Akinobu Mita, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k On Fri, Oct 15, 2010 at 12:53, Arnd Bergmann <arnd@arndb.de> wrote: > On Friday 15 October 2010, Akinobu Mita wrote: >> minix bit operations are only used by minix filesystem and useless >> by other modules. > > Right. > >> This provides new config option CONFIG_MINIX_FS_LITTLE_ENDIAN and >> CONFIG_MINIX_FS_NATIVE_ENDIAN that each architecture selects one of which. >> Then we can remove minix bit operations from asm/bitops.h from all >> architectures by making them minix filesystem local macros. > > I would say that any architecture that defines minix bitops as > little-endian is broken and we should not even need the #define. > > You have defined these as "native endian": > > always LE: > alpha, blackfin, ia64, score, tile, x86 > > always BE: > h8300, microblaze, s390, sparc > > configurable: > m32r, mips, sh, xtensa > > The only ones among these that possibly ever cared about mounting minix > file systems on a big-endian kernel are really old sparc and mips systems, > everyone else probably never noticed their mistake. > > I'd say let's define the minix bitops as always LE and be done with it. Funny, m68k uses the little endian minix file system? Perhaps this was due to minix using the ext2 accessors? And ext2 being switched from big to little endian ext2 on m68k, without anyone noticing the impact on minix? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h 2010-10-16 7:59 ` [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h Geert Uytterhoeven @ 2010-10-16 8:50 ` Andreas Schwab 2010-10-16 11:35 ` Geert Uytterhoeven 0 siblings, 1 reply; 12+ messages in thread From: Andreas Schwab @ 2010-10-16 8:50 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Arnd Bergmann, Akinobu Mita, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k Geert Uytterhoeven <geert@linux-m68k.org> writes: > Funny, m68k uses the little endian minix file system? > > Perhaps this was due to minix using the ext2 accessors? And ext2 being > switched from big to little endian ext2 on m68k, without anyone > noticing the impact > on minix? m68k has always used big-endian minixfs and the minix bitops were always independent of the ext2 ones. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h 2010-10-16 8:50 ` Andreas Schwab @ 2010-10-16 11:35 ` Geert Uytterhoeven 2010-10-16 12:40 ` Akinobu Mita 0 siblings, 1 reply; 12+ messages in thread From: Geert Uytterhoeven @ 2010-10-16 11:35 UTC (permalink / raw) To: Andreas Schwab Cc: Arnd Bergmann, Akinobu Mita, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k On Sat, Oct 16, 2010 at 10:50, Andreas Schwab <schwab@linux-m68k.org> wrote: > Geert Uytterhoeven <geert@linux-m68k.org> writes: > >> Funny, m68k uses the little endian minix file system? >> >> Perhaps this was due to minix using the ext2 accessors? And ext2 being >> switched from big to little endian ext2 on m68k, without anyone >> noticing the impact >> on minix? > > m68k has always used big-endian minixfs and the minix bitops were always > independent of the ext2 ones. Thanks for confirming! Hence "[PATCH 21/22] m68k: convert minix bitops to use little endian bitops" is not correct? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h 2010-10-16 11:35 ` Geert Uytterhoeven @ 2010-10-16 12:40 ` Akinobu Mita 2010-10-16 12:57 ` Andreas Schwab 0 siblings, 1 reply; 12+ messages in thread From: Akinobu Mita @ 2010-10-16 12:40 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Andreas Schwab, Arnd Bergmann, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k 2010/10/16 Geert Uytterhoeven <geert@linux-m68k.org>: > On Sat, Oct 16, 2010 at 10:50, Andreas Schwab <schwab@linux-m68k.org> wrote: >> Geert Uytterhoeven <geert@linux-m68k.org> writes: >> >>> Funny, m68k uses the little endian minix file system? >>> >>> Perhaps this was due to minix using the ext2 accessors? And ext2 being >>> switched from big to little endian ext2 on m68k, without anyone >>> noticing the impact >>> on minix? >> >> m68k has always used big-endian minixfs and the minix bitops were always >> independent of the ext2 ones. > > Thanks for confirming! m68knommu is big-endian minixfs but m68k (mmu) is little-endian minixfs if I read arch/m68k/include/asm/bitops_{mm,no}.h correctly. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h 2010-10-16 12:40 ` Akinobu Mita @ 2010-10-16 12:57 ` Andreas Schwab 2010-10-16 13:47 ` Akinobu Mita 0 siblings, 1 reply; 12+ messages in thread From: Andreas Schwab @ 2010-10-16 12:57 UTC (permalink / raw) To: Akinobu Mita Cc: Geert Uytterhoeven, Arnd Bergmann, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k Akinobu Mita <akinobu.mita@gmail.com> writes: > m68knommu is big-endian minixfs but m68k (mmu) is little-endian minixfs > if I read arch/m68k/include/asm/bitops_{mm,no}.h correctly. Don't be confused by ^16, this is for the 16bit/32bit indexing correction. The nommu version uses big-endian 32bit indexing which yet another format. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h 2010-10-16 12:57 ` Andreas Schwab @ 2010-10-16 13:47 ` Akinobu Mita 2010-10-16 15:58 ` Andreas Schwab 0 siblings, 1 reply; 12+ messages in thread From: Akinobu Mita @ 2010-10-16 13:47 UTC (permalink / raw) To: Andreas Schwab Cc: Geert Uytterhoeven, Arnd Bergmann, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k 2010/10/16 Andreas Schwab <schwab@linux-m68k.org>: > Akinobu Mita <akinobu.mita@gmail.com> writes: > >> m68knommu is big-endian minixfs but m68k (mmu) is little-endian minixfs >> if I read arch/m68k/include/asm/bitops_{mm,no}.h correctly. > > Don't be confused by ^16, this is for the 16bit/32bit indexing > correction. The nommu version uses big-endian 32bit indexing which yet > another format. Oh, I see. I misunderstood. So we need a special handling for it to keep compatibility. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h 2010-10-16 13:47 ` Akinobu Mita @ 2010-10-16 15:58 ` Andreas Schwab 2010-10-19 15:05 ` Akinobu Mita 0 siblings, 1 reply; 12+ messages in thread From: Andreas Schwab @ 2010-10-16 15:58 UTC (permalink / raw) To: Akinobu Mita Cc: Geert Uytterhoeven, Arnd Bergmann, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k Akinobu Mita <akinobu.mita@gmail.com> writes: > 2010/10/16 Andreas Schwab <schwab@linux-m68k.org>: >> Akinobu Mita <akinobu.mita@gmail.com> writes: >> >>> m68knommu is big-endian minixfs but m68k (mmu) is little-endian minixfs >>> if I read arch/m68k/include/asm/bitops_{mm,no}.h correctly. >> >> Don't be confused by ^16, this is for the 16bit/32bit indexing >> correction. The nommu version uses big-endian 32bit indexing which yet >> another format. > > Oh, I see. I misunderstood. > > So we need a special handling for it to keep compatibility. IMHO we only need two versions: big-endian filesystem with big-endian 16bit indexed bitmaps and little-endian filesystem with little-endian bitmaps. The rest is just the result of careless copying. Note that the minix filesystem does no byte swapping, so native byte order is the only sensible mode. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 "And now for something completely different." ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h 2010-10-16 15:58 ` Andreas Schwab @ 2010-10-19 15:05 ` Akinobu Mita 0 siblings, 0 replies; 12+ messages in thread From: Akinobu Mita @ 2010-10-19 15:05 UTC (permalink / raw) To: Andreas Schwab Cc: Geert Uytterhoeven, Arnd Bergmann, linux-kernel, linux-arch, Christoph Hellwig, Andrew Morton, Linux/m68k On Sat, Oct 16, 2010 at 05:58:50PM +0200, Andreas Schwab wrote: > Akinobu Mita <akinobu.mita@gmail.com> writes: > > > 2010/10/16 Andreas Schwab <schwab@linux-m68k.org>: > >> Akinobu Mita <akinobu.mita@gmail.com> writes: > >> > >>> m68knommu is big-endian minixfs but m68k (mmu) is little-endian minixfs > >>> if I read arch/m68k/include/asm/bitops_{mm,no}.h correctly. > >> > >> Don't be confused by ^16, this is for the 16bit/32bit indexing > >> correction. The nommu version uses big-endian 32bit indexing which yet > >> another format. > > > > Oh, I see. I misunderstood. > > > > So we need a special handling for it to keep compatibility. > > IMHO we only need two versions: big-endian filesystem with big-endian > 16bit indexed bitmaps and little-endian filesystem with little-endian > bitmaps. The rest is just the result of careless copying. Note that > the minix filesystem does no byte swapping, so native byte order is the > only sensible mode. I'm going to fix it by adding another two config options. (based on the Arnd's suggestion in the earlier reply in this thread) config MINIX_FS_NATIVE_ENDIAN def_bool MINIX_FS depends on H8300 || M32R || MICROBLAZE || MIPS || S390 || SUPERH || SPARC || XTENSA || (M68K && !MMU) config MINIX_FS_BIG_ENDIAN_16BIT_INDEXED def_bool MINIX_FS depends on M68K && MMU The architectures which always use little-endian bitmaps do not select these options. --- arch/alpha/include/asm/bitops.h | 2 - arch/arm/include/asm/bitops.h | 14 ------ arch/avr32/include/asm/bitops.h | 1 - arch/blackfin/include/asm/bitops.h | 1 - arch/cris/include/asm/bitops.h | 1 - arch/frv/include/asm/bitops.h | 2 - arch/h8300/include/asm/bitops.h | 1 - arch/ia64/include/asm/bitops.h | 1 - arch/m32r/include/asm/bitops.h | 1 - arch/m68k/include/asm/bitops_mm.h | 30 ------------ arch/mips/include/asm/bitops.h | 1 - arch/mn10300/include/asm/bitops.h | 1 - arch/parisc/include/asm/bitops.h | 2 - arch/powerpc/include/asm/bitops.h | 14 ------ arch/s390/include/asm/bitops.h | 1 - arch/sh/include/asm/bitops.h | 1 - arch/sparc/include/asm/bitops_32.h | 1 - arch/sparc/include/asm/bitops_64.h | 2 - arch/tile/include/asm/bitops.h | 1 - arch/x86/include/asm/bitops.h | 2 - arch/xtensa/include/asm/bitops.h | 1 - fs/minix/Kconfig | 8 +++ fs/minix/minix.h | 79 +++++++++++++++++++++++++++++++++ include/asm-generic/bitops.h | 1 - include/asm-generic/bitops/minix-le.h | 15 ------ include/asm-generic/bitops/minix.h | 15 ------ 26 files changed, 87 insertions(+), 112 deletions(-) delete mode 100644 include/asm-generic/bitops/minix-le.h delete mode 100644 include/asm-generic/bitops/minix.h diff --git a/arch/alpha/include/asm/bitops.h b/arch/alpha/include/asm/bitops.h index 822433a..85b8152 100644 --- a/arch/alpha/include/asm/bitops.h +++ b/arch/alpha/include/asm/bitops.h @@ -459,8 +459,6 @@ sched_find_first_bit(const unsigned long b[2]) #define ext2_set_bit_atomic(l,n,a) test_and_set_bit(n,a) #define ext2_clear_bit_atomic(l,n,a) test_and_clear_bit(n,a) -#include <asm-generic/bitops/minix.h> - #endif /* __KERNEL__ */ #endif /* _ALPHA_BITOPS_H */ diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h index ac2edb4..59a2a2b 100644 --- a/arch/arm/include/asm/bitops.h +++ b/arch/arm/include/asm/bitops.h @@ -332,20 +332,6 @@ static inline int fls(int x) #define ext2_clear_bit_atomic(lock,nr,p) \ test_and_clear_le_bit(nr, (unsigned long *)(p)) -/* - * Minix is defined to use little-endian byte ordering. - * These do not need to be atomic. - */ -#define minix_set_bit(nr,p) \ - __set_le_bit(nr, (unsigned long *)(p)) -#define minix_test_bit(nr,p) \ - test_le_bit(nr, (unsigned long *)(p)) -#define minix_test_and_set_bit(nr,p) \ - __test_and_set_le_bit(nr, (unsigned long *)(p)) -#define minix_test_and_clear_bit(nr,p) \ - __test_and_clear_le_bit(nr, (unsigned long *)(p)) -#define minix_find_first_zero_bit(p,sz) \ - find_first_zero_le_bit((unsigned long *)(p), sz) #endif /* __KERNEL__ */ diff --git a/arch/avr32/include/asm/bitops.h b/arch/avr32/include/asm/bitops.h index 73a163a..72444d9 100644 --- a/arch/avr32/include/asm/bitops.h +++ b/arch/avr32/include/asm/bitops.h @@ -301,6 +301,5 @@ static inline int ffs(unsigned long word) #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix-le.h> #endif /* __ASM_AVR32_BITOPS_H */ diff --git a/arch/blackfin/include/asm/bitops.h b/arch/blackfin/include/asm/bitops.h index 2c549f7..68843fa 100644 --- a/arch/blackfin/include/asm/bitops.h +++ b/arch/blackfin/include/asm/bitops.h @@ -27,7 +27,6 @@ #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix.h> #ifndef CONFIG_SMP #include <linux/irqflags.h> diff --git a/arch/cris/include/asm/bitops.h b/arch/cris/include/asm/bitops.h index 71bea40..310e0de 100644 --- a/arch/cris/include/asm/bitops.h +++ b/arch/cris/include/asm/bitops.h @@ -159,7 +159,6 @@ static inline int test_and_change_bit(int nr, volatile unsigned long *addr) #define ext2_set_bit_atomic(l,n,a) test_and_set_bit(n,a) #define ext2_clear_bit_atomic(l,n,a) test_and_clear_bit(n,a) -#include <asm-generic/bitops/minix.h> #include <asm-generic/bitops/sched.h> #endif /* __KERNEL__ */ diff --git a/arch/frv/include/asm/bitops.h b/arch/frv/include/asm/bitops.h index e3ea644..a1d00b0 100644 --- a/arch/frv/include/asm/bitops.h +++ b/arch/frv/include/asm/bitops.h @@ -406,8 +406,6 @@ int __ilog2_u64(u64 n) #define ext2_set_bit_atomic(lock,nr,addr) test_and_set_bit ((nr) ^ 0x18, (addr)) #define ext2_clear_bit_atomic(lock,nr,addr) test_and_clear_bit((nr) ^ 0x18, (addr)) -#include <asm-generic/bitops/minix-le.h> - #endif /* __KERNEL__ */ #endif /* _ASM_BITOPS_H */ diff --git a/arch/h8300/include/asm/bitops.h b/arch/h8300/include/asm/bitops.h index 23cea66..e856c1b 100644 --- a/arch/h8300/include/asm/bitops.h +++ b/arch/h8300/include/asm/bitops.h @@ -202,7 +202,6 @@ static __inline__ unsigned long __ffs(unsigned long word) #include <asm-generic/bitops/lock.h> #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ diff --git a/arch/ia64/include/asm/bitops.h b/arch/ia64/include/asm/bitops.h index 336984a..b76f7e0 100644 --- a/arch/ia64/include/asm/bitops.h +++ b/arch/ia64/include/asm/bitops.h @@ -461,7 +461,6 @@ static __inline__ unsigned long __arch_hweight64(unsigned long x) #define ext2_set_bit_atomic(l,n,a) test_and_set_bit(n,a) #define ext2_clear_bit_atomic(l,n,a) test_and_clear_bit(n,a) -#include <asm-generic/bitops/minix.h> #include <asm-generic/bitops/sched.h> #endif /* __KERNEL__ */ diff --git a/arch/m32r/include/asm/bitops.h b/arch/m32r/include/asm/bitops.h index cdfb4c8..6300f22 100644 --- a/arch/m32r/include/asm/bitops.h +++ b/arch/m32r/include/asm/bitops.h @@ -268,7 +268,6 @@ static __inline__ int test_and_change_bit(int nr, volatile void * addr) #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ diff --git a/arch/m68k/include/asm/bitops_mm.h b/arch/m68k/include/asm/bitops_mm.h index f31ed5a..5f06275 100644 --- a/arch/m68k/include/asm/bitops_mm.h +++ b/arch/m68k/include/asm/bitops_mm.h @@ -325,36 +325,6 @@ static inline int __fls(int x) #include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/lock.h> -/* Bitmap functions for the minix filesystem */ - -static inline int minix_find_first_zero_bit(const void *vaddr, unsigned size) -{ - const unsigned short *p = vaddr, *addr = vaddr; - unsigned short num; - - if (!size) - return 0; - - size = (size >> 4) + ((size & 15) > 0); - while (*p++ == 0xffff) { - if (--size == 0) - return (p - addr) << 4; - } - - num = *--p; - return ((p - addr) << 4) + ffz(num); -} - -#define minix_test_and_set_bit(nr, addr) __test_and_set_bit((nr) ^ 16, (unsigned long *)(addr)) -#define minix_set_bit(nr,addr) __set_bit((nr) ^ 16, (unsigned long *)(addr)) -#define minix_test_and_clear_bit(nr, addr) __test_and_clear_bit((nr) ^ 16, (unsigned long *)(addr)) - -static inline int minix_test_bit(int nr, const void *vaddr) -{ - const unsigned short *p = vaddr; - return (p[nr >> 4] & (1U << (nr & 15))) != 0; -} - /* Bitmap functions for little endian. */ #define __set_le_bit(nr, addr) \ diff --git a/arch/mips/include/asm/bitops.h b/arch/mips/include/asm/bitops.h index 07ce5aa..6a2202c 100644 --- a/arch/mips/include/asm/bitops.h +++ b/arch/mips/include/asm/bitops.h @@ -706,7 +706,6 @@ static inline int ffs(int word) #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ diff --git a/arch/mn10300/include/asm/bitops.h b/arch/mn10300/include/asm/bitops.h index e1a9768..94ee844 100644 --- a/arch/mn10300/include/asm/bitops.h +++ b/arch/mn10300/include/asm/bitops.h @@ -234,7 +234,6 @@ int ffs(int x) test_and_clear_bit((nr), (addr)) #include <asm-generic/bitops/le.h> -#include <asm-generic/bitops/minix-le.h> #endif /* __KERNEL__ */ #endif /* __ASM_BITOPS_H */ diff --git a/arch/parisc/include/asm/bitops.h b/arch/parisc/include/asm/bitops.h index 919d7ed..43c516f 100644 --- a/arch/parisc/include/asm/bitops.h +++ b/arch/parisc/include/asm/bitops.h @@ -234,6 +234,4 @@ static __inline__ int fls(int x) #endif /* __KERNEL__ */ -#include <asm-generic/bitops/minix-le.h> - #endif /* _PARISC_BITOPS_H */ diff --git a/arch/powerpc/include/asm/bitops.h b/arch/powerpc/include/asm/bitops.h index eb9ce7f..bf5ccfc 100644 --- a/arch/powerpc/include/asm/bitops.h +++ b/arch/powerpc/include/asm/bitops.h @@ -308,20 +308,6 @@ unsigned long find_next_le_bit(const unsigned long *addr, #define ext2_clear_bit_atomic(lock, nr, addr) \ test_and_clear_le_bit((nr), (unsigned long*)addr) -/* Bitmap functions for the minix filesystem. */ - -#define minix_test_and_set_bit(nr,addr) \ - __test_and_set_le_bit(nr, (unsigned long *)addr) -#define minix_set_bit(nr,addr) \ - __set_le_bit(nr, (unsigned long *)addr) -#define minix_test_and_clear_bit(nr,addr) \ - __test_and_clear_le_bit(nr, (unsigned long *)addr) -#define minix_test_bit(nr,addr) \ - test_le_bit(nr, (unsigned long *)addr) - -#define minix_find_first_zero_bit(addr,size) \ - find_first_zero_le_bit((unsigned long *)addr, size) - #include <asm-generic/bitops/sched.h> #endif /* __KERNEL__ */ diff --git a/arch/s390/include/asm/bitops.h b/arch/s390/include/asm/bitops.h index 1bd1e11..e537613 100644 --- a/arch/s390/include/asm/bitops.h +++ b/arch/s390/include/asm/bitops.h @@ -842,7 +842,6 @@ static inline int find_next_le_bit(void *vaddr, unsigned long size, #define ext2_clear_bit_atomic(lock, nr, addr) \ test_and_clear_le_bit((nr), (unsigned long *)(addr)) -#include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ diff --git a/arch/sh/include/asm/bitops.h b/arch/sh/include/asm/bitops.h index fc5cd5b..90fa3e4 100644 --- a/arch/sh/include/asm/bitops.h +++ b/arch/sh/include/asm/bitops.h @@ -96,7 +96,6 @@ static inline unsigned long ffz(unsigned long word) #include <asm-generic/bitops/sched.h> #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix.h> #include <asm-generic/bitops/fls.h> #include <asm-generic/bitops/__fls.h> #include <asm-generic/bitops/fls64.h> diff --git a/arch/sparc/include/asm/bitops_32.h b/arch/sparc/include/asm/bitops_32.h index 75da6f8..25a6766 100644 --- a/arch/sparc/include/asm/bitops_32.h +++ b/arch/sparc/include/asm/bitops_32.h @@ -105,7 +105,6 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *addr) #include <asm-generic/bitops/find.h> #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ diff --git a/arch/sparc/include/asm/bitops_64.h b/arch/sparc/include/asm/bitops_64.h index 66db28e..38e9aa1 100644 --- a/arch/sparc/include/asm/bitops_64.h +++ b/arch/sparc/include/asm/bitops_64.h @@ -96,8 +96,6 @@ static inline unsigned int __arch_hweight8(unsigned int w) #define ext2_clear_bit_atomic(lock,nr,addr) \ test_and_clear_bit((nr) ^ 0x38,(unsigned long *)(addr)) -#include <asm-generic/bitops/minix.h> - #endif /* __KERNEL__ */ #endif /* defined(_SPARC64_BITOPS_H) */ diff --git a/arch/tile/include/asm/bitops.h b/arch/tile/include/asm/bitops.h index 5447add..132e6bb 100644 --- a/arch/tile/include/asm/bitops.h +++ b/arch/tile/include/asm/bitops.h @@ -123,6 +123,5 @@ static inline unsigned long __arch_hweight64(__u64 w) #include <asm-generic/bitops/find.h> #include <asm-generic/bitops/sched.h> #include <asm-generic/bitops/le.h> -#include <asm-generic/bitops/minix.h> #endif /* _ASM_TILE_BITOPS_H */ diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h index 3c95e07..69d5813 100644 --- a/arch/x86/include/asm/bitops.h +++ b/arch/x86/include/asm/bitops.h @@ -463,7 +463,5 @@ static inline int fls(int x) #define ext2_clear_bit_atomic(lock, nr, addr) \ test_and_clear_bit((nr), (unsigned long *)(addr)) -#include <asm-generic/bitops/minix.h> - #endif /* __KERNEL__ */ #endif /* _ASM_X86_BITOPS_H */ diff --git a/arch/xtensa/include/asm/bitops.h b/arch/xtensa/include/asm/bitops.h index a56b7b5..c8fac8d 100644 --- a/arch/xtensa/include/asm/bitops.h +++ b/arch/xtensa/include/asm/bitops.h @@ -125,7 +125,6 @@ static inline unsigned long __fls(unsigned long word) #include <asm-generic/bitops/hweight.h> #include <asm-generic/bitops/lock.h> #include <asm-generic/bitops/sched.h> -#include <asm-generic/bitops/minix.h> #endif /* __KERNEL__ */ diff --git a/fs/minix/Kconfig b/fs/minix/Kconfig index 0fd7ca9..6624684 100644 --- a/fs/minix/Kconfig +++ b/fs/minix/Kconfig @@ -15,3 +15,11 @@ config MINIX_FS module will be called minix. Note that the file system of your root partition (the one containing the directory /) cannot be compiled as a module. + +config MINIX_FS_NATIVE_ENDIAN + def_bool MINIX_FS + depends on H8300 || M32R || MICROBLAZE || MIPS || S390 || SUPERH || SPARC || XTENSA || (M68K && !MMU) + +config MINIX_FS_BIG_ENDIAN_16BIT_INDEXED + def_bool MINIX_FS + depends on M68K && MMU diff --git a/fs/minix/minix.h b/fs/minix/minix.h index 407b1c8..9dfd62c 100644 --- a/fs/minix/minix.h +++ b/fs/minix/minix.h @@ -88,4 +88,83 @@ static inline struct minix_inode_info *minix_i(struct inode *inode) return list_entry(inode, struct minix_inode_info, vfs_inode); } +#if defined(CONFIG_MINIX_FS_NATIVE_ENDIAN) && \ + defined(CONFIG_MINIX_FS_BIG_ENDIAN_16BIT_INDEXED) + +#error Minix file system byte order broken + +#elif defined(CONFIG_MINIX_FS_NATIVE_ENDIAN) + +/* + * big-endian 32 or 64 bit indexed bitmaps on big-endian system or + * little-endian bitmaps on little-endian system + */ + +#define minix_test_and_set_bit(nr, addr) \ + __test_and_set_bit((nr), (unsigned long *)(addr)) +#define minix_set_bit(nr, addr) \ + __set_bit((nr), (unsigned long *)(addr)) +#define minix_test_and_clear_bit(nr, addr) \ + __test_and_clear_bit((nr), (unsigned long *)(addr)) +#define minix_test_bit(nr, addr) \ + test_bit((nr), (unsigned long *)(addr)) +#define minix_find_first_zero_bit(addr, size) \ + find_first_zero_bit((unsigned long *)(addr), (size)) + +#elif defined(CONFIG_MINIX_FS_BIG_ENDIAN_16BIT_INDEXED) + +/* + * big-endian 16bit indexed bitmaps + */ + +static inline int minix_find_first_zero_bit(const void *vaddr, unsigned size) +{ + const unsigned short *p = vaddr, *addr = vaddr; + unsigned short num; + + if (!size) + return 0; + + size = (size >> 4) + ((size & 15) > 0); + while (*p++ == 0xffff) { + if (--size == 0) + return (p - addr) << 4; + } + + num = *--p; + return ((p - addr) << 4) + ffz(num); +} + +#define minix_test_and_set_bit(nr, addr) \ + __test_and_set_bit((nr) ^ 16, (unsigned long *)(addr)) +#define minix_set_bit(nr, addr) \ + __set_bit((nr) ^ 16, (unsigned long *)(addr)) +#define minix_test_and_clear_bit(nr, addr) \ + __test_and_clear_bit((nr) ^ 16, (unsigned long *)(addr)) + +static inline int minix_test_bit(int nr, const void *vaddr) +{ + const unsigned short *p = vaddr; + return (p[nr >> 4] & (1U << (nr & 15))) != 0; +} + +#else + +/* + * little-endian bitmaps + */ + +#define minix_test_and_set_bit(nr, addr) \ + __test_and_set_le_bit((nr), (unsigned long *)(addr)) +#define minix_set_bit(nr, addr) \ + __set_le_bit((nr), (unsigned long *)(addr)) +#define minix_test_and_clear_bit(nr, addr) \ + __test_and_clear_le_bit((nr), (unsigned long *)(addr)) +#define minix_test_bit(nr, addr) \ + test_le_bit((nr), (unsigned long *)(addr)) +#define minix_find_first_zero_bit(addr, size) \ + find_first_zero_le_bit((unsigned long *)(addr), (size)) + +#endif + #endif /* FS_MINIX_H */ diff --git a/include/asm-generic/bitops.h b/include/asm-generic/bitops.h index dd7c014..280ca7a 100644 --- a/include/asm-generic/bitops.h +++ b/include/asm-generic/bitops.h @@ -40,6 +40,5 @@ #include <asm-generic/bitops/non-atomic.h> #include <asm-generic/bitops/le.h> #include <asm-generic/bitops/ext2-atomic.h> -#include <asm-generic/bitops/minix.h> #endif /* __ASM_GENERIC_BITOPS_H */ diff --git a/include/asm-generic/bitops/minix-le.h b/include/asm-generic/bitops/minix-le.h deleted file mode 100644 index f366cfa..0000000 --- a/include/asm-generic/bitops/minix-le.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _ASM_GENERIC_BITOPS_MINIX_LE_H_ -#define _ASM_GENERIC_BITOPS_MINIX_LE_H_ - -#define minix_test_and_set_bit(nr,addr) \ - __test_and_set_le_bit((nr), (unsigned long *)(addr)) -#define minix_set_bit(nr,addr) \ - __set_le_bit((nr), (unsigned long *)(addr)) -#define minix_test_and_clear_bit(nr,addr) \ - __test_and_clear_le_bit((nr), (unsigned long *)(addr)) -#define minix_test_bit(nr,addr) \ - test_le_bit((nr), (unsigned long *)(addr)) -#define minix_find_first_zero_bit(addr,size) \ - find_first_zero_le_bit((unsigned long *)(addr), (size)) - -#endif /* _ASM_GENERIC_BITOPS_MINIX_LE_H_ */ diff --git a/include/asm-generic/bitops/minix.h b/include/asm-generic/bitops/minix.h deleted file mode 100644 index 91f42e8..0000000 --- a/include/asm-generic/bitops/minix.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef _ASM_GENERIC_BITOPS_MINIX_H_ -#define _ASM_GENERIC_BITOPS_MINIX_H_ - -#define minix_test_and_set_bit(nr,addr) \ - __test_and_set_bit((nr),(unsigned long *)(addr)) -#define minix_set_bit(nr,addr) \ - __set_bit((nr),(unsigned long *)(addr)) -#define minix_test_and_clear_bit(nr,addr) \ - __test_and_clear_bit((nr),(unsigned long *)(addr)) -#define minix_test_bit(nr,addr) \ - test_bit((nr),(unsigned long *)(addr)) -#define minix_find_first_zero_bit(addr,size) \ - find_first_zero_bit((unsigned long *)(addr),(size)) - -#endif /* _ASM_GENERIC_BITOPS_MINIX_H_ */ -- 1.7.1.231.gd0b16 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2010-10-19 15:05 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com>
2010-10-15 9:46 ` [PATCH 05/22] m68k: introduce le bitops Akinobu Mita
2010-10-15 9:46 ` [PATCH 06/22] m68knommu: introduce little endian bitops Akinobu Mita
2010-10-15 9:46 ` [PATCH 21/22] m68k: convert minix bitops to use " Akinobu Mita
2010-10-18 8:58 ` Andreas Schwab
[not found] ` <1287135981-17604-23-git-send-email-akinobu.mita@gmail.com>
[not found] ` <201010151253.15653.arnd@arndb.de>
2010-10-16 7:59 ` [PATCH 22/22] bitops: remove minix bitops from asm/bitops.h Geert Uytterhoeven
2010-10-16 8:50 ` Andreas Schwab
2010-10-16 11:35 ` Geert Uytterhoeven
2010-10-16 12:40 ` Akinobu Mita
2010-10-16 12:57 ` Andreas Schwab
2010-10-16 13:47 ` Akinobu Mita
2010-10-16 15:58 ` Andreas Schwab
2010-10-19 15:05 ` Akinobu Mita
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox