arch_cmpxchg
arch_cmpxchg((ptr), (o), (n)); \
#define arch_cmpxchg64 arch_cmpxchg
#define arch_sync_cmpxchg arch_cmpxchg
arch_cmpxchg((ptr), (o), (n)); \
arch_cmpxchg((ptr), (o), (n)); \
load32 = arch_cmpxchg(ptr32, old32, new32);
load32 = arch_cmpxchg(ptr32, old32, new32);
arch_cmpxchg((ptr), (o), (n)); \
arch_cmpxchg((ptr), (o), (n)); \
return arch_cmpxchg(&v->counter, old, new);
return arch_cmpxchg(&v->counter, old, new);
#define arch_cmpxchg64 arch_cmpxchg
#define arch_cmpxchg_local arch_cmpxchg
#define arch_cmpxchg64_local arch_cmpxchg
__prev = arch_cmpxchg((ptr), (__old), (__new)); \
__prev = arch_cmpxchg((ptr), (__old), (__new)); \
return arch_cmpxchg(&v->counter, old, new);
return arch_cmpxchg(&v->counter, old, new);
arch_cmpxchg((ptr), (o), (n)); \
while ((old = arch_cmpxchg(&v->counter, c, c c_op i)) != c) \
while ((old = arch_cmpxchg(&v->counter, c, c c_op i)) != c) \
while ((old = arch_cmpxchg(&v->counter, c, c c_op i)) != c) \
#if defined(arch_cmpxchg)
#define raw_cmpxchg arch_cmpxchg
__atomic_op_fence(arch_cmpxchg, __VA_ARGS__)
__atomic_op_acquire(arch_cmpxchg, __VA_ARGS__)
#elif defined(arch_cmpxchg)
#define raw_cmpxchg_acquire arch_cmpxchg
__atomic_op_release(arch_cmpxchg, __VA_ARGS__)
#elif defined(arch_cmpxchg)
#define raw_cmpxchg_release arch_cmpxchg
#elif defined(arch_cmpxchg)
#define raw_cmpxchg_relaxed arch_cmpxchg