summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/syscall.c
blob: d173d2c54c7d89c85bc289ad95e31ee02fc30e34 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*
 * syscall() library function
 *
 * 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, ...)
{

	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);
}