github.com/ice-blockchain/go/src@v0.0.0-20240403114104-1564d284e521/runtime/msan_loong64.s (about) 1 // Copyright 2023 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 //go:build msan 6 7 #include "go_asm.h" 8 #include "textflag.h" 9 10 #define RARG0 R4 11 #define RARG1 R5 12 #define RARG2 R6 13 #define FARG R7 14 15 // func runtime·domsanread(addr unsafe.Pointer, sz uintptr) 16 // Called from msanread. 17 TEXT runtime·domsanread(SB), NOSPLIT, $0-16 18 MOVV addr+0(FP), RARG0 19 MOVV sz+8(FP), RARG1 20 // void __msan_read_go(void *addr, uintptr_t sz); 21 MOVV $__msan_read_go(SB), FARG 22 JMP msancall<>(SB) 23 24 // func runtime·msanwrite(addr unsafe.Pointer, sz uintptr) 25 // Called from instrumented code. 26 TEXT runtime·msanwrite(SB), NOSPLIT, $0-16 27 MOVV addr+0(FP), RARG0 28 MOVV sz+8(FP), RARG1 29 // void __msan_write_go(void *addr, uintptr_t sz); 30 MOVV $__msan_write_go(SB), FARG 31 JMP msancall<>(SB) 32 33 // func runtime·msanmalloc(addr unsafe.Pointer, sz uintptr) 34 TEXT runtime·msanmalloc(SB), NOSPLIT, $0-16 35 MOVV addr+0(FP), RARG0 36 MOVV sz+8(FP), RARG1 37 // void __msan_malloc_go(void *addr, uintptr_t sz); 38 MOVV $__msan_malloc_go(SB), FARG 39 JMP msancall<>(SB) 40 41 // func runtime·msanfree(addr unsafe.Pointer, sz uintptr) 42 TEXT runtime·msanfree(SB), NOSPLIT, $0-16 43 MOVV addr+0(FP), RARG0 44 MOVV sz+8(FP), RARG1 45 // void __msan_free_go(void *addr, uintptr_t sz); 46 MOVV $__msan_free_go(SB), FARG 47 JMP msancall<>(SB) 48 49 // func runtime·msanmove(dst, src unsafe.Pointer, sz uintptr) 50 TEXT runtime·msanmove(SB), NOSPLIT, $0-24 51 MOVV dst+0(FP), RARG0 52 MOVV src+8(FP), RARG1 53 MOVV sz+16(FP), RARG2 54 // void __msan_memmove(void *dst, void *src, uintptr_t sz); 55 MOVV $__msan_memmove(SB), FARG 56 JMP msancall<>(SB) 57 58 // Switches SP to g0 stack and calls (FARG). Arguments already set. 59 TEXT msancall<>(SB), NOSPLIT, $0-0 60 MOVV R3, R23 // callee-saved 61 BEQ g, g0stack // no g, still on a system stack 62 MOVV g_m(g), R14 63 MOVV m_g0(R14), R15 64 BEQ R15, g, g0stack 65 66 MOVV (g_sched+gobuf_sp)(R15), R9 67 MOVV R9, R3 68 69 g0stack: 70 JAL (FARG) 71 MOVV R23, R3 72 RET