]> Pileus Git - ~andy/linux/blobdiff - arch/mips/include/asm/barrier.h
arch: Introduce smp_load_acquire(), smp_store_release()
[~andy/linux] / arch / mips / include / asm / barrier.h
index f26d8e1bf3c37575b4b42144282587caaa1c6a3f..e1aa4e4c2984230e2353760a4b9863387d90ad24 100644 (file)
 #define nudge_writes() mb()
 #endif
 
+#define smp_store_release(p, v)                                                \
+do {                                                                   \
+       compiletime_assert_atomic_type(*p);                             \
+       smp_mb();                                                       \
+       ACCESS_ONCE(*p) = (v);                                          \
+} while (0)
+
+#define smp_load_acquire(p)                                            \
+({                                                                     \
+       typeof(*p) ___p1 = ACCESS_ONCE(*p);                             \
+       compiletime_assert_atomic_type(*p);                             \
+       smp_mb();                                                       \
+       ___p1;                                                          \
+})
+
 #endif /* __ASM_BARRIER_H */