]> Cypherpunks repositories - gostls13.git/commitdiff
cas
authorKai Backman <kaib@golang.org>
Thu, 15 Oct 2009 04:47:28 +0000 (21:47 -0700)
committerKai Backman <kaib@golang.org>
Thu, 15 Oct 2009 04:47:28 +0000 (21:47 -0700)
R=rsc
APPROVED=rsc
DELTA=31  (1 added, 8 deleted, 22 changed)
OCL=35752
CL=35757

src/pkg/runtime/arm/cas.s
src/pkg/sync/asm_arm.s

index 648fa40c8d20ac1e2de9e2780dce65a54272819d..63df1396d71ca8d346fee0ada9be92b52872c729 100644 (file)
 //     }else
 //             return 0;
 
-TEXT   cas+0(SB),0,$12
-       TODO
+TEXT   cas(SB),7,$0
+       MOVW    0(FP), R1       // *val
+       MOVW    4(FP), R2       // old
+       MOVW    8(FP), R3       // new
+l:
+       LDREX   (R1), R0
+       CMP             R0, R2
+       BNE             fail
+       STREX   R3, (R1), R0
+       CMP             $0, R0
+       BNE             l
+       MOVW    $1, R0
+       RET
+fail:
+       MOVW    $0, R0
+       RET
+
index a6ad9d949c2e2cdd3e8e61bfddfe968950c5089e..077e81410c9d7bee6f8bf2efc529fd03fbf747db 100644 (file)
 //     }else
 //             return false;
 
-TEXT   sync·cas+0(SB),0,$12
-       TODO
+TEXT   sync·cas(SB),7,$0
+       MOVW    0(FP), R1       // *val
+       MOVW    4(FP), R2       // old
+       MOVW    8(FP), R3       // new
+l:
+       LDREX   (R1), R0
+       CMP             R0, R2
+       BNE             fail
+       STREX   R3, (R1), R0
+       CMP             $0, R0
+       BNE             l
+       MOVW    $1, R0
+       MOVW    R0, 16(SP)
+       RET
+fail:
+       MOVW    $0, R0
+       MOVW    R0, 16(SP)
+       RET