Black Lives Matter. Support the Equal Justice Initiative.

Text file src/runtime/cgo/asm_riscv64.s

Documentation: runtime/cgo

     1  // Copyright 2020 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  #include "textflag.h"
     6  
     7  // Called by C code generated by cmd/cgo.
     8  // func crosscall2(fn, a unsafe.Pointer, n int32, ctxt uintptr)
     9  // Saves C callee-saved registers and calls cgocallback with three arguments.
    10  // fn is the PC of a func(a unsafe.Pointer) function.
    11  TEXT crosscall2(SB),NOSPLIT|NOFRAME,$0
    12  	/*
    13  	 * Push arguments for fn (X10, X11, X13), along with all callee-save
    14  	 * registers. Note that at procedure entry the first argument is at
    15  	 * 8(X2).
    16  	 */
    17  	ADD	$(-8*31), X2
    18  	MOV	X10, (8*1)(X2) // fn unsafe.Pointer
    19  	MOV	X11, (8*2)(X2) // a unsafe.Pointer
    20  	MOV	X13, (8*3)(X2) // ctxt uintptr
    21  	MOV	X8, (8*4)(X2)
    22  	MOV	X9, (8*5)(X2)
    23  	MOV	X18, (8*6)(X2)
    24  	MOV	X19, (8*7)(X2)
    25  	MOV	X20, (8*8)(X2)
    26  	MOV	X21, (8*9)(X2)
    27  	MOV	X22, (8*10)(X2)
    28  	MOV	X23, (8*11)(X2)
    29  	MOV	X24, (8*12)(X2)
    30  	MOV	X25, (8*13)(X2)
    31  	MOV	X26, (8*14)(X2)
    32  	MOV	g, (8*15)(X2)
    33  	MOV	X3, (8*16)(X2)
    34  	MOV	X4, (8*17)(X2)
    35  	MOV	X1, (8*18)(X2)
    36  	MOVD	F8, (8*19)(X2)
    37  	MOVD	F9, (8*20)(X2)
    38  	MOVD	F18, (8*21)(X2)
    39  	MOVD	F19, (8*22)(X2)
    40  	MOVD	F20, (8*23)(X2)
    41  	MOVD	F21, (8*24)(X2)
    42  	MOVD	F22, (8*25)(X2)
    43  	MOVD	F23, (8*26)(X2)
    44  	MOVD	F24, (8*27)(X2)
    45  	MOVD	F25, (8*28)(X2)
    46  	MOVD	F26, (8*29)(X2)
    47  	MOVD	F27, (8*30)(X2)
    48  
    49  	// Initialize Go ABI environment
    50  	CALL	runtimeĀ·load_g(SB)
    51  	CALL	runtimeĀ·cgocallback(SB)
    52  
    53  	MOV	(8*4)(X2), X8
    54  	MOV	(8*5)(X2), X9
    55  	MOV	(8*6)(X2), X18
    56  	MOV	(8*7)(X2), X19
    57  	MOV	(8*8)(X2), X20
    58  	MOV	(8*9)(X2), X21
    59  	MOV	(8*10)(X2), X22
    60  	MOV	(8*11)(X2), X23
    61  	MOV	(8*12)(X2), X24
    62  	MOV	(8*13)(X2), X25
    63  	MOV	(8*14)(X2), X26
    64  	MOV	(8*15)(X2), g
    65  	MOV	(8*16)(X2), X3
    66  	MOV	(8*17)(X2), X4
    67  	MOV	(8*18)(X2), X1
    68  	MOVD	(8*19)(X2), F8
    69  	MOVD	(8*20)(X2), F9
    70  	MOVD	(8*21)(X2), F18
    71  	MOVD	(8*22)(X2), F19
    72  	MOVD	(8*23)(X2), F20
    73  	MOVD	(8*24)(X2), F21
    74  	MOVD	(8*25)(X2), F22
    75  	MOVD	(8*26)(X2), F23
    76  	MOVD	(8*27)(X2), F24
    77  	MOVD	(8*28)(X2), F25
    78  	MOVD	(8*29)(X2), F26
    79  	MOVD	(8*30)(X2), F27
    80  	ADD	$(8*31), X2
    81  
    82  	RET
    83  

View as plain text