Go to the documentation of this file. 1 #ifndef BOOST_DETAIL_ATOMIC_GCC_ARMV6P_HPP
2 #define BOOST_DETAIL_ATOMIC_GCC_ARMV6P_HPP
37 #define BOOST_ATOMIC_CHAR_LOCK_FREE 2
38 #define BOOST_ATOMIC_CHAR16_T_LOCK_FREE 2
39 #define BOOST_ATOMIC_CHAR32_T_LOCK_FREE 2
40 #define BOOST_ATOMIC_WCHAR_T_LOCK_FREE 2
41 #define BOOST_ATOMIC_SHORT_LOCK_FREE 2
42 #define BOOST_ATOMIC_INT_LOCK_FREE 2
43 #define BOOST_ATOMIC_LONG_LOCK_FREE 2
44 #define BOOST_ATOMIC_LLONG_LOCK_FREE 0
45 #define BOOST_ATOMIC_ADDRESS_LOCK_FREE 2
46 #define BOOST_ATOMIC_BOOL_LOCK_FREE 2
72 #if defined(__thumb__) && !defined(__ARM_ARCH_7A__)
74 #define BOOST_ATOMIC_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 1f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "1: "
75 #define BOOST_ATOMIC_ARM_ASM_END(TMPREG) "adr " #TMPREG ", 1f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "1: "
79 #define BOOST_ATOMIC_ARM_ASM_START(TMPREG)
80 #define BOOST_ATOMIC_ARM_ASM_END(TMPREG)
83 #if defined(__ARM_ARCH_7A__)
85 #define BOOST_ATOMIC_ARM_DMB "dmb\n"
87 #define BOOST_ATOMIC_ARM_DMB "mcr\tp15, 0, r0, c7, c10, 5\n"
94 __asm__ __volatile__ (
98 :
"=&l" (brtmp) ::
"memory"
158 "strexeq %2, %5, %3\n"
177 #define BOOST_ATOMIC_THREAD_FENCE 2
191 #define BOOST_ATOMIC_SIGNAL_FENCE 2
195 __asm__ __volatile__ (
"" :::
"memory");
200 #undef BOOST_ATOMIC_ARM_ASM_START
201 #undef BOOST_ATOMIC_ARM_ASM_END
static void platform_fence_before(memory_order order)
static void atomic_signal_fence(memory_order)
bool platform_cmpxchg32(T &expected, T desired, volatile T *ptr)
static void arm_barrier(void)
static void platform_fence_before_store(memory_order order)
static void platform_fence_after_load(memory_order order)
static void platform_fence_after(memory_order order)
#define BOOST_ATOMIC_ARM_ASM_START(TMPREG)
#define BOOST_ATOMIC_ARM_ASM_END(TMPREG)
#define BOOST_ATOMIC_ARM_DMB
static void atomic_thread_fence(memory_order order)
static void platform_fence_after_store(memory_order order)
rosatomic
Author(s): Josh Faust
autogenerated on Wed Mar 2 2022 00:54:12