diff options
Diffstat (limited to 'src/lib/sync/asm_amd64.s')
| -rw-r--r-- | src/lib/sync/asm_amd64.s | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/sync/asm_amd64.s b/src/lib/sync/asm_amd64.s new file mode 100644 index 0000000000..07389dd3b5 --- /dev/null +++ b/src/lib/sync/asm_amd64.s @@ -0,0 +1,23 @@ +// 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. + +// func cas(val *int32, old, new int32) bool +// Atomically: +// if *val == old { +// *val = new; +// return true; +// }else +// return false; +TEXT sync·cas(SB), 7, $0 + MOVQ 8(SP), BX + MOVL 16(SP), AX + MOVL 20(SP), CX + LOCK + CMPXCHGL CX, 0(BX) + JZ ok + MOVL $0, 24(SP) + RET +ok: + MOVL $1, 24(SP) + RET |
