diff --git a/src/pkg/sync/atomic/asm_386.s b/src/pkg/sync/atomic/asm_386.s index eaa72eabba..807c2f873b 100644 --- a/src/pkg/sync/atomic/asm_386.s +++ b/src/pkg/sync/atomic/asm_386.s @@ -13,7 +13,7 @@ TEXT ·SwapUint32(SB),NOSPLIT,$0-12 MOVL addr+0(FP), BP MOVL new+4(FP), AX XCHGL AX, 0(BP) - MOVL AX, new+8(FP) + MOVL AX, old+8(FP) RET TEXT ·SwapInt64(SB),NOSPLIT,$0-20 @@ -43,8 +43,8 @@ swaploop: // success // return DX:AX - MOVL AX, new_lo+12(FP) - MOVL DX, new_hi+16(FP) + MOVL AX, old_lo+12(FP) + MOVL DX, old_hi+16(FP) RET TEXT ·SwapUintptr(SB),NOSPLIT,$0-12 @@ -155,10 +155,10 @@ TEXT ·LoadUint32(SB),NOSPLIT,$0-8 MOVL AX, val+4(FP) RET -TEXT ·LoadInt64(SB),NOSPLIT,$0-16 +TEXT ·LoadInt64(SB),NOSPLIT,$0-12 JMP ·LoadUint64(SB) -TEXT ·LoadUint64(SB),NOSPLIT,$0-16 +TEXT ·LoadUint64(SB),NOSPLIT,$0-12 MOVL addr+0(FP), AX TESTL $7, AX JZ 2(PC) @@ -186,10 +186,10 @@ TEXT ·StoreUint32(SB),NOSPLIT,$0-8 XCHGL AX, 0(BP) RET -TEXT ·StoreInt64(SB),NOSPLIT,$0-16 +TEXT ·StoreInt64(SB),NOSPLIT,$0-12 JMP ·StoreUint64(SB) -TEXT ·StoreUint64(SB),NOSPLIT,$0-16 +TEXT ·StoreUint64(SB),NOSPLIT,$0-12 MOVL addr+0(FP), AX TESTL $7, AX JZ 2(PC) diff --git a/src/pkg/sync/atomic/asm_amd64.s b/src/pkg/sync/atomic/asm_amd64.s index 0900492dc9..77afa129ed 100644 --- a/src/pkg/sync/atomic/asm_amd64.s +++ b/src/pkg/sync/atomic/asm_amd64.s @@ -13,7 +13,7 @@ TEXT ·SwapUint32(SB),NOSPLIT,$0-20 MOVQ addr+0(FP), BP MOVL new+8(FP), AX XCHGL AX, 0(BP) - MOVL AX, new+16(FP) + MOVL AX, old+16(FP) RET TEXT ·SwapInt64(SB),NOSPLIT,$0-24 @@ -23,7 +23,7 @@ TEXT ·SwapUint64(SB),NOSPLIT,$0-24 MOVQ addr+0(FP), BP MOVQ new+8(FP), AX XCHGQ AX, 0(BP) - MOVQ AX, new+16(FP) + MOVQ AX, old+16(FP) RET TEXT ·SwapUintptr(SB),NOSPLIT,$0-24 diff --git a/src/pkg/sync/atomic/asm_amd64p32.s b/src/pkg/sync/atomic/asm_amd64p32.s index 4c602ab594..b24ae7a59e 100644 --- a/src/pkg/sync/atomic/asm_amd64p32.s +++ b/src/pkg/sync/atomic/asm_amd64p32.s @@ -11,7 +11,7 @@ TEXT ·SwapUint32(SB),NOSPLIT,$0-12 MOVL addr+0(FP), BX MOVL new+4(FP), AX XCHGL AX, 0(BX) - MOVL AX, new+8(FP) + MOVL AX, old+8(FP) RET TEXT ·SwapInt64(SB),NOSPLIT,$0-24 @@ -24,13 +24,13 @@ TEXT ·SwapUint64(SB),NOSPLIT,$0-24 MOVL 0, BX // crash with nil ptr deref MOVQ new+8(FP), AX XCHGQ AX, 0(BX) - MOVQ AX, new+16(FP) + MOVQ AX, old+16(FP) RET -TEXT ·SwapUintptr(SB),NOSPLIT,$0-24 +TEXT ·SwapUintptr(SB),NOSPLIT,$0-12 JMP ·SwapUint32(SB) -TEXT ·SwapPointer(SB),NOSPLIT,$0-24 +TEXT ·SwapPointer(SB),NOSPLIT,$0-12 JMP ·SwapUint32(SB) TEXT ·CompareAndSwapInt32(SB),NOSPLIT,$0-17 @@ -45,10 +45,10 @@ TEXT ·CompareAndSwapUint32(SB),NOSPLIT,$0-17 SETEQ swapped+16(FP) RET -TEXT ·CompareAndSwapUintptr(SB),NOSPLIT,$0-25 +TEXT ·CompareAndSwapUintptr(SB),NOSPLIT,$0-17 JMP ·CompareAndSwapUint32(SB) -TEXT ·CompareAndSwapPointer(SB),NOSPLIT,$0-25 +TEXT ·CompareAndSwapPointer(SB),NOSPLIT,$0-17 JMP ·CompareAndSwapUint32(SB) TEXT ·CompareAndSwapInt64(SB),NOSPLIT,$0-25 @@ -82,7 +82,7 @@ TEXT ·AddUint32(SB),NOSPLIT,$0-12 TEXT ·AddUintptr(SB),NOSPLIT,$0-12 JMP ·AddUint32(SB) -TEXT ·AddInt64(SB),NOSPLIT,$0-12 +TEXT ·AddInt64(SB),NOSPLIT,$0-24 JMP ·AddUint64(SB) TEXT ·AddUint64(SB),NOSPLIT,$0-24 diff --git a/src/pkg/sync/atomic/asm_linux_arm.s b/src/pkg/sync/atomic/asm_linux_arm.s index b85ca0a135..27be57aa1d 100644 --- a/src/pkg/sync/atomic/asm_linux_arm.s +++ b/src/pkg/sync/atomic/asm_linux_arm.s @@ -42,7 +42,7 @@ casagain: BCC cascheck MOVW $1, R0 casret: - MOVW R0, ret+12(FP) + MOVB R0, swapped+12(FP) RET cascheck: // Kernel lies; double-check. @@ -73,7 +73,7 @@ addloop1: ADD R4, R1 BL cas<>(SB) BCC addloop1 - MOVW R1, ret+8(FP) + MOVW R1, new+8(FP) RET TEXT ·AddUintptr(SB),NOSPLIT,$0 @@ -132,13 +132,13 @@ TEXT ·generalCAS64(SB),NOSPLIT,$20-21 BEQ 2(PC) MOVW R1, (R1) MOVW R0, 4(R13) - MOVW oldlo+4(FP), R1 + MOVW old_lo+4(FP), R1 MOVW R1, 8(R13) - MOVW oldhi+8(FP), R1 + MOVW old_hi+8(FP), R1 MOVW R1, 12(R13) - MOVW newlo+12(FP), R2 + MOVW new_lo+12(FP), R2 MOVW R2, 16(R13) - MOVW newhi+16(FP), R3 + MOVW new_hi+16(FP), R3 MOVW R3, 20(R13) BL runtime·cas64(SB) MOVB R0, ret+20(FP) diff --git a/src/pkg/sync/atomic/export_linux_arm_test.go b/src/pkg/sync/atomic/export_linux_arm_test.go index 8c0b5a75c6..5cd43353ee 100644 --- a/src/pkg/sync/atomic/export_linux_arm_test.go +++ b/src/pkg/sync/atomic/export_linux_arm_test.go @@ -4,6 +4,6 @@ package atomic -func generalCAS64(*uint64, uint64, uint64) bool +func generalCAS64(addr *uint64, old uint64, new uint64) bool var GeneralCAS64 = generalCAS64