]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix 386 build after cas64 change
authorRuss Cox <rsc@golang.org>
Fri, 12 Jul 2013 04:42:46 +0000 (00:42 -0400)
committerRuss Cox <rsc@golang.org>
Fri, 12 Jul 2013 04:42:46 +0000 (00:42 -0400)
Missed this in CL 10909045.

TBR=golang-dev
CC=golang-dev
https://golang.org/cl/10803045

src/pkg/runtime/asm_386.s
src/pkg/runtime/atomic_386.c

index 630f006bcb9b482615a1aaede7bc4ae98ef1cfb1..f2265cbf0144f9af5f415bf2ca97d9d0c6bf4800 100644 (file)
@@ -319,30 +319,26 @@ TEXT runtime·cas(SB), 7, $0
        MOVL    $1, AX
        RET
 
-// bool runtime·cas64(uint64 *val, uint64 *old, uint64 new)
+// bool runtime·cas64(uint64 *val, uint64 old, uint64 new)
 // Atomically:
 //     if(*val == *old){
 //             *val = new;
 //             return 1;
 //     } else {
-//             *old = *val
 //             return 0;
 //     }
 TEXT runtime·cas64(SB), 7, $0
        MOVL    4(SP), BP
-       MOVL    8(SP), SI
-       MOVL    0(SI), AX
-       MOVL    4(SI), DX
-       MOVL    12(SP), BX
-       MOVL    16(SP), CX
+       MOVL    8(SP), AX
+       MOVL    12(SP), DX
+       MOVL    16(SP), BX
+       MOVL    20(SP), CX
        LOCK
        CMPXCHG8B       0(BP)
        JNZ     cas64_fail
        MOVL    $1, AX
        RET
 cas64_fail:
-       MOVL    AX, 0(SI)
-       MOVL    DX, 4(SI)
        MOVL    $0, AX
        RET
 
index fbbe9b58e91e49d76abf323a7d0a648b6d4b24cb..cec86e95bb6cbad797c91ea9846f68b839afc0e1 100644 (file)
@@ -38,7 +38,7 @@ runtime·xchg64(uint64 volatile* addr, uint64 v)
        uint64 old;
 
        do
-               old = addr;
+               old = *addr;
        while(!runtime·cas64(addr, old, v));
 
        return old;