From b65462c961457fd9bdea7a29c5df229abb354898 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 11 May 2015 18:36:18 -0700 Subject: [PATCH] unix: add Syscall9 for gccgo I meant to do this earlier but forget to "git add". Change-Id: I14b777b5b9fa5b121809c5821719da3ec4a5e0ce Reviewed-on: https://go-review.googlesource.com/9960 Reviewed-by: Minux Ma Reviewed-by: Rob Pike --- unix/gccgo.go | 17 ++++++++++++----- unix/gccgo_c.c | 4 ++-- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/unix/gccgo.go b/unix/gccgo.go index 5fc9bc90..94c82321 100644 --- a/unix/gccgo.go +++ b/unix/gccgo.go @@ -12,28 +12,35 @@ import "syscall" // much of the functionality can be written directly in Go. //extern gccgoRealSyscall -func realSyscall(trap, a1, a2, a3, a4, a5, a6 uintptr) (r, errno uintptr) +func realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr) 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) + 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) + 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 RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) { - r, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0) + 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) + r, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0) return r, 0, syscall.Errno(errno) } diff --git a/unix/gccgo_c.c b/unix/gccgo_c.c index 991980ea..07f6be03 100644 --- a/unix/gccgo_c.c +++ b/unix/gccgo_c.c @@ -21,12 +21,12 @@ struct ret { }; struct ret -gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6) +gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9) { struct ret r; errno = 0; - r.r = syscall(trap, a1, a2, a3, a4, a5, a6); + r.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9); r.err = errno; return r; }