|  | // Copyright 2022 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. | 
|  |  | 
|  | #include "textflag.h" | 
|  |  | 
|  | // func Syscall6(num, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, errno uintptr) | 
|  | // | 
|  | // We need to convert to the syscall ABI. | 
|  | // | 
|  | // arg | ABIInternal | Syscall | 
|  | // --------------------------- | 
|  | // num | A0          | A7 | 
|  | // a1  | A1          | A0 | 
|  | // a2  | A2          | A1 | 
|  | // a3  | A3          | A2 | 
|  | // a4  | A4          | A3 | 
|  | // a5  | A5          | A4 | 
|  | // a6  | A6          | A5 | 
|  | // | 
|  | // r1  | A0          | A0 | 
|  | // r2  | A1          | A1 | 
|  | // err | A2          | part of A0 | 
|  | TEXT ·Syscall6<ABIInternal>(SB),NOSPLIT,$0-80 | 
|  | MOV	A0, A7 | 
|  | MOV	A1, A0 | 
|  | MOV	A2, A1 | 
|  | MOV	A3, A2 | 
|  | MOV	A4, A3 | 
|  | MOV	A5, A4 | 
|  | MOV	A6, A5 | 
|  | ECALL | 
|  | MOV	$-4096, T0 | 
|  | BLTU	T0, A0, err | 
|  | // r1 already in A0 | 
|  | // r2 already in A1 | 
|  | MOV	ZERO, A2 // errno | 
|  | RET | 
|  | err: | 
|  | SUB	A0, ZERO, A2 // errno | 
|  | MOV	$-1, A0	     // r1 | 
|  | MOV	ZERO, A1     // r2 | 
|  | RET |