// 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(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