#include <sys/syscall.h>
-#define syscall0 syscall
-#define syscall1 syscall
-#define syscall2 syscall
-#define syscall3 syscall
-#define syscall4 syscall
-#define syscall5 syscall
-#define syscall6 syscall
-
#define socketcall __socketcall
+#define socketcall_cp __socketcall_cp
+
+#define __syscall_cp0(n) (__syscall_cp)(n,0,0,0,0,0,0)
+#define __syscall_cp1(n,a) (__syscall_cp)(n,(long)(a),0,0,0,0,0)
+#define __syscall_cp2(n,a,b) (__syscall_cp)(n,(long)(a),(long)(b),0,0,0,0)
+#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),0,0,0)
+#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),0,0)
+#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),0)
+#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,(long)(a),(long)(b),(long)(c),(long)(d),(long)(e),(long)(f))
+
+long (__syscall_cp)(long, long, long, long, long, long, long);
-/* the following are needed for iso c functions to use */
-#define __syscall_open(filename, flags, mode) syscall(__NR_open, (filename), (flags)|0100000, (mode))
-#define __syscall_read(fd, buf, len) syscall(__NR_read, (fd), (buf), (len))
-#define __syscall_write(fd, buf, len) syscall(__NR_write, (fd), (buf), (len))
-#define __syscall_close(fd) syscall(__NR_close, (fd))
-#define __syscall_fcntl(fd, cmd, arg) syscall(__NR_fcntl, (fd), (cmd), (arg))
-#define __syscall_dup2(old, new) syscall(__NR_dup2, (old), (new))
-#define __syscall_unlink(path) syscall(__NR_unlink, (path))
-#define __syscall_getpid() syscall(__NR_getpid)
-#define __syscall_kill(pid,sig) syscall(__NR_kill, (pid), (sig))
-#define __syscall_sigaction(sig,new,old) syscall(__NR_rt_sigaction, (sig), (new), (old), 8)
-#define __syscall_ioctl(fd,ioc,arg) syscall(__NR_ioctl, (fd), (ioc), (arg))
-#define __syscall_exit(code) syscall(__NR_exit, code)
+#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__)
+#define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__))
#endif