aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/internal/atomic/atomic_amd64.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/internal/atomic/atomic_amd64.s')
-rw-r--r--src/runtime/internal/atomic/atomic_amd64.s289
1 files changed, 0 insertions, 289 deletions
diff --git a/src/runtime/internal/atomic/atomic_amd64.s b/src/runtime/internal/atomic/atomic_amd64.s
deleted file mode 100644
index ec75bf9332..0000000000
--- a/src/runtime/internal/atomic/atomic_amd64.s
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright 2015 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.
-
-// Note: some of these functions are semantically inlined
-// by the compiler (in src/cmd/compile/internal/gc/ssa.go).
-
-#include "textflag.h"
-
-TEXT ·Loaduintptr(SB), NOSPLIT, $0-16
- JMP ·Load64(SB)
-
-TEXT ·Loaduint(SB), NOSPLIT, $0-16
- JMP ·Load64(SB)
-
-TEXT ·Loadint32(SB), NOSPLIT, $0-12
- JMP ·Load(SB)
-
-TEXT ·Loadint64(SB), NOSPLIT, $0-16
- JMP ·Load64(SB)
-
-// bool Cas(int32 *val, int32 old, int32 new)
-// Atomically:
-// if(*val == old){
-// *val = new;
-// return 1;
-// } else
-// return 0;
-TEXT ·Cas(SB),NOSPLIT,$0-17
- MOVQ ptr+0(FP), BX
- MOVL old+8(FP), AX
- MOVL new+12(FP), CX
- LOCK
- CMPXCHGL CX, 0(BX)
- SETEQ ret+16(FP)
- RET
-
-// bool ·Cas64(uint64 *val, uint64 old, uint64 new)
-// Atomically:
-// if(*val == old){
-// *val = new;
-// return 1;
-// } else {
-// return 0;
-// }
-TEXT ·Cas64(SB), NOSPLIT, $0-25
- MOVQ ptr+0(FP), BX
- MOVQ old+8(FP), AX
- MOVQ new+16(FP), CX
- LOCK
- CMPXCHGQ CX, 0(BX)
- SETEQ ret+24(FP)
- RET
-
-// bool Casp1(void **val, void *old, void *new)
-// Atomically:
-// if(*val == old){
-// *val = new;
-// return 1;
-// } else
-// return 0;
-TEXT ·Casp1(SB), NOSPLIT, $0-25
- MOVQ ptr+0(FP), BX
- MOVQ old+8(FP), AX
- MOVQ new+16(FP), CX
- LOCK
- CMPXCHGQ CX, 0(BX)
- SETEQ ret+24(FP)
- RET
-
-TEXT ·Casint32(SB), NOSPLIT, $0-17
- JMP ·Cas(SB)
-
-TEXT ·Casint64(SB), NOSPLIT, $0-25
- JMP ·Cas64(SB)
-
-TEXT ·Casuintptr(SB), NOSPLIT, $0-25
- JMP ·Cas64(SB)
-
-TEXT ·CasRel(SB), NOSPLIT, $0-17
- JMP ·Cas(SB)
-
-// uint32 Xadd(uint32 volatile *val, int32 delta)
-// Atomically:
-// *val += delta;
-// return *val;
-TEXT ·Xadd(SB), NOSPLIT, $0-20
- MOVQ ptr+0(FP), BX
- MOVL delta+8(FP), AX
- MOVL AX, CX
- LOCK
- XADDL AX, 0(BX)
- ADDL CX, AX
- MOVL AX, ret+16(FP)
- RET
-
-// uint64 Xadd64(uint64 volatile *val, int64 delta)
-// Atomically:
-// *val += delta;
-// return *val;
-TEXT ·Xadd64(SB), NOSPLIT, $0-24
- MOVQ ptr+0(FP), BX
- MOVQ delta+8(FP), AX
- MOVQ AX, CX
- LOCK
- XADDQ AX, 0(BX)
- ADDQ CX, AX
- MOVQ AX, ret+16(FP)
- RET
-
-TEXT ·Xaddint32(SB), NOSPLIT, $0-20
- JMP ·Xadd(SB)
-
-TEXT ·Xaddint64(SB), NOSPLIT, $0-24
- JMP ·Xadd64(SB)
-
-TEXT ·Xadduintptr(SB), NOSPLIT, $0-24
- JMP ·Xadd64(SB)
-
-// uint32 Xchg(ptr *uint32, new uint32)
-// Atomically:
-// old := *ptr;
-// *ptr = new;
-// return old;
-TEXT ·Xchg(SB), NOSPLIT, $0-20
- MOVQ ptr+0(FP), BX
- MOVL new+8(FP), AX
- XCHGL AX, 0(BX)
- MOVL AX, ret+16(FP)
- RET
-
-// uint64 Xchg64(ptr *uint64, new uint64)
-// Atomically:
-// old := *ptr;
-// *ptr = new;
-// return old;
-TEXT ·Xchg64(SB), NOSPLIT, $0-24
- MOVQ ptr+0(FP), BX
- MOVQ new+8(FP), AX
- XCHGQ AX, 0(BX)
- MOVQ AX, ret+16(FP)
- RET
-
-TEXT ·Xchgint32(SB), NOSPLIT, $0-20
- JMP ·Xchg(SB)
-
-TEXT ·Xchgint64(SB), NOSPLIT, $0-24
- JMP ·Xchg64(SB)
-
-TEXT ·Xchguintptr(SB), NOSPLIT, $0-24
- JMP ·Xchg64(SB)
-
-TEXT ·StorepNoWB(SB), NOSPLIT, $0-16
- MOVQ ptr+0(FP), BX
- MOVQ val+8(FP), AX
- XCHGQ AX, 0(BX)
- RET
-
-TEXT ·Store(SB), NOSPLIT, $0-12
- MOVQ ptr+0(FP), BX
- MOVL val+8(FP), AX
- XCHGL AX, 0(BX)
- RET
-
-TEXT ·Store8(SB), NOSPLIT, $0-9
- MOVQ ptr+0(FP), BX
- MOVB val+8(FP), AX
- XCHGB AX, 0(BX)
- RET
-
-TEXT ·Store64(SB), NOSPLIT, $0-16
- MOVQ ptr+0(FP), BX
- MOVQ val+8(FP), AX
- XCHGQ AX, 0(BX)
- RET
-
-TEXT ·Storeint32(SB), NOSPLIT, $0-12
- JMP ·Store(SB)
-
-TEXT ·Storeint64(SB), NOSPLIT, $0-16
- JMP ·Store64(SB)
-
-TEXT ·Storeuintptr(SB), NOSPLIT, $0-16
- JMP ·Store64(SB)
-
-TEXT ·StoreRel(SB), NOSPLIT, $0-12
- JMP ·Store(SB)
-
-TEXT ·StoreRel64(SB), NOSPLIT, $0-16
- JMP ·Store64(SB)
-
-TEXT ·StoreReluintptr(SB), NOSPLIT, $0-16
- JMP ·Store64(SB)
-
-// void ·Or8(byte volatile*, byte);
-TEXT ·Or8(SB), NOSPLIT, $0-9
- MOVQ ptr+0(FP), AX
- MOVB val+8(FP), BX
- LOCK
- ORB BX, (AX)
- RET
-
-// void ·And8(byte volatile*, byte);
-TEXT ·And8(SB), NOSPLIT, $0-9
- MOVQ ptr+0(FP), AX
- MOVB val+8(FP), BX
- LOCK
- ANDB BX, (AX)
- RET
-
-// func Or(addr *uint32, v uint32)
-TEXT ·Or(SB), NOSPLIT, $0-12
- MOVQ ptr+0(FP), AX
- MOVL val+8(FP), BX
- LOCK
- ORL BX, (AX)
- RET
-
-// func And(addr *uint32, v uint32)
-TEXT ·And(SB), NOSPLIT, $0-12
- MOVQ ptr+0(FP), AX
- MOVL val+8(FP), BX
- LOCK
- ANDL BX, (AX)
- RET
-
-// func Or32(addr *uint32, v uint32) old uint32
-TEXT ·Or32(SB), NOSPLIT, $0-20
- MOVQ ptr+0(FP), BX
- MOVL val+8(FP), CX
-casloop:
- MOVL CX, DX
- MOVL (BX), AX
- ORL AX, DX
- LOCK
- CMPXCHGL DX, (BX)
- JNZ casloop
- MOVL AX, ret+16(FP)
- RET
-
-// func And32(addr *uint32, v uint32) old uint32
-TEXT ·And32(SB), NOSPLIT, $0-20
- MOVQ ptr+0(FP), BX
- MOVL val+8(FP), CX
-casloop:
- MOVL CX, DX
- MOVL (BX), AX
- ANDL AX, DX
- LOCK
- CMPXCHGL DX, (BX)
- JNZ casloop
- MOVL AX, ret+16(FP)
- RET
-
-// func Or64(addr *uint64, v uint64) old uint64
-TEXT ·Or64(SB), NOSPLIT, $0-24
- MOVQ ptr+0(FP), BX
- MOVQ val+8(FP), CX
-casloop:
- MOVQ CX, DX
- MOVQ (BX), AX
- ORQ AX, DX
- LOCK
- CMPXCHGQ DX, (BX)
- JNZ casloop
- MOVQ AX, ret+16(FP)
- RET
-
-// func And64(addr *uint64, v uint64) old uint64
-TEXT ·And64(SB), NOSPLIT, $0-24
- MOVQ ptr+0(FP), BX
- MOVQ val+8(FP), CX
-casloop:
- MOVQ CX, DX
- MOVQ (BX), AX
- ANDQ AX, DX
- LOCK
- CMPXCHGQ DX, (BX)
- JNZ casloop
- MOVQ AX, ret+16(FP)
- RET
-
-// func Anduintptr(addr *uintptr, v uintptr) old uintptr
-TEXT ·Anduintptr(SB), NOSPLIT, $0-24
- JMP ·And64(SB)
-
-// func Oruintptr(addr *uintptr, v uintptr) old uintptr
-TEXT ·Oruintptr(SB), NOSPLIT, $0-24
- JMP ·Or64(SB)