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