summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux')
-rw-r--r--libc/sysdeps/linux/common/syscall.c18
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);
}