summaryrefslogtreecommitdiffstats
path: root/sys/compat/linuxkpi/common/include/linux/compiler.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/compat/linuxkpi/common/include/linux/compiler.h')
-rw-r--r--sys/compat/linuxkpi/common/include/linux/compiler.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/compat/linuxkpi/common/include/linux/compiler.h b/sys/compat/linuxkpi/common/include/linux/compiler.h
index 6381358..b6ea98f 100644
--- a/sys/compat/linuxkpi/common/include/linux/compiler.h
+++ b/sys/compat/linuxkpi/common/include/linux/compiler.h
@@ -72,4 +72,20 @@
#define barrier() __asm__ __volatile__("": : :"memory")
+#define ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x))
+
+#define WRITE_ONCE(x,v) do { \
+ barrier(); \
+ ACCESS_ONCE(x) = (v); \
+ barrier(); \
+} while (0)
+
+#define READ_ONCE(x) ({ \
+ __typeof(x) __var; \
+ barrier(); \
+ __var = ACCESS_ONCE(x); \
+ barrier(); \
+ __var; \
+})
+
#endif /* _LINUX_COMPILER_H_ */
OpenPOWER on IntegriCloud