diff options
| -rw-r--r-- | libc/sysdeps/linux/common/syscall.c | 18 | 
1 files changed, 17 insertions, 1 deletions
| diff --git a/libc/sysdeps/linux/common/syscall.c b/libc/sysdeps/linux/common/syscall.c index 61f798e2c..d173d2c54 100644 --- a/libc/sysdeps/linux/common/syscall.c +++ b/libc/sysdeps/linux/common/syscall.c @@ -4,9 +4,25 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ +#include <stdarg.h>  #include <sys/syscall.h> +#include <unistd.h> -long syscall(long sysnum, long arg1, long arg2, long arg3, long arg4, long arg5, long arg6) +long syscall(long sysnum, ...)  { + +	unsigned long arg1, arg2, arg3, arg4, arg5, arg6; +	va_list arg; + +	va_start (arg, sysnum); +	arg1 = va_arg (arg, unsigned long); +	arg2 = va_arg (arg, unsigned long); +	arg3 = va_arg (arg, unsigned long); +	arg4 = va_arg (arg, unsigned long); +	arg5 = va_arg (arg, unsigned long); +	arg6 = va_arg (arg, unsigned long); +	va_end (arg); + +        __asm__ volatile ( "" ::: "memory" );  	return INLINE_SYSCALL_NCS(sysnum, 6, arg1, arg2, arg3, arg4, arg5, arg6);  } | 
