diff --git a/sys/compat/linuxkpi/common/include/linux/compiler.h b/sys/compat/linuxkpi/common/include/linux/compiler.h --- a/sys/compat/linuxkpi/common/include/linux/compiler.h +++ b/sys/compat/linuxkpi/common/include/linux/compiler.h @@ -101,16 +101,18 @@ #define ___PASTE(a,b) a##b #define __PASTE(a,b) ___PASTE(a,b) +#define ACCESS_ONCE(x) (*(volatile __typeof(x) *)(uintptr_t)&(x)) + #define WRITE_ONCE(x,v) do { \ barrier(); \ - (*(volatile __typeof(x) *)(uintptr_t)&(x)) = (v); \ + ACCESS_ONCE(x) = (v); \ barrier(); \ } while (0) #define READ_ONCE(x) ({ \ __typeof(x) __var = ({ \ barrier(); \ - (*(const volatile __typeof(x) *)&(x)); \ + ACCESS_ONCE(x); \ }); \ barrier(); \ __var; \