syscall_arch.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #define __SYSCALL_LL_E(x) (x)
  2. #define __SYSCALL_LL_O(x) (x)
  3. #define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X)
  4. typedef long long syscall_arg_t;
  5. static __inline long __syscall0(long long n)
  6. {
  7. unsigned long ret;
  8. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
  9. return ret;
  10. }
  11. static __inline long __syscall1(long long n, long long a1)
  12. {
  13. unsigned long ret;
  14. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory");
  15. return ret;
  16. }
  17. static __inline long __syscall2(long long n, long long a1, long long a2)
  18. {
  19. unsigned long ret;
  20. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2)
  21. : "rcx", "r11", "memory");
  22. return ret;
  23. }
  24. static __inline long __syscall3(long long n, long long a1, long long a2, long long a3)
  25. {
  26. unsigned long ret;
  27. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  28. "d"(a3) : "rcx", "r11", "memory");
  29. return ret;
  30. }
  31. static __inline long __syscall4(long long n, long long a1, long long a2, long long a3,
  32. long long a4_)
  33. {
  34. unsigned long ret;
  35. register long long a4 __asm__("r10") = a4_;
  36. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  37. "d"(a3), "r"(a4): "rcx", "r11", "memory");
  38. return ret;
  39. }
  40. static __inline long __syscall5(long long n, long long a1, long long a2, long long a3,
  41. long long a4_, long long a5_)
  42. {
  43. unsigned long ret;
  44. register long long a4 __asm__("r10") = a4_;
  45. register long long a5 __asm__("r8") = a5_;
  46. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  47. "d"(a3), "r"(a4), "r"(a5) : "rcx", "r11", "memory");
  48. return ret;
  49. }
  50. static __inline long __syscall6(long long n, long long a1, long long a2, long long a3,
  51. long long a4_, long long a5_, long long a6_)
  52. {
  53. unsigned long ret;
  54. register long long a4 __asm__("r10") = a4_;
  55. register long long a5 __asm__("r8") = a5_;
  56. register long long a6 __asm__("r9") = a6_;
  57. __asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
  58. "d"(a3), "r"(a4), "r"(a5), "r"(a6) : "rcx", "r11", "memory");
  59. return ret;
  60. }
  61. #undef SYS_futimesat
  62. #define SYS_clock_gettime64 SYS_clock_gettime
  63. #define SYS_clock_settime64 SYS_clock_settime
  64. #define SYS_clock_adjtime64 SYS_clock_adjtime
  65. #define SYS_clock_nanosleep_time64 SYS_clock_nanosleep
  66. #define SYS_timer_gettime64 SYS_timer_gettime
  67. #define SYS_timer_settime64 SYS_timer_settime
  68. #define SYS_timerfd_gettime64 SYS_timerfd_gettime
  69. #define SYS_timerfd_settime64 SYS_timerfd_settime
  70. #define SYS_utimensat_time64 SYS_utimensat
  71. #define SYS_pselect6_time64 SYS_pselect6
  72. #define SYS_ppoll_time64 SYS_ppoll
  73. #define SYS_recvmmsg_time64 SYS_recvmmsg
  74. #define SYS_mq_timedsend_time64 SYS_mq_timedsend
  75. #define SYS_mq_timedreceive_time64 SYS_mq_timedreceive
  76. #define SYS_semtimedop_time64 SYS_semtimedop
  77. #define SYS_rt_sigtimedwait_time64 SYS_rt_sigtimedwait
  78. #define SYS_futex_time64 SYS_futex
  79. #define SYS_sched_rr_get_interval_time64 SYS_sched_rr_get_interval
  80. #define IPC_64 0