summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThorsten Blum <thorsten.blum@toblux.com>2024-07-31 01:45:07 +0200
committerGeert Uytterhoeven <geert@linux-m68k.org>2024-08-26 10:24:34 +0200
commit61eb040228ba9a0657937a1e48d6696f66364a55 (patch)
tree0600b73a2735cdbe1362cf66431b710b13c93890
parent8400291e289ee6b2bf9779ff1c83a291501f017b (diff)
downloadlinux-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.h15
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);