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