.. | .. |
---|
27 | 27 | #define rmb() __asm__ __volatile__ ("sync" : : : "memory") |
---|
28 | 28 | #define wmb() __asm__ __volatile__ ("sync" : : : "memory") |
---|
29 | 29 | |
---|
| 30 | +#if defined(__powerpc64__) |
---|
| 31 | +#define smp_lwsync() __asm__ __volatile__ ("lwsync" : : : "memory") |
---|
| 32 | + |
---|
| 33 | +#define smp_store_release(p, v) \ |
---|
| 34 | +do { \ |
---|
| 35 | + smp_lwsync(); \ |
---|
| 36 | + WRITE_ONCE(*p, v); \ |
---|
| 37 | +} while (0) |
---|
| 38 | + |
---|
| 39 | +#define smp_load_acquire(p) \ |
---|
| 40 | +({ \ |
---|
| 41 | + typeof(*p) ___p1 = READ_ONCE(*p); \ |
---|
| 42 | + smp_lwsync(); \ |
---|
| 43 | + ___p1; \ |
---|
| 44 | +}) |
---|
| 45 | +#endif /* defined(__powerpc64__) */ |
---|
30 | 46 | #endif /* _TOOLS_LINUX_ASM_POWERPC_BARRIER_H */ |
---|