uatomic: update atomic set/read, use STORE_SHARED/LOAD_SHARED
[urcu.git] / urcu / uatomic_arch_ppc.h
index 40de9ff9909dc10327bb75e29aca9e33f7743f41..08a622dfe6f93cd547b0684ebfd398bf9284fe92 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 #include <urcu/compiler.h>
+#include <urcu/system.h>
 
 #ifndef __SIZEOF_LONG__
 #ifdef __powerpc64__
 
 #define ILLEGAL_INSTR  ".long  0xd00d00"
 
-#define uatomic_set(addr, v)                           \
-do {                                                   \
-       ACCESS_ONCE(*(addr)) = (v);                     \
-} while (0)
-
-#define uatomic_read(addr)     ACCESS_ONCE(*(addr))
+#define uatomic_set(addr, v)   STORE_SHARED(*(addr), (v))
+#define uatomic_read(addr)     LOAD_SHARED(*(addr))
 
 /*
  * Using a isync as second barrier for exchange to provide acquire semantic.
@@ -228,4 +225,7 @@ unsigned long _uatomic_add_return(void *addr, unsigned long val,
 #define uatomic_inc(addr)              uatomic_add((addr), 1)
 #define uatomic_dec(addr)              uatomic_add((addr), -1)
 
+#define URCU_CAS_AVAIL()       1
+#define compat_uatomic_cmpxchg(ptr, old, _new) uatomic_cmpxchg(ptr, old, _new)
+
 #endif /* _URCU_ARCH_UATOMIC_PPC_H */
This page took 0.023385 seconds and 4 git commands to generate.