parisc: unify implementations of __cmpxchg_u{8,32,64}
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 2 Apr 2024 02:29:44 +0000 (22:29 -0400)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 10 Apr 2024 05:06:00 +0000 (22:06 -0700)
identical except for type name involved

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
arch/parisc/lib/bitops.c

index ae2231d921985eb7cc8d13d84bb2d5524bbd3c80..cae30a3eb6d9becfaeba0806102020bcba1ff2a4 100644 (file)
@@ -56,38 +56,19 @@ unsigned long notrace __xchg8(char x, volatile char *ptr)
 }
 
 
-u64 notrace __cmpxchg_u64(volatile u64 *ptr, u64 old, u64 new)
-{
-       unsigned long flags;
-       u64 prev;
-
-       _atomic_spin_lock_irqsave(ptr, flags);
-       if ((prev = *ptr) == old)
-               *ptr = new;
-       _atomic_spin_unlock_irqrestore(ptr, flags);
-       return prev;
-}
-
-u32 notrace __cmpxchg_u32(volatile u32 *ptr, u32 old, u32 new)
-{
-       unsigned long flags;
-       u32 prev;
-
-       _atomic_spin_lock_irqsave(ptr, flags);
-       if ((prev = *ptr) == old)
-               *ptr = new;
-       _atomic_spin_unlock_irqrestore(ptr, flags);
-       return prev;
-}
-
-u8 notrace __cmpxchg_u8(volatile u8 *ptr, u8 old, u8 new)
-{
-       unsigned long flags;
-       u8 prev;
-
-       _atomic_spin_lock_irqsave(ptr, flags);
-       if ((prev = *ptr) == old)
-               *ptr = new;
-       _atomic_spin_unlock_irqrestore(ptr, flags);
-       return prev;
-}
+#define CMPXCHG(T)                                             \
+       T notrace __cmpxchg_##T(volatile T *ptr, T old, T new)  \
+       {                                                       \
+               unsigned long flags;                            \
+               T prev;                                         \
+                                                               \
+               _atomic_spin_lock_irqsave(ptr, flags);          \
+               if ((prev = *ptr) == old)                       \
+                       *ptr = new;                             \
+               _atomic_spin_unlock_irqrestore(ptr, flags);     \
+               return prev;                                    \
+       }
+
+CMPXCHG(u64)
+CMPXCHG(u32)
+CMPXCHG(u8)