1 // Copyright 2015 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.
12 // We can't use the gc-syntax .s files for gccgo. On the plus side
13 // much of the functionality can be written directly in Go.
15 //extern gccgoRealSyscallNoError
16 func realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)
18 //extern gccgoRealSyscall
19 func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)
21 func SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
22 syscall.Entersyscall()
23 r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
28 func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
29 syscall.Entersyscall()
30 r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
32 return r, 0, syscall.Errno(errno)
35 func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
36 syscall.Entersyscall()
37 r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
39 return r, 0, syscall.Errno(errno)
42 func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {
43 syscall.Entersyscall()
44 r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)
46 return r, 0, syscall.Errno(errno)
49 func RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {
50 r := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
54 func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {
55 r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)
56 return r, 0, syscall.Errno(errno)
59 func RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {
60 r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)
61 return r, 0, syscall.Errno(errno)