| // Copyright 2015 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // +build mips64 mips64le | |
| #include "textflag.h" | |
| #define SYNC WORD $0xf | |
| // uint32 runtime∕internal∕atomic·Load(uint32 volatile* ptr) | |
| TEXT ·Load(SB),NOSPLIT|NOFRAME,$0-12 | |
| MOVV ptr+0(FP), R1 | |
| SYNC | |
| MOVWU 0(R1), R1 | |
| SYNC | |
| MOVW R1, ret+8(FP) | |
| RET | |
| // uint8 runtime∕internal∕atomic·Load8(uint8 volatile* ptr) | |
| TEXT ·Load8(SB),NOSPLIT|NOFRAME,$0-9 | |
| MOVV ptr+0(FP), R1 | |
| SYNC | |
| MOVBU 0(R1), R1 | |
| SYNC | |
| MOVB R1, ret+8(FP) | |
| RET | |
| // uint64 runtime∕internal∕atomic·Load64(uint64 volatile* ptr) | |
| TEXT ·Load64(SB),NOSPLIT|NOFRAME,$0-16 | |
| MOVV ptr+0(FP), R1 | |
| SYNC | |
| MOVV 0(R1), R1 | |
| SYNC | |
| MOVV R1, ret+8(FP) | |
| RET | |
| // void *runtime∕internal∕atomic·Loadp(void *volatile *ptr) | |
| TEXT ·Loadp(SB),NOSPLIT|NOFRAME,$0-16 | |
| MOVV ptr+0(FP), R1 | |
| SYNC | |
| MOVV 0(R1), R1 | |
| SYNC | |
| MOVV R1, ret+8(FP) | |
| RET | |
| // uint32 runtime∕internal∕atomic·LoadAcq(uint32 volatile* ptr) | |
| TEXT ·LoadAcq(SB),NOSPLIT|NOFRAME,$0-12 | |
| JMP atomic·Load(SB) | |
| // uint64 runtime∕internal∕atomic·LoadAcq64(uint64 volatile* ptr) | |
| TEXT ·LoadAcq64(SB),NOSPLIT|NOFRAME,$0-16 | |
| JMP atomic·Load64(SB) | |
| // uintptr runtime∕internal∕atomic·LoadAcquintptr(uintptr volatile* ptr) | |
| TEXT ·LoadAcquintptr(SB),NOSPLIT|NOFRAME,$0-16 | |
| JMP atomic·Load64(SB) |