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