From: David Howells <dhowells@redhat.com>
To: akpm@osdl.org
Cc: linux-kernel@vger.kernel.org
Subject: [PATCH] FRV Minix & ext2 bitops fixes
Date: Tue, 14 Dec 2004 16:13:57 +0000 [thread overview]
Message-ID: <9392.1103040837@redhat.com> (raw)
The attached patch does two things:
(1) Implements the ext2/ext3 bitops in terms of the main bitops functions.
(2) Changes the Minix bitops to use the ext2 bitops (LE) rather than the main
bitops (BE).
Signed-Off-By: David Howells <dhowells@redhat.com>
---
warthog>diffstat frv-bitops-2610rc2mm3.diff
bitops.h | 71 +++++++++------------------------------------------------------
1 files changed, 11 insertions(+), 60 deletions(-)
diff -uNr linux-2.6.10-rc3-mm1-mmcleanup/include/asm-frv/bitops.h linux-2.6.10-rc3-mm1-misc/include/asm-frv/bitops.h
--- linux-2.6.10-rc3-mm1-mmcleanup/include/asm-frv/bitops.h 2004-12-13 17:34:20.000000000 +0000
+++ linux-2.6.10-rc3-mm1-misc/include/asm-frv/bitops.h 2004-12-14 15:33:31.000000000 +0000
@@ -258,65 +258,16 @@
#define hweight16(x) generic_hweight16(x)
#define hweight8(x) generic_hweight8(x)
-static inline int ext2_set_bit(int nr, volatile void * addr)
-{
- unsigned long old, tmp, mask;
- volatile unsigned char *ptr = addr;
- ptr += nr >> 3;
-
- asm("0: \n"
- " setlos.p #1,%3 \n"
- " orcc gr0,gr0,gr0,icc3 \n" /* set ICC3.Z */
- " sll%I4.p %3,%4,%3 \n"
- " ckeq icc3,cc7 \n"
- " ldub.p %M0,%1 \n" /* LDUB.P/ORCR must be atomic */
- " orcr cc7,cc7,cc3 \n" /* set CC3 to true */
- " or %1,%3,%2 \n"
- " cstb.p %2,%M0 ,cc3,#1 \n"
- " corcc gr29,gr29,gr0 ,cc3,#1 \n" /* clear ICC3.Z if store happens */
- " beq icc3,#0,0b \n"
- : "+U"(*ptr), "=&r"(old), "=r"(tmp), "=&r"(mask)
- : "Ir"(nr & 7)
- : "memory", "cc7", "cc3", "icc3"
- );
-
- return old & mask;
-}
-
-#define ext2_set_bit_atomic(lock,nr,addr) ext2_set_bit((nr), addr)
-
-static inline int ext2_clear_bit(int nr, volatile void * addr)
-{
- unsigned long old, tmp, mask;
- volatile unsigned char *ptr = addr;
- ptr += nr >> 3;
-
- asm("0: \n"
- " setlos.p #1,%3 \n"
- " orcc gr0,gr0,gr0,icc3 \n" /* set ICC3.Z */
- " sll%I4.p %3,%4,%3 \n"
- " ckeq icc3,cc7 \n"
- " ldub.p %M0,%1 \n" /* LDUB.P/ORCR must be atomic */
- " orcr cc7,cc7,cc3 \n" /* set CC3 to true */
- " not %3,%2 \n"
- " and %1,%2,%2 \n"
- " cstb.p %2,%M0 ,cc3,#1 \n"
- " corcc gr29,gr29,gr0 ,cc3,#1 \n" /* clear ICC3.Z if store happens */
- " beq icc3,#0,0b \n"
- : "+U"(*ptr), "=&r"(old), "=r"(tmp), "=&r"(mask)
- : "Ir"(nr & 7)
- : "memory", "cc7", "cc3", "icc3"
- );
-
- return old & mask;
-}
+#define ext2_set_bit(nr, addr) test_and_set_bit ((nr) ^ 0x18, (addr))
+#define ext2_clear_bit(nr, addr) test_and_clear_bit((nr) ^ 0x18, (addr))
-#define ext2_clear_bit_atomic(lock,nr,addr) ext2_clear_bit((nr), addr)
+#define ext2_set_bit_atomic(lock,nr,addr) ext2_set_bit((nr), addr)
+#define ext2_clear_bit_atomic(lock,nr,addr) ext2_clear_bit((nr), addr)
static inline int ext2_test_bit(int nr, const volatile void * addr)
{
- int mask;
- const volatile unsigned char *ADDR = (const unsigned char *) addr;
+ const volatile unsigned char *ADDR = (const unsigned char *) addr;
+ int mask;
ADDR += nr >> 3;
mask = 1 << (nr & 0x07);
@@ -379,11 +330,11 @@
}
/* Bitmap functions for the minix filesystem. */
-#define minix_test_and_set_bit(nr,addr) test_and_set_bit(nr,addr)
-#define minix_set_bit(nr,addr) set_bit(nr,addr)
-#define minix_test_and_clear_bit(nr,addr) test_and_clear_bit(nr,addr)
-#define minix_test_bit(nr,addr) test_bit(nr,addr)
-#define minix_find_first_zero_bit(addr,size) find_first_zero_bit(addr,size)
+#define minix_test_and_set_bit(nr,addr) ext2_set_bit(nr,addr)
+#define minix_set_bit(nr,addr) ext2_set_bit(nr,addr)
+#define minix_test_and_clear_bit(nr,addr) ext2_clear_bit(nr,addr)
+#define minix_test_bit(nr,addr) ext2_test_bit(nr,addr)
+#define minix_find_first_zero_bit(addr,size) ext2_find_first_zero_bit(addr,size)
#endif /* __KERNEL__ */
reply other threads:[~2004-12-14 16:16 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9392.1103040837@redhat.com \
--to=dhowells@redhat.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.