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_store(memory_order order)
#define BOOST_ATOMIC_ARM_ASM_START(TMPREG)
static void atomic_signal_fence(memory_order)
static void platform_fence_after_load(memory_order order)
static void atomic_thread_fence(memory_order order)
static void platform_fence_after_store(memory_order order)
static void platform_fence_after(memory_order order)
static void arm_barrier(void)
#define BOOST_ATOMIC_ARM_ASM_END(TMPREG)
bool platform_cmpxchg32(T &expected, T desired, volatile T *ptr)
#define BOOST_ATOMIC_ARM_DMB
static void platform_fence_before(memory_order order)