32 #ifndef V8_ATOMICOPS_INTERNALS_ARM_GCC_H_
33 #define V8_ATOMICOPS_INTERNALS_ARM_GCC_H_
59 if (!pLinuxKernelCmpxchg(old_value, new_value,
60 const_cast<Atomic32*>(ptr))) {
64 }
while (prev_value == old_value);
73 }
while (pLinuxKernelCmpxchg(old_value, new_value,
74 const_cast<Atomic32*>(ptr)));
88 Atomic32 new_value = old_value + increment;
89 if (pLinuxKernelCmpxchg(old_value, new_value,
90 const_cast<Atomic32*>(ptr)) == 0) {
115 pLinuxKernelMemoryBarrier();
145 #endif // V8_ATOMICOPS_INTERNALS_ARM_GCC_H_
void Acquire_Store(volatile Atomic32 *ptr, Atomic32 value)
void(* LinuxKernelMemoryBarrierFunc)(void)
Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
Atomic32 Release_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)
LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak))
Atomic32(* LinuxKernelCmpxchgFunc)(Atomic32 old_value, Atomic32 new_value, volatile Atomic32 *ptr)
void NoBarrier_Store(volatile Atomic32 *ptr, Atomic32 value)
Atomic32 NoBarrier_AtomicExchange(volatile Atomic32 *ptr, Atomic32 new_value)
Atomic32 Release_Load(volatile const Atomic32 *ptr)
Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32 *ptr, Atomic32 increment)
void Release_Store(volatile Atomic32 *ptr, Atomic32 value)
Atomic32 Barrier_AtomicIncrement(volatile Atomic32 *ptr, Atomic32 increment)
Atomic32 NoBarrier_Load(volatile const Atomic32 *ptr)
Atomic32 Acquire_Load(volatile const Atomic32 *ptr)
Atomic32 Acquire_CompareAndSwap(volatile Atomic32 *ptr, Atomic32 old_value, Atomic32 new_value)