syscall.c 784 B

1234567891011121314151617181920212223242526272829303132
  1. /*
  2. * Copyright (C) 2017 Joel Stanley <joel@jms.id.au>
  3. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  4. */
  5. #include <stdarg.h>
  6. #include <sys/syscall.h>
  7. #include <unistd.h>
  8. long int syscall (long num, ...)
  9. {
  10. unsigned long arg1 = 0;
  11. unsigned long arg2 = 0;
  12. unsigned long arg3 = 0;
  13. unsigned long arg4 = 0;
  14. unsigned long arg5 = 0;
  15. unsigned long arg6 = 0;
  16. va_list arg;
  17. va_start (arg, num);
  18. arg1 = va_arg (arg, unsigned long);
  19. arg2 = va_arg (arg, unsigned long);
  20. arg3 = va_arg (arg, unsigned long);
  21. arg4 = va_arg (arg, unsigned long);
  22. arg5 = va_arg (arg, unsigned long);
  23. arg6 = va_arg (arg, unsigned long);
  24. va_end (arg);
  25. __asm__ volatile ( "" ::: "memory" );
  26. return INLINE_SYSCALL_NCS(num, 6, arg1, arg2, arg3, arg4, arg5, arg6);
  27. }