From: Russ Cox Date: Wed, 14 Aug 2013 04:50:47 +0000 (-0400) Subject: sync/atomic: fix new swap on arm linux X-Git-Tag: go1.2rc2~592 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=883530c019f06d557f82707d35f7ee363ff12637;p=gostls13.git sync/atomic: fix new swap on arm linux TBR=dvyukov CC=golang-dev https://golang.org/cl/12920043 --- diff --git a/src/pkg/sync/atomic/64bit_arm.go b/src/pkg/sync/atomic/64bit_arm.go index 7d280ffd22..c08f214c7e 100644 --- a/src/pkg/sync/atomic/64bit_arm.go +++ b/src/pkg/sync/atomic/64bit_arm.go @@ -37,7 +37,7 @@ func addUint64(val *uint64, delta uint64) (new uint64) { func swapUint64(addr *uint64, new uint64) (old uint64) { for { - old := *addr + old = *addr if CompareAndSwapUint64(addr, old, new) { break } diff --git a/src/pkg/sync/atomic/asm_linux_arm.s b/src/pkg/sync/atomic/asm_linux_arm.s index 3d1edfe0bf..8a65ed9c94 100644 --- a/src/pkg/sync/atomic/asm_linux_arm.s +++ b/src/pkg/sync/atomic/asm_linux_arm.s @@ -88,9 +88,10 @@ TEXT ·SwapUint32(SB),NOSPLIT,$0-12 MOVW new+4(FP), R1 swaploop1: MOVW 0(R2), R0 + MOVW R0, R4 // cas smashes R0 BL cas<>(SB) BCC swaploop1 - MOVW R0, old+8(FP) + MOVW R4, old+8(FP) RET TEXT ·SwapUintptr(SB),NOSPLIT,$0