49 |
case memory_order_release: |
case memory_order_release: |
50 |
#ifdef _ARCH_PPC64 |
#ifdef _ARCH_PPC64 |
51 |
asm volatile("lwsync" : : : "memory"); |
asm volatile("lwsync" : : : "memory"); |
52 |
#elif defined(__powerpc__) |
#elif defined(_ARCH_PPC) |
53 |
asm volatile("sync" : : : "memory"); |
asm volatile("sync" : : : "memory"); |
54 |
#else |
#else |
55 |
asm volatile("" : : : "memory"); |
asm volatile("" : : : "memory"); |
57 |
break; |
break; |
58 |
|
|
59 |
case memory_order_seq_cst: |
case memory_order_seq_cst: |
60 |
#ifdef __powerpc__ |
#ifdef _ARCH_PPC |
61 |
asm volatile("sync" : : : "memory"); |
asm volatile("sync" : : : "memory"); |
62 |
#elif defined(__i386__) || defined(__x86_64__) |
#elif defined(__i386__) || defined(__x86_64__) |
63 |
asm volatile("lock; addl $0,0(%%esp)" : : : "memory"); |
asm volatile("lock; addl $0,0(%%esp)" : : : "memory"); |
85 |
// fall-through |
// fall-through |
86 |
|
|
87 |
case memory_order_acquire: |
case memory_order_acquire: |
88 |
#ifdef __powerpc__ |
#ifdef _ARCH_PPC |
89 |
// PPC load-acquire: artificial dependency + isync |
// PPC load-acquire: artificial dependency + isync |
90 |
asm volatile( |
asm volatile( |
91 |
#ifdef _ARCH_PPC64 |
#ifdef _ARCH_PPC64 |