diff options
Diffstat (limited to 'src/pkg/runtime/arm/cas5.s')
-rw-r--r-- | src/pkg/runtime/arm/cas5.s | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/src/pkg/runtime/arm/cas5.s b/src/pkg/runtime/arm/cas5.s deleted file mode 100644 index 20bd3c3e2..000000000 --- a/src/pkg/runtime/arm/cas5.s +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -#include "arm/asm.h" - -// This version works on pre v6 architectures - -// bool cas(int32 *val, int32 old, int32 new) -// Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// }else -// return 0; - -TEXT runtime·cas(SB),7,$0 - MOVW 0(FP), R0 // *val - MOVW 4(FP), R1 // old - MOVW 8(FP), R2 // new - MOVW $1, R3 - MOVW $runtime·cas_mutex(SB), R4 -l: - SWPW (R4), R3 // acquire mutex - CMP $0, R3 - BNE fail0 - - MOVW (R0), R5 - CMP R1, R5 - BNE fail1 - - MOVW R2, (R0) - MOVW R3, (R4) // release mutex - MOVW $1, R0 - RET -fail1: - MOVW R3, (R4) // release mutex -fail0: - MOVW $0, R0 - RET - -DATA runtime·cas_mutex(SB)/4, $0 -GLOBL runtime·cas_mutex(SB), $4 |