s390/atomic: move remaining inline assemblies to atomic_ops.h
authorHeiko Carstens <hca@linux.ibm.com>
Mon, 22 Mar 2021 13:02:55 +0000 (14:02 +0100)
committerHeiko Carstens <hca@linux.ibm.com>
Mon, 12 Apr 2021 10:46:42 +0000 (12:46 +0200)
Move all remaining inline assemblies from atomic.h to
atomic_ops.h. That way all atomic inline assemblies are
contained within only a single header file.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
arch/s390/include/asm/atomic.h
arch/s390/include/asm/atomic_ops.h

index 5860ae7..5d8bd0d 100644 (file)
 
 static inline int atomic_read(const atomic_t *v)
 {
-       int c;
-
-       asm volatile(
-               "       l       %0,%1\n"
-               : "=d" (c) : "Q" (v->counter));
-       return c;
+       return __atomic_read(v);
 }
 
 static inline void atomic_set(atomic_t *v, int i)
 {
-       asm volatile(
-               "       st      %1,%0\n"
-               : "=Q" (v->counter) : "d" (i));
+       __atomic_set(v, i);
 }
 
 static inline int atomic_add_return(int i, atomic_t *v)
@@ -78,19 +71,12 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new)
 
 static inline s64 atomic64_read(const atomic64_t *v)
 {
-       s64 c;
-
-       asm volatile(
-               "       lg      %0,%1\n"
-               : "=d" (c) : "Q" (v->counter));
-       return c;
+       return __atomic64_read(v);
 }
 
 static inline void atomic64_set(atomic64_t *v, s64 i)
 {
-       asm volatile(
-               "       stg     %1,%0\n"
-               : "=Q" (v->counter) : "d" (i));
+       __atomic64_set(v, i);
 }
 
 static inline s64 atomic64_add_return(s64 i, atomic64_t *v)
index 61467b9..82ed508 100644 (file)
@@ -8,6 +8,40 @@
 #ifndef __ARCH_S390_ATOMIC_OPS__
 #define __ARCH_S390_ATOMIC_OPS__
 
+static inline int __atomic_read(const atomic_t *v)
+{
+       int c;
+
+       asm volatile(
+               "       l       %0,%1\n"
+               : "=d" (c) : "Q" (v->counter));
+       return c;
+}
+
+static inline void __atomic_set(atomic_t *v, int i)
+{
+       asm volatile(
+               "       st      %1,%0\n"
+               : "=Q" (v->counter) : "d" (i));
+}
+
+static inline s64 __atomic64_read(const atomic64_t *v)
+{
+       s64 c;
+
+       asm volatile(
+               "       lg      %0,%1\n"
+               : "=d" (c) : "Q" (v->counter));
+       return c;
+}
+
+static inline void __atomic64_set(atomic64_t *v, s64 i)
+{
+       asm volatile(
+               "       stg     %1,%0\n"
+               : "=Q" (v->counter) : "d" (i));
+}
+
 #ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
 
 #define __ATOMIC_OP(op_name, op_type, op_string, op_barrier)           \