master
1
2#define __SYSCALL_LL_E(x) \
3((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
4((union { long long ll; long l[2]; }){ .ll = x }).l[1]
5#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x))
6
7#define __asm_syscall(...) do { \
8 __asm__ __volatile__ ( "trap0(#1)" \
9 : "=r"(r0) : __VA_ARGS__ : "memory"); \
10 return r0; \
11 } while (0)
12
13static inline long __syscall0(long n)
14{
15 register long r6 __asm__("r6") = n;
16 register long r0 __asm__("r0");
17 __asm_syscall("r"(r6));
18}
19
20static inline long __syscall1(long n, long a)
21{
22 register long r6 __asm__("r6") = n;
23 register long r0 __asm__("r0") = a;
24 __asm_syscall("r"(r6), "0"(r0));
25}
26
27static inline long __syscall2(long n, long a, long b)
28{
29 register long r6 __asm__("r6") = n;
30 register long r0 __asm__("r0") = a;
31 register long r1 __asm__("r1") = b;
32 __asm_syscall("r"(r6), "0"(r0), "r"(r1));
33}
34
35static inline long __syscall3(long n, long a, long b, long c)
36{
37 register long r6 __asm__("r6") = n;
38 register long r0 __asm__("r0") = a;
39 register long r1 __asm__("r1") = b;
40 register long r2 __asm__("r2") = c;
41 __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2));
42}
43
44static inline long __syscall4(long n, long a, long b, long c, long d)
45{
46 register long r6 __asm__("r6") = n;
47 register long r0 __asm__("r0") = a;
48 register long r1 __asm__("r1") = b;
49 register long r2 __asm__("r2") = c;
50 register long r3 __asm__("r3") = d;
51 __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
52}
53
54static inline long __syscall5(long n, long a, long b, long c, long d, long e)
55{
56 register long r6 __asm__("r6") = n;
57 register long r0 __asm__("r0") = a;
58 register long r1 __asm__("r1") = b;
59 register long r2 __asm__("r2") = c;
60 register long r3 __asm__("r3") = d;
61 register long r4 __asm__("r4") = e;
62 __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
63}
64
65static inline long __syscall6(long n, long a, long b, long c, long d, long e,
66 long f)
67{
68 register long r6 __asm__("r6") = n;
69 register long r0 __asm__("r0") = a;
70 register long r1 __asm__("r1") = b;
71 register long r2 __asm__("r2") = c;
72 register long r3 __asm__("r3") = d;
73 register long r4 __asm__("r4") = e;
74 register long r5 __asm__("r5") = f;
75 __asm_syscall("r"(r6), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
76}
77
78#define SYSCALL_FADVISE_6_ARG