summaryrefslogtreecommitdiff
path: root/include/asm-generic
diff options
context:
space:
mode:
authorMark Rutland <mark.rutland@arm.com>2021-05-25 15:02:31 +0100
committerPeter Zijlstra <peterz@infradead.org>2021-05-26 13:20:52 +0200
commit3c1885187bc1faa0a1c52f7bd34550740a208169 (patch)
treec1d886cf48c71d59ae4fd6ae21aa6691a2edffde /include/asm-generic
parentb9b12978a8e9a4bb77746e74eae37e587f7f8994 (diff)
locking/atomic: delete !ARCH_ATOMIC remnants
Now that all architectures implement ARCH_ATOMIC, we can make it mandatory, removing the Kconfig symbol and logic for !ARCH_ATOMIC. There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Will Deacon <will@kernel.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lore.kernel.org/r/20210525140232.53872-33-mark.rutland@arm.com
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/atomic.h44
-rw-r--r--include/asm-generic/atomic64.h29
-rw-r--r--include/asm-generic/cmpxchg.h21
3 files changed, 3 insertions, 91 deletions
diff --git a/include/asm-generic/atomic.h b/include/asm-generic/atomic.h
index 649060fa0fe8..04b8be9f1a77 100644
--- a/include/asm-generic/atomic.h
+++ b/include/asm-generic/atomic.h
@@ -12,14 +12,6 @@
#include <asm/cmpxchg.h>
#include <asm/barrier.h>
-#ifdef CONFIG_ARCH_ATOMIC
-#define __ga_cmpxchg arch_cmpxchg
-#define __ga_xchg arch_xchg
-#else
-#define __ga_cmpxchg cmpxchg
-#define __ga_xchg xchg
-#endif
-
#ifdef CONFIG_SMP
/* we can build all atomic primitives from cmpxchg */
@@ -30,7 +22,7 @@ static inline void generic_atomic_##op(int i, atomic_t *v) \
int c, old; \
\
c = v->counter; \
- while ((old = __ga_cmpxchg(&v->counter, c, c c_op i)) != c) \
+ while ((old = arch_cmpxchg(&v->counter, c, c c_op i)) != c) \
c = old; \
}
@@ -40,7 +32,7 @@ static inline int generic_atomic_##op##_return(int i, atomic_t *v) \
int c, old; \
\
c = v->counter; \
- while ((old = __ga_cmpxchg(&v->counter, c, c c_op i)) != c) \
+ while ((old = arch_cmpxchg(&v->counter, c, c c_op i)) != c) \
c = old; \
\
return c c_op i; \
@@ -52,7 +44,7 @@ static inline int generic_atomic_fetch_##op(int i, atomic_t *v) \
int c, old; \
\
c = v->counter; \
- while ((old = __ga_cmpxchg(&v->counter, c, c c_op i)) != c) \
+ while ((old = arch_cmpxchg(&v->counter, c, c c_op i)) != c) \
c = old; \
\
return c; \
@@ -120,11 +112,6 @@ ATOMIC_OP(xor, ^)
#undef ATOMIC_OP_RETURN
#undef ATOMIC_OP
-#undef __ga_cmpxchg
-#undef __ga_xchg
-
-#ifdef CONFIG_ARCH_ATOMIC
-
#define arch_atomic_add_return generic_atomic_add_return
#define arch_atomic_sub_return generic_atomic_sub_return
@@ -146,29 +133,4 @@ ATOMIC_OP(xor, ^)
#define arch_atomic_xchg(ptr, v) (arch_xchg(&(ptr)->counter, (v)))
#define arch_atomic_cmpxchg(v, old, new) (arch_cmpxchg(&((v)->counter), (old), (new)))
-#else /* CONFIG_ARCH_ATOMIC */
-
-#define atomic_add_return generic_atomic_add_return
-#define atomic_sub_return generic_atomic_sub_return
-
-#define atomic_fetch_add generic_atomic_fetch_add
-#define atomic_fetch_sub generic_atomic_fetch_sub
-#define atomic_fetch_and generic_atomic_fetch_and
-#define atomic_fetch_or generic_atomic_fetch_or
-#define atomic_fetch_xor generic_atomic_fetch_xor
-
-#define atomic_add generic_atomic_add
-#define atomic_sub generic_atomic_sub
-#define atomic_and generic_atomic_and
-#define atomic_or generic_atomic_or
-#define atomic_xor generic_atomic_xor
-
-#define atomic_read(v) READ_ONCE((v)->counter)
-#define atomic_set(v, i) WRITE_ONCE(((v)->counter), (i))
-
-#define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v)))
-#define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
-
-#endif /* CONFIG_ARCH_ATOMIC */
-
#endif /* __ASM_GENERIC_ATOMIC_H */
diff --git a/include/asm-generic/atomic64.h b/include/asm-generic/atomic64.h
index c8c7d9fae820..100d24b02e52 100644
--- a/include/asm-generic/atomic64.h
+++ b/include/asm-generic/atomic64.h
@@ -49,8 +49,6 @@ extern s64 generic_atomic64_cmpxchg(atomic64_t *v, s64 o, s64 n);
extern s64 generic_atomic64_xchg(atomic64_t *v, s64 new);
extern s64 generic_atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u);
-#ifdef CONFIG_ARCH_ATOMIC
-
#define arch_atomic64_read generic_atomic64_read
#define arch_atomic64_set generic_atomic64_set
#define arch_atomic64_set_release generic_atomic64_set
@@ -74,31 +72,4 @@ extern s64 generic_atomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u);
#define arch_atomic64_xchg generic_atomic64_xchg
#define arch_atomic64_fetch_add_unless generic_atomic64_fetch_add_unless
-#else /* CONFIG_ARCH_ATOMIC */
-
-#define atomic64_read generic_atomic64_read
-#define atomic64_set generic_atomic64_set
-#define atomic64_set_release generic_atomic64_set
-
-#define atomic64_add generic_atomic64_add
-#define atomic64_add_return generic_atomic64_add_return
-#define atomic64_fetch_add generic_atomic64_fetch_add
-#define atomic64_sub generic_atomic64_sub
-#define atomic64_sub_return generic_atomic64_sub_return
-#define atomic64_fetch_sub generic_atomic64_fetch_sub
-
-#define atomic64_and generic_atomic64_and
-#define atomic64_fetch_and generic_atomic64_fetch_and
-#define atomic64_or generic_atomic64_or
-#define atomic64_fetch_or generic_atomic64_fetch_or
-#define atomic64_xor generic_atomic64_xor
-#define atomic64_fetch_xor generic_atomic64_fetch_xor
-
-#define atomic64_dec_if_positive generic_atomic64_dec_if_positive
-#define atomic64_cmpxchg generic_atomic64_cmpxchg
-#define atomic64_xchg generic_atomic64_xchg
-#define atomic64_fetch_add_unless generic_atomic64_fetch_add_unless
-
-#endif /* CONFIG_ARCH_ATOMIC */
-
#endif /* _ASM_GENERIC_ATOMIC64_H */
diff --git a/include/asm-generic/cmpxchg.h b/include/asm-generic/cmpxchg.h
index 98c931199089..dca4419922a9 100644
--- a/include/asm-generic/cmpxchg.h
+++ b/include/asm-generic/cmpxchg.h
@@ -97,8 +97,6 @@ unsigned long __generic_xchg(unsigned long x, volatile void *ptr, int size)
__generic_cmpxchg64_local((ptr), (o), (n))
-#ifdef CONFIG_ARCH_ATOMIC
-
#ifndef arch_xchg
#define arch_xchg generic_xchg
#endif
@@ -114,23 +112,4 @@ unsigned long __generic_xchg(unsigned long x, volatile void *ptr, int size)
#define arch_cmpxchg arch_cmpxchg_local
#define arch_cmpxchg64 arch_cmpxchg64_local
-#else /* CONFIG_ARCH_ATOMIC */
-
-#ifndef xchg
-#define xchg generic_xchg
-#endif
-
-#ifndef cmpxchg_local
-#define cmpxchg_local generic_cmpxchg_local
-#endif
-
-#ifndef cmpxchg64_local
-#define cmpxchg64_local generic_cmpxchg64_local
-#endif
-
-#define cmpxchg cmpxchg_local
-#define cmpxchg64 cmpxchg64_local
-
-#endif /* CONFIG_ARCH_ATOMIC */
-
#endif /* __ASM_GENERIC_CMPXCHG_H */