From: Bradley Morgan <brads@mainlining.org>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: frederic@kernel.org, neeraj.upadhyay@kernel.org,
boqun@kernel.org, joelagnelf@nvidia.com, rcu@vger.kernel.org,
"Andrew Morton" <akpm@linux-foundation.org>,
"Arnd Bergmann" <arnd@arndb.de>,
linux-arch@vger.kernel.org, "Vineet Gupta" <vgupta@kernel.org>,
linux-snps-arc@lists.infradead.org,
"Russell King" <linux@armlinux.org.uk>,
linux-arm-kernel@lists.infradead.org,
"Guo Ren" <guoren@kernel.org>,
linux-csky@vger.kernel.org,
"Yoshinori Sato" <ysato@users.sourceforge.jp>,
"Rich Felker" <dalias@libc.org>,
"John Paul Adrian Glaubitz" <glaubitz@physik.fu-berlin.de>,
linux-sh@vger.kernel.org, "Chris Zankel" <chris@zankel.net>,
"Max Filippov" <jcmvbkbc@gmail.com>,
linux-kernel@vger.kernel.org, brads@mainlining.org
Subject: [PATCH 3/6] ARM: Emulate two-byte cmpxchg on ARMv6
Date: Fri, 11 Sep 2026 19:25:36 +0000 [thread overview]
Message-ID: <20260911192540.20983-4-brads@mainlining.org> (raw)
In-Reply-To: <20260911192540.20983-1-brads@mainlining.org>
ARMv6 without the ARMv6K extensions, selected as CONFIG_CPU_V6,
has no ldrexh/strexh, so the __cmpxchg() switch only provides
case 1 through cmpxchg_emu_u8() and lets case 2 fall through to
__bad_cmpxchg(). Route case 2 through cmpxchg_emu_u16() so that
two-byte cmpxchg() works on these cores too.
ARMv6K and later already have native case 2 in the #else branch,
and __cmpxchg_local() already covers sizes 1 and 2 for ARMv6 via
__generic_cmpxchg_local(), so neither is touched.
Signed-off-by: Bradley Morgan <brads@mainlining.org>
---
arch/arm/include/asm/cmpxchg.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h
index 9beb64d30586..6c0e2f21456b 100644
--- a/arch/arm/include/asm/cmpxchg.h
+++ b/arch/arm/include/asm/cmpxchg.h
@@ -167,6 +167,9 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
case 1:
oldval = cmpxchg_emu_u8((volatile u8 *)ptr, old, new);
break;
+ case 2:
+ oldval = cmpxchg_emu_u16((volatile u16 *)ptr, old, new);
+ break;
#else /* min ARCH > ARMv6 */
case 1:
do {
--
2.47.3
next prev parent reply other threads:[~2026-09-11 19:25 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-11 19:25 [PATCH 0/6] Add two-byte cmpxchg emulation and wire it into the architectures Bradley Morgan
2026-09-11 19:25 ` [PATCH 1/6] lib: Add two-byte cmpxchg emulation function Bradley Morgan
2026-09-11 22:10 ` David Laight
2026-09-11 22:10 ` David Laight
2026-09-11 22:13 ` Bradley Morgan
2026-09-11 23:09 ` Paul E. McKenney
2026-09-11 23:09 ` Paul E. McKenney
2026-09-12 9:30 ` David Laight
2026-09-12 9:30 ` David Laight
2026-09-12 10:29 ` Bradley Morgan
2026-09-12 18:58 ` Paul E. McKenney
2026-09-12 18:58 ` Paul E. McKenney
2026-09-12 21:11 ` Bradley Morgan
2026-09-11 19:25 ` [PATCH 2/6] ARC: Emulate two-byte cmpxchg Bradley Morgan
2026-09-11 19:25 ` Bradley Morgan [this message]
2026-09-11 19:25 ` [PATCH 4/6] csky: " Bradley Morgan
2026-09-11 19:25 ` [PATCH 5/6] sh: " Bradley Morgan
2026-09-11 19:25 ` [PATCH 6/6] xtensa: " Bradley Morgan
2026-09-11 20:17 ` [PATCH 0/6] Add two-byte cmpxchg emulation and wire it into the architectures Arnd Bergmann
2026-09-11 20:17 ` Arnd Bergmann
2026-09-11 20:20 ` Bradley Morgan
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=20260911192540.20983-4-brads@mainlining.org \
--to=brads@mainlining.org \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=boqun@kernel.org \
--cc=chris@zankel.net \
--cc=dalias@libc.org \
--cc=frederic@kernel.org \
--cc=glaubitz@physik.fu-berlin.de \
--cc=guoren@kernel.org \
--cc=jcmvbkbc@gmail.com \
--cc=joelagnelf@nvidia.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-csky@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=linux-snps-arc@lists.infradead.org \
--cc=linux@armlinux.org.uk \
--cc=neeraj.upadhyay@kernel.org \
--cc=paulmck@kernel.org \
--cc=rcu@vger.kernel.org \
--cc=vgupta@kernel.org \
--cc=ysato@users.sourceforge.jp \
/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.