hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/tools/arch/x86/include/asm/barrier.h
....@@ -21,9 +21,26 @@
2121 #define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
2222 #define wmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
2323 #elif defined(__x86_64__)
24
-#define mb() asm volatile("mfence":::"memory")
25
-#define rmb() asm volatile("lfence":::"memory")
24
+#define mb() asm volatile("mfence" ::: "memory")
25
+#define rmb() asm volatile("lfence" ::: "memory")
2626 #define wmb() asm volatile("sfence" ::: "memory")
27
+#define smp_rmb() barrier()
28
+#define smp_wmb() barrier()
29
+#define smp_mb() asm volatile("lock; addl $0,-132(%%rsp)" ::: "memory", "cc")
2730 #endif
2831
32
+#if defined(__x86_64__)
33
+#define smp_store_release(p, v) \
34
+do { \
35
+ barrier(); \
36
+ WRITE_ONCE(*p, v); \
37
+} while (0)
38
+
39
+#define smp_load_acquire(p) \
40
+({ \
41
+ typeof(*p) ___p1 = READ_ONCE(*p); \
42
+ barrier(); \
43
+ ___p1; \
44
+})
45
+#endif /* defined(__x86_64__) */
2946 #endif /* _TOOLS_LINUX_ASM_X86_BARRIER_H */