Index: common/lib/libc/arch/arm/atomic/atomic_swap.S =================================================================== RCS file: /cvsroot/src/common/lib/libc/arch/arm/atomic/atomic_swap.S,v retrieving revision 1.11 diff -u -p -r1.11 atomic_swap.S --- common/lib/libc/arch/arm/atomic/atomic_swap.S 28 Jun 2014 20:18:55 -0000 1.11 +++ common/lib/libc/arch/arm/atomic/atomic_swap.S 17 Apr 2015 06:29:10 -0000 @@ -87,6 +87,11 @@ STRONG_ALIAS(_atomic_swap_ptr,_atomic_sw #if (!defined(_KERNEL) || defined(_RUMPKERNEL)) && !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_4) mov r1, #0 +#ifdef _ARM_ARCH_7 + dmb +#else + mcr p15, 0, r3, c7, c10, 5 /* data memory barrier */ +#endif strb r1, [r0] RET END(__sync_lock_release_4) @@ -123,6 +128,11 @@ STRONG_ALIAS(_atomic_swap_uchar,_atomic_ #if (!defined(_KERNEL) || defined(_RUMPKERNEL)) && !defined(_STANDALONE) ENTRY_NP(__sync_lock_release_1) mov r1, #0 +#ifdef _ARM_ARCH_7 + dmb +#else + mcr p15, 0, r3, c7, c10, 5 /* data memory barrier */ +#endif strb r1, [r0] RET END(__sync_lock_release_1)