diff --git a/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h b/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h index 4eb43c8373c..4fb34869f8a 100644 --- a/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h +++ b/libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h @@ -39,7 +39,7 @@ namespace __cxxabiv1 #ifdef __ARM_EABI__ // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ + // guard variable. #define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) #define _GLIBCXX_GUARD_SET(x) *(x) = 1 #define _GLIBCXX_GUARD_BIT 1 @@ -47,6 +47,11 @@ namespace __cxxabiv1 #define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) typedef int __guard; +#define _GLIBCXX_GUARD_TEST_AND_ACQUIRE(x) \ + _GLIBCXX_GUARD_TEST(__atomic_load_n(x, __ATOMIC_ACQUIRE)) +#define _GLIBCXX_GUARD_SET_AND_RELEASE(x) \ + __atomic_store_n(x, 1, __ATOMIC_RELEASE) + // We also want the element size in array cookies. #define _GLIBCXX_ELTSIZE_IN_COOKIE 1