< prev index next >

src/os_cpu/linux_ppc/vm/atomic_linux_ppc.hpp

Print this page

        

*** 287,306 **** inline void* Atomic::xchg_ptr(void* exchange_value, volatile void* dest) { return (void*)xchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest); } inline void cmpxchg_pre_membar(cmpxchg_memory_order order) { ! if (order != memory_order_relaxed) { __asm__ __volatile__ ( /* fence */ strasm_sync ); } } inline void cmpxchg_post_membar(cmpxchg_memory_order order) { ! if (order != memory_order_relaxed) { __asm__ __volatile__ ( /* fence */ strasm_sync ); } --- 287,313 ---- inline void* Atomic::xchg_ptr(void* exchange_value, volatile void* dest) { return (void*)xchg_ptr((intptr_t)exchange_value, (volatile intptr_t*)dest); } inline void cmpxchg_pre_membar(cmpxchg_memory_order order) { ! if (order == memory_order_release) { ! __asm__ __volatile__ ( ! /* release */ ! strasm_lwsync ! ); ! } else if (order != memory_order_relaxed) { __asm__ __volatile__ ( /* fence */ strasm_sync ); } } inline void cmpxchg_post_membar(cmpxchg_memory_order order) { ! if (order == memory_order_release) { ! // no post membar ! } else if (order == memory_order_conservative) { __asm__ __volatile__ ( /* fence */ strasm_sync ); }
< prev index next >