1#define __SYSCALL_LL_E(x) (x)
2#define __SYSCALL_LL_O(x) (x)
3
4#define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X)
5typedef long long syscall_arg_t;
6
7#define SYSCALL_RLIM_INFINITY (-1UL/2)
8
9#if __mips_isa_rev >= 6
10#define SYSCALL_CLOBBERLIST \
11 "$1", "$3", "$10", "$11", "$12", "$13", \
12 "$14", "$15", "$24", "$25", "memory"
13#else
14#define SYSCALL_CLOBBERLIST \
15 "$1", "$3", "$10", "$11", "$12", "$13", \
16 "$14", "$15", "$24", "$25", "hi", "lo", "memory"
17#endif
18
19static inline long __syscall0(long long n)
20{
21 register long long r7 __asm__("$7");
22 register long r2 __asm__("$2");
23 __asm__ __volatile__ (
24 "daddu $2,$0,%2 ; syscall"
25 : "=&r"(r2), "=r"(r7)
26 : "ir"(n), "0"(r2)
27 : SYSCALL_CLOBBERLIST);
28 return r7 && r2>0 ? -r2 : r2;
29}
30
31static inline long __syscall1(long long n, long long a)
32{
33 register long long r4 __asm__("$4") = a;
34 register long long r7 __asm__("$7");
35 register long r2 __asm__("$2");
36 __asm__ __volatile__ (
37 "daddu $2,$0,%2 ; syscall"
38 : "=&r"(r2), "=r"(r7)
39 : "ir"(n), "0"(r2), "r"(r4)
40 : SYSCALL_CLOBBERLIST);
41 return r7 && r2>0 ? -r2 : r2;
42}
43
44static inline long __syscall2(long long n, long long a, long long b)
45{
46 register long long r4 __asm__("$4") = a;
47 register long long r5 __asm__("$5") = b;
48 register long long r7 __asm__("$7");
49 register long r2 __asm__("$2");
50
51 __asm__ __volatile__ (
52 "daddu $2,$0,%2 ; syscall"
53 : "=&r"(r2), "=r"(r7)
54 : "ir"(n), "0"(r2), "r"(r4), "r"(r5)
55 : SYSCALL_CLOBBERLIST);
56 return r7 && r2>0 ? -r2 : r2;
57}
58
59static inline long __syscall3(long long n, long long a, long long b, long long c)
60{
61 register long long r4 __asm__("$4") = a;
62 register long long r5 __asm__("$5") = b;
63 register long long r6 __asm__("$6") = c;
64 register long long r7 __asm__("$7");
65 register long r2 __asm__("$2");
66
67 __asm__ __volatile__ (
68 "daddu $2,$0,%2 ; syscall"
69 : "=&r"(r2), "=r"(r7)
70 : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6)
71 : SYSCALL_CLOBBERLIST);
72 return r7 && r2>0 ? -r2 : r2;
73}
74
75static inline long __syscall4(long long n, long long a, long long b, long long c, long long d)
76{
77 register long long r4 __asm__("$4") = a;
78 register long long r5 __asm__("$5") = b;
79 register long long r6 __asm__("$6") = c;
80 register long long r7 __asm__("$7") = d;
81 register long r2 __asm__("$2");
82
83 __asm__ __volatile__ (
84 "daddu $2,$0,%2 ; syscall"
85 : "=&r"(r2), "+r"(r7)
86 : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6)
87 : SYSCALL_CLOBBERLIST);
88 return r7 && r2>0 ? -r2 : r2;
89}
90
91static inline long __syscall5(long long n, long long a, long long b, long long c, long long d, long long e)
92{
93 register long long r4 __asm__("$4") = a;
94 register long long r5 __asm__("$5") = b;
95 register long long r6 __asm__("$6") = c;
96 register long long r7 __asm__("$7") = d;
97 register long long r8 __asm__("$8") = e;
98 register long r2 __asm__("$2");
99
100 __asm__ __volatile__ (
101 "daddu $2,$0,%2 ; syscall"
102 : "=&r"(r2), "+r"(r7)
103 : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6), "r"(r8)
104 : SYSCALL_CLOBBERLIST);
105 return r7 && r2>0 ? -r2 : r2;
106}
107
108static inline long __syscall6(long long n, long long a, long long b, long long c, long long d, long long e, long long f)
109{
110 register long long r4 __asm__("$4") = a;
111 register long long r5 __asm__("$5") = b;
112 register long long r6 __asm__("$6") = c;
113 register long long r7 __asm__("$7") = d;
114 register long long r8 __asm__("$8") = e;
115 register long long r9 __asm__("$9") = f;
116 register long r2 __asm__("$2");
117
118 __asm__ __volatile__ (
119 "daddu $2,$0,%2 ; syscall"
120 : "=&r"(r2), "+r"(r7)
121 : "ir"(n), "0"(r2), "r"(r4), "r"(r5), "r"(r6), "r"(r8), "r"(r9)
122 : SYSCALL_CLOBBERLIST);
123 return r7 && r2>0 ? -r2 : r2;
124}
125
126#define VDSO_USEFUL
127#define VDSO_CGT32_SYM "__vdso_clock_gettime"
128#define VDSO_CGT32_VER "LINUX_2.6"
129#define VDSO_CGT_SYM "__vdso_clock_gettime64"
130#define VDSO_CGT_VER "LINUX_2.6"
131
132#define SO_SNDTIMEO_OLD 0x1005
133#define SO_RCVTIMEO_OLD 0x1006