1#define __SYSCALL_LL_E(x) \ 2((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ 3((union { long long ll; long l[2]; }){ .ll = x }).l[1] 4#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x)) 5 6#if __riscv_xlen == 32 7extern unsigned int __sysinfo; 8#else 9extern unsigned long __sysinfo; 10#endif 11 12#define CALL_SYSINFO(n, ...) ((long(*)(long,...))__sysinfo)(n, ##__VA_ARGS__) 13 14static inline long __syscall0(long n) 15{ 16 return CALL_SYSINFO(n); 17} 18 19static inline long __syscall1(long n, long a1) 20{ 21 return CALL_SYSINFO(n, a1); 22} 23 24static inline long __syscall2(long n, long a1, long a2) 25{ 26 return CALL_SYSINFO(n, a1, a2); 27} 28 29static inline long __syscall3(long n, long a1, long a2, long a3) 30{ 31 return CALL_SYSINFO(n, a1, a2, a3); 32} 33 34static inline long __syscall4(long n, long a1, long a2, long a3, long a4) 35{ 36 return CALL_SYSINFO(n, a1, a2, a3, a4); 37} 38 39static inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5) 40{ 41 return CALL_SYSINFO(n, a1, a2, a3, a4, a5); 42} 43 44static inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6) 45{ 46 return CALL_SYSINFO(n, a1, a2, a3, a4, a5, a6); 47} 48