|
@@ -252,7 +252,12 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
|
|
|
({ 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; })
|
|
|
+({ \
|
|
|
+ union { typeof(x) __val; char __c[1]; } __u = \
|
|
|
+ { .__val = (__force typeof(x)) (val) }; \
|
|
|
+ __write_once_size(&(x), __u.__c, sizeof(x)); \
|
|
|
+ __u.__val; \
|
|
|
+})
|
|
|
|
|
|
/**
|
|
|
* READ_ONCE_CTRL - Read a value heading a control dependency
|