equal
deleted
inserted
replaced
287 template<> |
287 template<> |
288 struct Atomic::PlatformCmpxchg<1> : Atomic::CmpxchgByteUsingInt {}; |
288 struct Atomic::PlatformCmpxchg<1> : Atomic::CmpxchgByteUsingInt {}; |
289 |
289 |
290 template<> |
290 template<> |
291 template<typename T> |
291 template<typename T> |
292 inline T Atomic::PlatformCmpxchg<4>::operator()(T xchg_val, |
292 inline T Atomic::PlatformCmpxchg<4>::operator()(T volatile* dest, |
293 T volatile* dest, |
|
294 T cmp_val, |
293 T cmp_val, |
|
294 T xchg_val, |
295 atomic_memory_order unused) const { |
295 atomic_memory_order unused) const { |
296 STATIC_ASSERT(4 == sizeof(T)); |
296 STATIC_ASSERT(4 == sizeof(T)); |
297 T old; |
297 T old; |
298 |
298 |
299 __asm__ __volatile__ ( |
299 __asm__ __volatile__ ( |
311 return old; |
311 return old; |
312 } |
312 } |
313 |
313 |
314 template<> |
314 template<> |
315 template<typename T> |
315 template<typename T> |
316 inline T Atomic::PlatformCmpxchg<8>::operator()(T xchg_val, |
316 inline T Atomic::PlatformCmpxchg<8>::operator()(T volatile* dest, |
317 T volatile* dest, |
|
318 T cmp_val, |
317 T cmp_val, |
|
318 T xchg_val, |
319 atomic_memory_order unused) const { |
319 atomic_memory_order unused) const { |
320 STATIC_ASSERT(8 == sizeof(T)); |
320 STATIC_ASSERT(8 == sizeof(T)); |
321 T old; |
321 T old; |
322 |
322 |
323 __asm__ __volatile__ ( |
323 __asm__ __volatile__ ( |