# HG changeset patch # User aph # Date 1338206478 14400 # Node ID f293db049783c68b394cb7a5e9c6440c80eba4e9 # Parent 73a07d24174ef3564a16f423853486044547ddb4 Use ldrexd for atomic reads on ARMv7. 2012-05-28 Andrew Haley * os_linux_zero.hpp (atomic_copy64): Use ldrexd for atomic reads on ARMv7. diff -r 73a07d24174e -r f293db049783 src/os_cpu/linux_zero/vm/os_linux_zero.hpp --- a/src/os_cpu/linux_zero/vm/os_linux_zero.hpp Thu May 17 13:45:50 2012 -0400 +++ b/src/os_cpu/linux_zero/vm/os_linux_zero.hpp Mon May 28 08:01:18 2012 -0400 @@ -48,6 +48,12 @@ "std %0, 0(%2)\n" : "=r"(tmp) : "a"(src), "a"(dst)); +#elif defined(__ARM_ARCH_7A__) + jlong tmp; + asm volatile ("ldrexd %0, [%1]\n" + : "=r"(tmp) + : "r"(src), "m"(src)); + *(jlong *) dst = tmp; #else *(jlong *) dst = *(jlong *) src; #endif