...
Text file src/runtime/internal/atomic/atomic_mips64x.s
1 // Copyright 2015 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 mips64 mips64le
6
7 #include "textflag.h"
8
9 #define SYNC WORD $0xf
10
11 // uint32 runtime∕internal∕atomic·Load(uint32 volatile* ptr)
12 TEXT ·Load(SB),NOSPLIT|NOFRAME,$0-12
13 MOVV ptr+0(FP), R1
14 SYNC
15 MOVWU 0(R1), R1
16 SYNC
17 MOVW R1, ret+8(FP)
18 RET
19
20 // uint8 runtime∕internal∕atomic·Load8(uint8 volatile* ptr)
21 TEXT ·Load8(SB),NOSPLIT|NOFRAME,$0-9
22 MOVV ptr+0(FP), R1
23 SYNC
24 MOVBU 0(R1), R1
25 SYNC
26 MOVB R1, ret+8(FP)
27 RET
28
29 // uint64 runtime∕internal∕atomic·Load64(uint64 volatile* ptr)
30 TEXT ·Load64(SB),NOSPLIT|NOFRAME,$0-16
31 MOVV ptr+0(FP), R1
32 SYNC
33 MOVV 0(R1), R1
34 SYNC
35 MOVV R1, ret+8(FP)
36 RET
37
38 // void *runtime∕internal∕atomic·Loadp(void *volatile *ptr)
39 TEXT ·Loadp(SB),NOSPLIT|NOFRAME,$0-16
40 MOVV ptr+0(FP), R1
41 SYNC
42 MOVV 0(R1), R1
43 SYNC
44 MOVV R1, ret+8(FP)
45 RET
46
47 // uint32 runtime∕internal∕atomic·LoadAcq(uint32 volatile* ptr)
48 TEXT ·LoadAcq(SB),NOSPLIT|NOFRAME,$0-12
49 JMP atomic·Load(SB)
View as plain text