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>
This commit is contained in:
Thorsten Blum 2024-07-31 01:45:07 +02:00 committed by Geert Uytterhoeven
parent 8400291e28
commit 61eb040228

View file

@ -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);