|
@@ -179,14 +179,23 @@ do { \
|
|
|
#define mb() asm volatile ("membar" : : :"memory")
|
|
|
#define rmb() asm volatile ("membar" : : :"memory")
|
|
|
#define wmb() asm volatile ("membar" : : :"memory")
|
|
|
-#define set_mb(var, value) do { var = value; mb(); } while (0)
|
|
|
+#define read_barrier_depends() barrier()
|
|
|
|
|
|
-#define smp_mb() mb()
|
|
|
-#define smp_rmb() rmb()
|
|
|
-#define smp_wmb() wmb()
|
|
|
-
|
|
|
-#define read_barrier_depends() do {} while(0)
|
|
|
+#ifdef CONFIG_SMP
|
|
|
+#define smp_mb() mb()
|
|
|
+#define smp_rmb() rmb()
|
|
|
+#define smp_wmb() wmb()
|
|
|
#define smp_read_barrier_depends() read_barrier_depends()
|
|
|
+#define set_mb(var, value) \
|
|
|
+ do { xchg(&var, (value)); } while (0)
|
|
|
+#else
|
|
|
+#define smp_mb() barrier()
|
|
|
+#define smp_rmb() barrier()
|
|
|
+#define smp_wmb() barrier()
|
|
|
+#define smp_read_barrier_depends() do {} while(0)
|
|
|
+#define set_mb(var, value) \
|
|
|
+ do { var = (value); barrier(); } while (0)
|
|
|
+#endif
|
|
|
|
|
|
#define HARD_RESET_NOW() \
|
|
|
do { \
|