Commit a5fb82d7 authored by Mark Rutland's avatar Mark Rutland Committed by Peter Zijlstra
Browse files

locking/atomic: csky: move to ARCH_ATOMIC



We'd like all architectures to convert to ARCH_ATOMIC, as once all
architectures are converted it will be possible to make significant
cleanups to the atomics headers, and this will make it much easier to
generically enable atomic functionality (e.g. debug logic in the
instrumented wrappers).

As a step towards that, this patch migrates csky to ARCH_ATOMIC. The
arch code provides arch_{atomic,atomic64,xchg,cmpxchg}*(), and common
code wraps these with optional instrumentation to provide the regular
functions.

Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
Acked-by: default avatarGuo Ren <guoren@kernel.org>
Cc: Boqun Feng <boqun.feng@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210525140232.53872-17-mark.rutland@arm.com
parent fc63a6e0
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2,6 +2,7 @@
config CSKY
	def_bool y
	select ARCH_32BIT_OFF_T
	select ARCH_ATOMIC
	select ARCH_HAS_DMA_PREP_COHERENT
	select ARCH_HAS_GCOV_PROFILE_ALL
	select ARCH_HAS_SYNC_DMA_FOR_CPU
+4 −4
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@ extern void __bad_xchg(void);
	__ret;							\
})

#define xchg_relaxed(ptr, x) \
#define arch_xchg_relaxed(ptr, x) \
		(__xchg_relaxed((x), (ptr), sizeof(*(ptr))))

#define __cmpxchg_relaxed(ptr, old, new, size)			\
@@ -61,14 +61,14 @@ extern void __bad_xchg(void);
	__ret;							\
})

#define cmpxchg_relaxed(ptr, o, n) \
#define arch_cmpxchg_relaxed(ptr, o, n) \
	(__cmpxchg_relaxed((ptr), (o), (n), sizeof(*(ptr))))

#define cmpxchg(ptr, o, n) 					\
#define arch_cmpxchg(ptr, o, n) 				\
({								\
	__typeof__(*(ptr)) __ret;				\
	__smp_release_fence();					\
	__ret = cmpxchg_relaxed(ptr, o, n);			\
	__ret = arch_cmpxchg_relaxed(ptr, o, n);		\
	__smp_acquire_fence();					\
	__ret;							\
})