...

Text file src/internal/runtime/syscall/asm_linux_loong64.s

Documentation: internal/runtime/syscall

     1// Copyright 2022 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// func Syscall6(num, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, errno uintptr)
     8//
     9// We need to convert to the syscall ABI.
    10//
    11// arg | ABIInternal | Syscall
    12// ---------------------------
    13// num | R4          | R11
    14// a1  | R5          | R4
    15// a2  | R6          | R5
    16// a3  | R7          | R6
    17// a4  | R8          | R7
    18// a5  | R9          | R8
    19// a6  | R10         | R9
    20//
    21// r1  | R4          | R4
    22// r2  | R5          | R5
    23// err | R6          | part of R4
    24TEXT ·Syscall6<ABIInternal>(SB),NOSPLIT,$0-80
    25	MOVV	R4, R11  // syscall entry
    26	MOVV	R5, R4
    27	MOVV	R6, R5
    28	MOVV	R7, R6
    29	MOVV	R8, R7
    30	MOVV	R9, R8
    31	MOVV	R10, R9
    32	SYSCALL
    33	MOVV	R0, R5      // r2 is not used. Always set to 0.
    34	MOVW	$-4096, R12
    35	BGEU	R12, R4, ok
    36	SUBVU	R4, R0, R6  // errno
    37	MOVV	$-1, R4     // r1
    38	RET
    39ok:
    40	// r1 already in R4
    41	MOVV	R0, R6     // errno
    42	RET

View as plain text