github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/src/pkg/sync/atomic/asm_amd64.s (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // +build !race 6 7 TEXT ·CompareAndSwapInt32(SB),7,$0 8 JMP ·CompareAndSwapUint32(SB) 9 10 TEXT ·CompareAndSwapUint32(SB),7,$0 11 MOVQ addr+0(FP), BP 12 MOVL old+8(FP), AX 13 MOVL new+12(FP), CX 14 LOCK 15 CMPXCHGL CX, 0(BP) 16 SETEQ swapped+16(FP) 17 RET 18 19 TEXT ·CompareAndSwapUintptr(SB),7,$0 20 JMP ·CompareAndSwapUint64(SB) 21 22 TEXT ·CompareAndSwapPointer(SB),7,$0 23 JMP ·CompareAndSwapUint64(SB) 24 25 TEXT ·CompareAndSwapInt64(SB),7,$0 26 JMP ·CompareAndSwapUint64(SB) 27 28 TEXT ·CompareAndSwapUint64(SB),7,$0 29 MOVQ addr+0(FP), BP 30 MOVQ old+8(FP), AX 31 MOVQ new+16(FP), CX 32 LOCK 33 CMPXCHGQ CX, 0(BP) 34 SETEQ swapped+24(FP) 35 RET 36 37 TEXT ·AddInt32(SB),7,$0 38 JMP ·AddUint32(SB) 39 40 TEXT ·AddUint32(SB),7,$0 41 MOVQ addr+0(FP), BP 42 MOVL delta+8(FP), AX 43 MOVL AX, CX 44 LOCK 45 XADDL AX, 0(BP) 46 ADDL AX, CX 47 MOVL CX, new+16(FP) 48 RET 49 50 TEXT ·AddUintptr(SB),7,$0 51 JMP ·AddUint64(SB) 52 53 TEXT ·AddInt64(SB),7,$0 54 JMP ·AddUint64(SB) 55 56 TEXT ·AddUint64(SB),7,$0 57 MOVQ addr+0(FP), BP 58 MOVQ delta+8(FP), AX 59 MOVQ AX, CX 60 LOCK 61 XADDQ AX, 0(BP) 62 ADDQ AX, CX 63 MOVQ CX, new+16(FP) 64 RET 65 66 TEXT ·LoadInt32(SB),7,$0 67 JMP ·LoadUint32(SB) 68 69 TEXT ·LoadUint32(SB),7,$0 70 MOVQ addr+0(FP), AX 71 MOVL 0(AX), AX 72 MOVL AX, val+8(FP) 73 RET 74 75 TEXT ·LoadInt64(SB),7,$0 76 JMP ·LoadUint64(SB) 77 78 TEXT ·LoadUint64(SB),7,$0 79 MOVQ addr+0(FP), AX 80 MOVQ 0(AX), AX 81 MOVQ AX, val+8(FP) 82 RET 83 84 TEXT ·LoadUintptr(SB),7,$0 85 JMP ·LoadPointer(SB) 86 87 TEXT ·LoadPointer(SB),7,$0 88 MOVQ addr+0(FP), AX 89 MOVQ 0(AX), AX 90 MOVQ AX, val+8(FP) 91 RET 92 93 TEXT ·StoreInt32(SB),7,$0 94 JMP ·StoreUint32(SB) 95 96 TEXT ·StoreUint32(SB),7,$0 97 MOVQ addr+0(FP), BP 98 MOVL val+8(FP), AX 99 XCHGL AX, 0(BP) 100 RET 101 102 TEXT ·StoreInt64(SB),7,$0 103 JMP ·StoreUint64(SB) 104 105 TEXT ·StoreUint64(SB),7,$0 106 MOVQ addr+0(FP), BP 107 MOVQ val+8(FP), AX 108 XCHGQ AX, 0(BP) 109 RET 110 111 TEXT ·StoreUintptr(SB),7,$0 112 JMP ·StorePointer(SB) 113 114 TEXT ·StorePointer(SB),7,$0 115 MOVQ addr+0(FP), BP 116 MOVQ val+8(FP), AX 117 XCHGQ AX, 0(BP) 118 RET