]> www.infradead.org Git - linux.git/commitdiff
sh: Emulate one-byte cmpxchg
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 27 Mar 2024 22:21:31 +0000 (15:21 -0700)
committerPaul E. McKenney <paulmck@kernel.org>
Fri, 13 Sep 2024 14:10:38 +0000 (07:10 -0700)
Use the new cmpxchg_emu_u8() to emulate one-byte cmpxchg() on sh.

[ paulmck: Drop two-byte support per Arnd Bergmann feedback. ]
[ paulmck: Apply feedback from Naresh Kamboju. ]
[ Apply Geert Uytterhoeven feedback. ]

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Andi Shyti <andi.shyti@linux.intel.com>
Cc: Palmer Dabbelt <palmer@rivosinc.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: <linux-sh@vger.kernel.org>
Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
arch/sh/Kconfig
arch/sh/include/asm/cmpxchg.h

index 1aa3c4a0c5b276260bffb449e666479bde4df0c4..e9103998cca91fb18cc9d6288a103dd90151edec 100644 (file)
@@ -14,6 +14,7 @@ config SUPERH
        select ARCH_HIBERNATION_POSSIBLE if MMU
        select ARCH_MIGHT_HAVE_PC_PARPORT
        select ARCH_WANT_IPC_PARSE_VERSION
+       select ARCH_NEED_CMPXCHG_1_EMU
        select CPU_NO_EFFICIENT_FFS
        select DMA_DECLARE_COHERENT
        select GENERIC_ATOMIC64
index 5d617b3ef78f77b86c20d9aaedc553991c911f1a..1e5dc5ccf7bf50c5708b528ac42c3414048d70d2 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <linux/compiler.h>
 #include <linux/types.h>
+#include <linux/cmpxchg-emu.h>
 
 #if defined(CONFIG_GUSA_RB)
 #include <asm/cmpxchg-grb.h>
@@ -56,6 +57,8 @@ static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old,
                unsigned long new, int size)
 {
        switch (size) {
+       case 1:
+               return cmpxchg_emu_u8(ptr, old, new);
        case 4:
                return __cmpxchg_u32(ptr, old, new);
        }