| .. | .. |
|---|
| 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 */ |
|---|