From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: linux-kernel@vger.kernel.org
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
linux-fsdevel@vger.kernel.org, linux-arch@vger.kernel.org,
torvalds@linux-foundation.org,
Nicholas Piggin <npiggin@gmail.com>
Subject: [PATCH 09/17] m68k: Implement xor_unlock_is_negative_byte
Date: Fri, 15 Sep 2023 19:36:59 +0100 [thread overview]
Message-ID: <20230915183707.2707298-10-willy@infradead.org> (raw)
In-Reply-To: <20230915183707.2707298-1-willy@infradead.org>
Using EOR to clear the guaranteed-to-be-set lock bit will test the
negative flag just like the x86 implementation. This should be
more efficient than the generic implementation in filemap.c. It
would be better if m68k had __GCC_ASM_FLAG_OUTPUTS__.
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
arch/m68k/include/asm/bitops.h | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/arch/m68k/include/asm/bitops.h b/arch/m68k/include/asm/bitops.h
index e984af71df6b..909ebe7cab5d 100644
--- a/arch/m68k/include/asm/bitops.h
+++ b/arch/m68k/include/asm/bitops.h
@@ -319,6 +319,20 @@ arch___test_and_change_bit(unsigned long nr, volatile unsigned long *addr)
return test_and_change_bit(nr, addr);
}
+static inline bool xor_unlock_is_negative_byte(unsigned long mask,
+ volatile unsigned long *p)
+{
+ char result;
+ char *cp = (char *)p + 3; /* m68k is big-endian */
+
+ __asm__ __volatile__ ("eor.b %1, %2; smi %0"
+ : "=d" (result)
+ : "di" (mask), "o" (*cp)
+ : "memory");
+ return result;
+}
+#define xor_unlock_is_negative_byte xor_unlock_is_negative_byte
+
/*
* The true 68020 and more advanced processors support the "bfffo"
* instruction for finding bits. ColdFire and simple 68000 parts
--
2.40.1
next prev parent reply other threads:[~2023-09-15 18:38 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-15 18:36 [PATCH 00/17] Add folio_end_read Matthew Wilcox (Oracle)
2023-09-15 18:36 ` [PATCH 01/17] iomap: Hold state_lock over call to ifs_set_range_uptodate() Matthew Wilcox (Oracle)
2023-09-15 18:36 ` [PATCH 02/17] iomap: Protect read_bytes_pending with the state_lock Matthew Wilcox (Oracle)
2023-09-16 0:11 ` Linus Torvalds
2023-09-16 0:15 ` Linus Torvalds
2023-09-16 15:50 ` Matthew Wilcox
2023-09-15 18:36 ` [PATCH 03/17] mm: Add folio_end_read() Matthew Wilcox (Oracle)
2023-09-15 18:36 ` [PATCH 04/17] ext4: Use folio_end_read() Matthew Wilcox (Oracle)
2023-09-15 18:36 ` [PATCH 05/17] buffer: " Matthew Wilcox (Oracle)
2023-09-15 18:36 ` [PATCH 06/17] iomap: " Matthew Wilcox (Oracle)
2023-09-15 18:36 ` [PATCH 07/17] bitops: Add xor_unlock_is_negative_byte() Matthew Wilcox (Oracle)
2023-09-15 18:36 ` [PATCH 08/17] alpha: Implement xor_unlock_is_negative_byte Matthew Wilcox (Oracle)
2023-09-16 0:27 ` Linus Torvalds
2023-09-16 0:38 ` Matthew Wilcox
2023-09-16 2:01 ` Linus Torvalds
2023-09-16 2:14 ` Linus Torvalds
2023-09-16 15:59 ` Matthew Wilcox
2023-09-15 18:36 ` Matthew Wilcox (Oracle) [this message]
2023-09-16 13:11 ` [PATCH 09/17] m68k: " Greg Ungerer
2023-09-16 14:34 ` Matthew Wilcox
2023-09-18 14:37 ` Greg Ungerer
2023-09-20 7:45 ` Greg Ungerer
2023-09-20 16:58 ` Linus Torvalds
2023-09-19 13:23 ` David Laight
2023-09-19 14:26 ` Matthew Wilcox
2023-09-19 14:35 ` David Laight
2023-09-19 15:14 ` Matthew Wilcox
2023-09-19 15:22 ` David Laight
2023-09-19 15:47 ` Matthew Wilcox
2023-09-19 15:57 ` David Laight
2023-09-20 7:15 ` Greg Ungerer
2023-09-20 7:22 ` Greg Ungerer
2023-10-02 20:07 ` Matthew Wilcox
2023-10-03 14:14 ` Greg Ungerer
2023-10-03 20:07 ` Matthew Wilcox
2023-10-04 12:06 ` Greg Ungerer
2023-09-15 18:37 ` [PATCH 10/17] mips: " Matthew Wilcox (Oracle)
2023-09-15 18:37 ` [PATCH 11/17] powerpc: Implement arch_xor_unlock_is_negative_byte on 32-bit Matthew Wilcox (Oracle)
2023-09-15 18:37 ` [PATCH 12/17] riscv: Implement xor_unlock_is_negative_byte Matthew Wilcox (Oracle)
2023-09-15 18:37 ` [PATCH 13/17] s390: Implement arch_xor_unlock_is_negative_byte Matthew Wilcox (Oracle)
2023-09-15 18:37 ` [PATCH 14/17] mm: Delete checks for xor_unlock_is_negative_byte() Matthew Wilcox (Oracle)
2023-09-15 18:37 ` [PATCH 15/17] mm: Add folio_xor_flags_has_waiters() Matthew Wilcox (Oracle)
2023-09-15 18:37 ` [PATCH 16/17] mm: Make __end_folio_writeback() return void Matthew Wilcox (Oracle)
2023-09-15 18:37 ` [PATCH 17/17] mm: Use folio_xor_flags_has_waiters() in folio_end_writeback() Matthew Wilcox (Oracle)
2023-09-16 0:31 ` [PATCH 00/17] Add folio_end_read Linus Torvalds
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=20230915183707.2707298-10-willy@infradead.org \
--to=willy@infradead.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=npiggin@gmail.com \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).