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