github.com/c12o16h1/go/src@v0.0.0-20200114212001-5a151c0f00ed/runtime/internal/atomic/atomic_ppc64x.s (about)

     1  // Copyright 2014 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 ppc64 ppc64le
     6  
     7  #include "textflag.h"
     8  
     9  // uint32 runtime∕internal∕atomic·Load(uint32 volatile* ptr)
    10  TEXT ·Load(SB),NOSPLIT|NOFRAME,$-8-12
    11  	MOVD	ptr+0(FP), R3
    12  	SYNC
    13  	MOVWZ	0(R3), R3
    14  	CMPW	R3, R3, CR7
    15  	BC	4, 30, 1(PC) // bne- cr7,0x4
    16  	ISYNC
    17  	MOVW	R3, ret+8(FP)
    18  	RET
    19  
    20  // uint8 runtime∕internal∕atomic·Load8(uint8 volatile* ptr)
    21  TEXT ·Load8(SB),NOSPLIT|NOFRAME,$-8-9
    22  	MOVD	ptr+0(FP), R3
    23  	SYNC
    24  	MOVBZ	0(R3), R3
    25  	CMP	R3, R3, CR7
    26  	BC	4, 30, 1(PC) // bne- cr7,0x4
    27  	ISYNC
    28  	MOVB	R3, ret+8(FP)
    29  	RET
    30  
    31  // uint64 runtime∕internal∕atomic·Load64(uint64 volatile* ptr)
    32  TEXT ·Load64(SB),NOSPLIT|NOFRAME,$-8-16
    33  	MOVD	ptr+0(FP), R3
    34  	SYNC
    35  	MOVD	0(R3), R3
    36  	CMP	R3, R3, CR7
    37  	BC	4, 30, 1(PC) // bne- cr7,0x4
    38  	ISYNC
    39  	MOVD	R3, ret+8(FP)
    40  	RET
    41  
    42  // void *runtime∕internal∕atomic·Loadp(void *volatile *ptr)
    43  TEXT ·Loadp(SB),NOSPLIT|NOFRAME,$-8-16
    44  	MOVD	ptr+0(FP), R3
    45  	SYNC
    46  	MOVD	0(R3), R3
    47  	CMP	R3, R3, CR7
    48  	BC	4, 30, 1(PC) // bne- cr7,0x4
    49  	ISYNC
    50  	MOVD	R3, ret+8(FP)
    51  	RET
    52  
    53  // uint32 runtime∕internal∕atomic·LoadAcq(uint32 volatile* ptr)
    54  TEXT ·LoadAcq(SB),NOSPLIT|NOFRAME,$-8-12
    55  	MOVD   ptr+0(FP), R3
    56  	MOVWZ  0(R3), R3
    57  	CMPW   R3, R3, CR7
    58  	BC     4, 30, 1(PC) // bne- cr7, 0x4
    59  	MOVW   R3, ret+8(FP)
    60  	RET