Messages in this thread Patch in this message | | | From | Uros Bizjak <> | Subject | [PATCH 6/6] locking/atomic/x86: Reorder a couple of arch_atomic64 functions | Date | Tue, 9 Apr 2024 12:03:57 +0200 |
| |
Reorder a couple of arch_atomic64 functions in arch/x86/include/asm/atomic64_32.h to better match their sequence of declarations between x86_32 and x86_64.
No functional changes intended.
Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Peter Zijlstra <peterz@infradead.org> --- arch/x86/include/asm/atomic64_32.h | 46 +++++++++++++++--------------- 1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/arch/x86/include/asm/atomic64_32.h b/arch/x86/include/asm/atomic64_32.h index 862448db1207..3864d82a9339 100644 --- a/arch/x86/include/asm/atomic64_32.h +++ b/arch/x86/include/asm/atomic64_32.h @@ -12,7 +12,7 @@ typedef struct { s64 __aligned(8) counter; } atomic64_t; -#define ATOMIC64_INIT(val) { (val) } +#define ATOMIC64_INIT(i) { (i) } #define __ATOMIC64_DECL(sym) void atomic64_##sym(atomic64_t *, ...) #ifndef ATOMIC64_EXPORT @@ -61,17 +61,21 @@ ATOMIC64_DECL(add_unless); #undef __ATOMIC64_DECL #undef ATOMIC64_EXPORT -static __always_inline s64 arch_atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) +static __always_inline s64 arch_atomic64_read(const atomic64_t *v) { - return arch_cmpxchg64(&v->counter, old, new); + s64 r; + alternative_atomic64(read, "=&A" (r), "c" (v) : "memory"); + return r; } -#define arch_atomic64_cmpxchg arch_atomic64_cmpxchg -static __always_inline bool arch_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) +static __always_inline void arch_atomic64_set(atomic64_t *v, s64 i) { - return arch_try_cmpxchg64(&v->counter, old, new); + unsigned high = (unsigned)(i >> 32); + unsigned low = (unsigned)i; + alternative_atomic64(set, /* no output */, + "S" (v), "b" (low), "c" (high) + : "eax", "edx", "memory"); } -#define arch_atomic64_try_cmpxchg arch_atomic64_try_cmpxchg static __always_inline s64 arch_atomic64_xchg(atomic64_t *v, s64 n) { @@ -85,22 +89,6 @@ static __always_inline s64 arch_atomic64_xchg(atomic64_t *v, s64 n) } #define arch_atomic64_xchg arch_atomic64_xchg -static __always_inline void arch_atomic64_set(atomic64_t *v, s64 i) -{ - unsigned high = (unsigned)(i >> 32); - unsigned low = (unsigned)i; - alternative_atomic64(set, /* no output */, - "S" (v), "b" (low), "c" (high) - : "eax", "edx", "memory"); -} - -static __always_inline s64 arch_atomic64_read(const atomic64_t *v) -{ - s64 r; - alternative_atomic64(read, "=&A" (r), "c" (v) : "memory"); - return r; -} - static __always_inline s64 arch_atomic64_add_return(s64 i, atomic64_t *v) { alternative_atomic64(add_return, @@ -199,6 +187,18 @@ static __always_inline s64 arch_atomic64_dec_if_positive(atomic64_t *v) #undef alternative_atomic64 #undef __alternative_atomic64 +static __always_inline s64 arch_atomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) +{ + return arch_cmpxchg64(&v->counter, old, new); +} +#define arch_atomic64_cmpxchg arch_atomic64_cmpxchg + +static __always_inline bool arch_atomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) +{ + return arch_try_cmpxchg64(&v->counter, old, new); +} +#define arch_atomic64_try_cmpxchg arch_atomic64_try_cmpxchg + static __always_inline s64 arch_atomic64_fetch_add(s64 i, atomic64_t *v) { s64 val = __READ_ONCE(v->counter); -- 2.44.0
| |