Commit 8286d51a authored by Palmer Dabbelt's avatar Palmer Dabbelt
Browse files

RISC-V: Comment on why {,cmp}xchg is ordered how it is



This is another memory model FIXME.

Signed-off-by: default avatarPalmer Dabbelt <palmer@sifive.com>
parent 4650d02a
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -300,8 +300,13 @@ static __always_inline long atomic64_inc_not_zero(atomic64_t *v)

/*
 * atomic_{cmp,}xchg is required to have exactly the same ordering semantics as
 * {cmp,}xchg and the operations that return, so they need a barrier.  We just
 * use the other implementations directly.
 * {cmp,}xchg and the operations that return, so they need a barrier.
 */
/*
 * FIXME: atomic_cmpxchg_{acquire,release,relaxed} are all implemented by
 * assigning the same barrier to both the LR and SC operations, but that might
 * not make any sense.  We're waiting on a memory model specification to
 * determine exactly what the right thing to do is here.
 */
#define ATOMIC_OP(c_t, prefix, c_or, size, asm_or)						\
static __always_inline c_t atomic##prefix##_cmpxchg##c_or(atomic##prefix##_t *v, c_t o, c_t n) 	\