|
@@ -151,11 +151,21 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
|
|
|
* required ordering.
|
|
|
*/
|
|
|
|
|
|
-#define READ_ONCE(x) \
|
|
|
- ({ union { typeof(x) __val; char __c[1]; } __u; __read_once_size(&(x), __u.__c, sizeof(x)); __u.__val; })
|
|
|
-
|
|
|
-#define WRITE_ONCE(x, val) \
|
|
|
- ({ union { typeof(x) __val; char __c[1]; } __u = { .__val = (val) }; __write_once_size(&(x), __u.__c, sizeof(x)); __u.__val; })
|
|
|
+#define READ_ONCE(x) \
|
|
|
+({ \
|
|
|
+ union { typeof(x) __val; char __c[1]; } __u = \
|
|
|
+ { .__c = { 0 } }; \
|
|
|
+ __read_once_size(&(x), __u.__c, sizeof(x)); \
|
|
|
+ __u.__val; \
|
|
|
+})
|
|
|
+
|
|
|
+#define WRITE_ONCE(x, val) \
|
|
|
+({ \
|
|
|
+ union { typeof(x) __val; char __c[1]; } __u = \
|
|
|
+ { .__val = (val) }; \
|
|
|
+ __write_once_size(&(x), __u.__c, sizeof(x)); \
|
|
|
+ __u.__val; \
|
|
|
+})
|
|
|
|
|
|
|
|
|
#ifndef __fallthrough
|