From 883530c019f06d557f82707d35f7ee363ff12637 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 14 Aug 2013 00:50:47 -0400 Subject: [PATCH] sync/atomic: fix new swap on arm linux TBR=dvyukov CC=golang-dev https://golang.org/cl/12920043 --- src/pkg/sync/atomic/64bit_arm.go | 2 +- src/pkg/sync/atomic/asm_linux_arm.s | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) 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 -- 2.48.1