syscall_arch.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #define __SYSCALL_LL_E(x) (x)
  2. #define __SYSCALL_LL_O(x) (x)
  3. #define __SYSCALL_SSLEN 8
  4. static __inline long __syscall0(long n)
  5. {
  6. unsigned long ret;
  7. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
  8. return ret;
  9. }
  10. static __inline long __syscall1(long n, long a1)
  11. {
  12. unsigned long ret;
  13. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory");
  14. return ret;
  15. }
  16. static __inline long __syscall2(long n, long a1, long a2)
  17. {
  18. unsigned long ret;
  19. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2)
  20. : "rcx", "r11", "memory");
  21. return ret;
  22. }
  23. static __inline long __syscall3(long n, long a1, long a2, long a3)
  24. {
  25. unsigned long ret;
  26. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  27. "d"(a3) : "rcx", "r11", "memory");
  28. return ret;
  29. }
  30. static __inline long __syscall4(long n, long a1, long a2, long a3, long a4)
  31. {
  32. unsigned long ret;
  33. register long r10 __asm__("r10") = a4;
  34. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  35. "d"(a3), "r"(r10): "rcx", "r11", "memory");
  36. return ret;
  37. }
  38. static __inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5)
  39. {
  40. unsigned long ret;
  41. register long r10 __asm__("r10") = a4;
  42. register long r8 __asm__("r8") = a5;
  43. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  44. "d"(a3), "r"(r10), "r"(r8) : "rcx", "r11", "memory");
  45. return ret;
  46. }
  47. static __inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
  48. {
  49. unsigned long ret;
  50. register long r10 __asm__("r10") = a4;
  51. register long r8 __asm__("r8") = a5;
  52. register long r9 __asm__("r9") = a6;
  53. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  54. "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory");
  55. return ret;
  56. }