equal
deleted
inserted
replaced
86 |
86 |
87 template<size_t byte_size> |
87 template<size_t byte_size> |
88 struct Atomic::PlatformOrderedStore<byte_size, RELEASE_X> |
88 struct Atomic::PlatformOrderedStore<byte_size, RELEASE_X> |
89 { |
89 { |
90 template <typename T> |
90 template <typename T> |
91 void operator()(T v, volatile T* p) const { __atomic_store(const_cast<T*>(p), &v, __ATOMIC_RELEASE); } |
91 void operator()(volatile T* p, T v) const { __atomic_store(const_cast<T*>(p), &v, __ATOMIC_RELEASE); } |
92 }; |
92 }; |
93 |
93 |
94 template<size_t byte_size> |
94 template<size_t byte_size> |
95 struct Atomic::PlatformOrderedStore<byte_size, RELEASE_X_FENCE> |
95 struct Atomic::PlatformOrderedStore<byte_size, RELEASE_X_FENCE> |
96 { |
96 { |
97 template <typename T> |
97 template <typename T> |
98 void operator()(T v, volatile T* p) const { release_store(p, v); OrderAccess::fence(); } |
98 void operator()(volatile T* p, T v) const { release_store(p, v); OrderAccess::fence(); } |
99 }; |
99 }; |
100 |
100 |
101 #endif // OS_CPU_LINUX_AARCH64_ATOMIC_LINUX_AARCH64_HPP |
101 #endif // OS_CPU_LINUX_AARCH64_ATOMIC_LINUX_AARCH64_HPP |