// Copyright 2015 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.
//go:build gccgo && !aix && !hurd
// +build gccgo,!aix,!hurd
package unix
import "syscall"
// We can't use the gc-syntax .s files for gccgo. On the plus side
// much of the functionality can be written directly in Go.
func realSyscallNoError ( trap , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 uintptr ) ( r uintptr )
func realSyscall ( trap , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 uintptr ) ( r , errno uintptr )
func SyscallNoError ( trap , a1 , a2 , a3 uintptr ) ( r1 , r2 uintptr ) {
syscall . Entersyscall ( )
r := realSyscallNoError ( trap , a1 , a2 , a3 , 0 , 0 , 0 , 0 , 0 , 0 )
syscall . Exitsyscall ( )
return r , 0
}
func Syscall ( trap , a1 , a2 , a3 uintptr ) ( r1 , r2 uintptr , err syscall . Errno ) {
syscall . Entersyscall ( )
r , errno := realSyscall ( trap , a1 , a2 , a3 , 0 , 0 , 0 , 0 , 0 , 0 )
syscall . Exitsyscall ( )
return r , 0 , syscall . Errno ( errno )
}
func Syscall6 ( trap , a1 , a2 , a3 , a4 , a5 , a6 uintptr ) ( r1 , r2 uintptr , err syscall . Errno ) {
syscall . Entersyscall ( )
r , errno := realSyscall ( trap , a1 , a2 , a3 , a4 , a5 , a6 , 0 , 0 , 0 )
syscall . Exitsyscall ( )
return r , 0 , syscall . Errno ( errno )
}
func Syscall9 ( trap , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 uintptr ) ( r1 , r2 uintptr , err syscall . Errno ) {
syscall . Entersyscall ( )
r , errno := realSyscall ( trap , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 )
syscall . Exitsyscall ( )
return r , 0 , syscall . Errno ( errno )
}
func RawSyscallNoError ( trap , a1 , a2 , a3 uintptr ) ( r1 , r2 uintptr ) {
r := realSyscallNoError ( trap , a1 , a2 , a3 , 0 , 0 , 0 , 0 , 0 , 0 )
return r , 0
}
func RawSyscall ( trap , a1 , a2 , a3 uintptr ) ( r1 , r2 uintptr , err syscall . Errno ) {
r , errno := realSyscall ( trap , a1 , a2 , a3 , 0 , 0 , 0 , 0 , 0 , 0 )
return r , 0 , syscall . Errno ( errno )
}
func RawSyscall6 ( trap , a1 , a2 , a3 , a4 , a5 , a6 uintptr ) ( r1 , r2 uintptr , err syscall . Errno ) {
r , errno := realSyscall ( trap , a1 , a2 , a3 , a4 , a5 , a6 , 0 , 0 , 0 )
return r , 0 , syscall . Errno ( errno )
}