static inline unsigned long __hle_acquire_test_and_set(unsigned long* ptr) { return __atomic_exchange_n(ptr, 1, __ATOMIC_ACQUIRE|__ATOMIC_HLE_ACQUIRE); } static inline void __hle_release_clear (unsigned long* ptr) { __atomic_store_n(ptr,0, __ATOMIC_RELEASE|__ATOMIC_HLE_RELEASE); }