Rewrite of likely, unlikely, barrier and ACCESS_ONCE
[urcu.git] / compiler.h
index 2507ec88a0a6a6fbb11e84f73843bb042a9d850e..717465c4d8570ce443e8cec4bb5b1abe3f3a0765 100644 (file)
  * IBM's contributions to this file may be relicensed under LGPLv2 or later.
  */
 
-/* The "volatile" is due to gcc bugs */
-#define barrier() __asm__ __volatile__("": : :"memory")
+#define likely()       __builtin_expect(!!(x), 1)
+#define unlikely()     __builtin_expect(!!(x), 0)
 
-#define likely(x)       __builtin_expect(!!(x), 1)
-#define unlikely(x)     __builtin_expect(!!(x), 0)
+#define        barrier()       asm volatile("" : : : "memory");
 
 /*
  * Instruct the compiler to perform only a single access to a variable
@@ -43,6 +42,6 @@
  * use is to mediate communication between process-level code and irq/NMI
  * handlers, all running on the same CPU.
  */
-#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
+#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&x)
 
 #endif /* _COMPILER_H */
This page took 0.02329 seconds and 4 git commands to generate.