diff options
author | Thorsten Blum <thorsten.blum@toblux.com> | 2024-07-31 01:45:07 +0200 |
---|---|---|
committer | Geert Uytterhoeven <geert@linux-m68k.org> | 2024-08-26 10:24:34 +0200 |
commit | 61eb040228ba9a0657937a1e48d6696f66364a55 (patch) | |
tree | 0600b73a2735cdbe1362cf66431b710b13c93890 | |
parent | 8400291e289ee6b2bf9779ff1c83a291501f017b (diff) | |
download | linux-61eb040228ba9a0657937a1e48d6696f66364a55.tar.gz linux-61eb040228ba9a0657937a1e48d6696f66364a55.tar.bz2 linux-61eb040228ba9a0657937a1e48d6696f66364a55.zip |
m68k: cmpxchg: Use swap() to improve code
Remove the local variable tmp and use the swap() macro instead.
Signed-off-by: Thorsten Blum <thorsten.blum@toblux.com>
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/20240730234506.492743-2-thorsten.blum@toblux.com
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
-rw-r--r-- | arch/m68k/include/asm/cmpxchg.h | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/arch/m68k/include/asm/cmpxchg.h b/arch/m68k/include/asm/cmpxchg.h index 4ba14f3535fc..71fbe5c5c564 100644 --- a/arch/m68k/include/asm/cmpxchg.h +++ b/arch/m68k/include/asm/cmpxchg.h @@ -3,6 +3,7 @@ #define __ARCH_M68K_CMPXCHG__ #include <linux/irqflags.h> +#include <linux/minmax.h> #define __xg(type, x) ((volatile type *)(x)) @@ -11,25 +12,19 @@ extern unsigned long __invalid_xchg_size(unsigned long, volatile void *, int); #ifndef CONFIG_RMW_INSNS static inline unsigned long __arch_xchg(unsigned long x, volatile void * ptr, int size) { - unsigned long flags, tmp; + unsigned long flags; local_irq_save(flags); switch (size) { case 1: - tmp = *(u8 *)ptr; - *(u8 *)ptr = x; - x = tmp; + swap(*(u8 *)ptr, x); break; case 2: - tmp = *(u16 *)ptr; - *(u16 *)ptr = x; - x = tmp; + swap(*(u16 *)ptr, x); break; case 4: - tmp = *(u32 *)ptr; - *(u32 *)ptr = x; - x = tmp; + swap(*(u32 *)ptr, x); break; default: x = __invalid_xchg_size(x, ptr, size); |