Text file src/pkg/runtime/internal/atomic/atomic_ppc64x.s
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
View as plain text