X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=include%2Furcu%2Fcompiler.h;fp=include%2Furcu%2Fcompiler.h;h=48211293417131c6ff73d0d107de84c4284d9589;hp=5b994076f47c913b28d636ae6e7262261befe103;hb=865024e9245c55286122413aaf7366dc06a00f27;hpb=3afcf5a0407c69b32603a249e8e7b3d309584a85 diff --git a/include/urcu/compiler.h b/include/urcu/compiler.h index 5b99407..4821129 100644 --- a/include/urcu/compiler.h +++ b/include/urcu/compiler.h @@ -15,10 +15,16 @@ # include /* for std::remove_cv */ #endif +#include + #define caa_likely(x) __builtin_expect(!!(x), 1) #define caa_unlikely(x) __builtin_expect(!!(x), 0) -#define cmm_barrier() __asm__ __volatile__ ("" : : : "memory") +#ifdef CONFIG_RCU_USE_ATOMIC_BUILTINS +# define cmm_barrier() __atomic_signal_fence(__ATOMIC_SEQ_CST) +#else +# define cmm_barrier() __asm__ __volatile__ ("" : : : "memory") +#endif /* * Instruct the compiler to perform only a single access to a variable