From mboxrd@z Thu Jan 1 00:00:00 1970 From: Akinobu Mita Subject: [PATCH 21/22] m68k: convert minix bitops to use little endian bitops Date: Fri, 15 Oct 2010 18:46:20 +0900 Message-ID: <1287135981-17604-22-git-send-email-akinobu.mita@gmail.com> References: <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com> Return-path: In-Reply-To: <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com> Sender: linux-kernel-owner@vger.kernel.org To: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Arnd Bergmann , Christoph Hellwig , Andrew Morton Cc: Akinobu Mita , Geert Uytterhoeven , Roman Zippel , linux-m68k@vger.kernel.org List-Id: linux-arch.vger.kernel.org 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 Cc: Geert Uytterhoeven Cc: Roman Zippel 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 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from [150.82.175.143] ([150.82.175.143]:37662 "EHLO dhcpa11143.tky.aist.go.jp" rhost-flags-FAIL-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1755532Ab0JOJov (ORCPT ); Fri, 15 Oct 2010 05:44:51 -0400 From: Akinobu Mita Subject: [PATCH 21/22] m68k: convert minix bitops to use little endian bitops Date: Fri, 15 Oct 2010 18:46:20 +0900 Message-ID: <1287135981-17604-22-git-send-email-akinobu.mita@gmail.com> In-Reply-To: <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com> References: <1287135981-17604-1-git-send-email-akinobu.mita@gmail.com> Sender: linux-arch-owner@vger.kernel.org List-ID: To: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org, Arnd Bergmann , Christoph Hellwig , Andrew Morton Cc: Akinobu Mita , Geert Uytterhoeven , Roman Zippel , linux-m68k@vger.kernel.org Message-ID: <20101015094620.JzDkAvn4P-b3uHVdPCk9XXGirsKuQrLZA8qFJ1BoXpo@z> 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 Cc: Geert Uytterhoeven Cc: Roman Zippel 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