// 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" // See ../sys_linux_386.s for the reason why we always use int 0x80 // instead of the glibc-specific "CALL 0x10(GS)". #define INVOKE_SYSCALL INT $0x80 // func Syscall6(num, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, errno uintptr) // // Syscall # in AX, args in BX CX DX SI DI BP, return in AX TEXT ·Syscall6(SB),NOSPLIT,$0-40 MOVL num+0(FP), AX // syscall entry MOVL a1+4(FP), BX MOVL a2+8(FP), CX MOVL a3+12(FP), DX MOVL a4+16(FP), SI MOVL a5+20(FP), DI MOVL a6+24(FP), BP INVOKE_SYSCALL CMPL AX, $0xfffff001 JLS ok MOVL $-1, r1+28(FP) MOVL $0, r2+32(FP) NEGL AX MOVL AX, errno+36(FP) RET ok: MOVL AX, r1+28(FP) MOVL DX, r2+32(FP) MOVL $0, errno+36(FP) RET