18#include "../loadstore/atomic_load.h"
19#include "../loadstore/atomic_store.h"
21#include "../test_and_set_t_is_ao_t.h"
23#define AO_NO_DD_ORDERING
29 __asm__ __volatile__(
"mb" : : :
"memory");
31#define AO_HAVE_nop_full
36 __asm__ __volatile__(
"wmb" : : :
"memory");
38#define AO_HAVE_nop_write
49 unsigned long was_equal;
60 :
"=&r" (temp),
"+m" (*addr),
"=&r" (was_equal)
61 :
"r" (new_val),
"Ir" (old)
63 return (
int)was_equal;
65#define AO_HAVE_compare_and_swap
AO_INLINE int AO_compare_and_swap(volatile AO_t *addr, AO_t old, AO_t new_val)
AO_INLINE void AO_nop_write(void)
AO_INLINE void AO_nop_full(void)