]>
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 | ||
6 | #if _MIPSEL || __MIPSEL || __MIPSEL__ | |
7 | #define __stat_fix(st) ((st),(void)0) | |
8 | #else | |
9 | #include <sys/stat.h> | |
10 | static inline void __stat_fix(long p) | |
11 | { | |
12 | struct stat *st = (struct stat *)p; | |
13 | st->st_dev >>= 32; | |
14 | st->st_rdev >>= 32; | |
15 | } | |
16 | #endif | |
17 | ||
18 | static inline long __syscall0(long n) | |
19 | { | |
20 | register long r7 __asm__("$7"); | |
21 | register long r2 __asm__("$2"); | |
22 | __asm__ __volatile__ ( | |
23 | "addu $2,$0,%2 ; syscall" | |
24 | : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7) | |
25 | : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", | |
26 | "$14", "$15", "$24", "$25", "hi", "lo", "memory"); | |
27 | return r7 ? -r2 : r2; | |
28 | } | |
29 | ||
30 | static inline long __syscall1(long n, long a) | |
31 | { | |
32 | register long r4 __asm__("$4") = a; | |
33 | register long r7 __asm__("$7"); | |
34 | register long r2 __asm__("$2"); | |
35 | __asm__ __volatile__ ( | |
36 | "addu $2,$0,%2 ; syscall" | |
37 | : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), | |
38 | "r"(r4) | |
39 | : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", | |
40 | "$14", "$15", "$24", "$25", "hi", "lo", "memory"); | |
41 | return r7 ? -r2 : r2; | |
42 | } | |
43 | ||
44 | static inline long __syscall2(long n, long a, long b) | |
45 | { | |
46 | register long r4 __asm__("$4") = a; | |
47 | register long r5 __asm__("$5") = b; | |
48 | register long r7 __asm__("$7"); | |
49 | register long r2 __asm__("$2"); | |
50 | __asm__ __volatile__ ( | |
51 | "addu $2,$0,%2 ; syscall" | |
52 | : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), | |
53 | "r"(r4), "r"(r5) | |
54 | : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", | |
55 | "$14", "$15", "$24", "$25", "hi", "lo", "memory"); | |
56 | if (r7) return -r2; | |
57 | long ret = r2; | |
58 | if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) __stat_fix(b); | |
59 | return ret; | |
60 | } | |
61 | ||
62 | static inline long __syscall3(long n, long a, long b, long c) | |
63 | { | |
64 | register long r4 __asm__("$4") = a; | |
65 | register long r5 __asm__("$5") = b; | |
66 | register long r6 __asm__("$6") = c; | |
67 | register long r7 __asm__("$7"); | |
68 | register long r2 __asm__("$2"); | |
69 | __asm__ __volatile__ ( | |
70 | "addu $2,$0,%2 ; syscall" | |
71 | : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), | |
72 | "r"(r4), "r"(r5), "r"(r6) | |
73 | : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", | |
74 | "$14", "$15", "$24", "$25", "hi", "lo", "memory"); | |
75 | if (r7) return -r2; | |
76 | long ret = r2; | |
77 | if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) __stat_fix(b); | |
78 | return ret; | |
79 | } | |
80 | ||
81 | static inline long __syscall4(long n, long a, long b, long c, long d) | |
82 | { | |
83 | register long r4 __asm__("$4") = a; | |
84 | register long r5 __asm__("$5") = b; | |
85 | register long r6 __asm__("$6") = c; | |
86 | register long r7 __asm__("$7") = d; | |
87 | register long r2 __asm__("$2"); | |
88 | __asm__ __volatile__ ( | |
89 | "addu $2,$0,%2 ; syscall" | |
90 | : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), | |
91 | "r"(r4), "r"(r5), "r"(r6) | |
92 | : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", | |
93 | "$14", "$15", "$24", "$25", "hi", "lo", "memory"); | |
94 | if (r7) return -r2; | |
95 | long ret = r2; | |
96 | if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) __stat_fix(b); | |
97 | if (n == SYS_newfstatat) __stat_fix(c); | |
98 | return ret; | |
99 | } | |
100 | ||
101 | static inline long __syscall5(long n, long a, long b, long c, long d, long e) | |
102 | { | |
d4db3fa2 DG |
103 | register long r4 __asm__("$4") = a; |
104 | register long r5 __asm__("$5") = b; | |
105 | register long r6 __asm__("$6") = c; | |
106 | register long r7 __asm__("$7") = d; | |
107 | register long r8 __asm__("$8") = e; | |
108 | register long r2 __asm__("$2"); | |
109 | __asm__ __volatile__ ( | |
110 | "addu $2,$0,%2 ; syscall" | |
111 | : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), | |
112 | "r"(r4), "r"(r5), "r"(r6), "r"(r8) | |
113 | : "$1", "$3", "$9", "$10", "$11", "$12", "$13", | |
114 | "$14", "$15", "$24", "$25", "hi", "lo", "memory"); | |
320054e8 DG |
115 | if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) __stat_fix(b); |
116 | if (n == SYS_newfstatat) __stat_fix(c); | |
117 | return r2; | |
118 | } | |
119 | ||
120 | static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) | |
121 | { | |
d4db3fa2 DG |
122 | register long r4 __asm__("$4") = a; |
123 | register long r5 __asm__("$5") = b; | |
124 | register long r6 __asm__("$6") = c; | |
125 | register long r7 __asm__("$7") = d; | |
126 | register long r8 __asm__("$8") = e; | |
127 | register long r9 __asm__("$9") = f; | |
128 | register long r2 __asm__("$2"); | |
129 | __asm__ __volatile__ ( | |
130 | "addu $2,$0,%2 ; syscall" | |
131 | : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), | |
132 | "r"(r4), "r"(r5), "r"(r6), "r"(r8), "r"(r9) | |
133 | : "$1", "$3", "$10", "$11", "$12", "$13", | |
134 | "$14", "$15", "$24", "$25", "hi", "lo", "memory"); | |
320054e8 DG |
135 | if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) __stat_fix(b); |
136 | if (n == SYS_newfstatat) __stat_fix(c); | |
137 | return r2; | |
138 | } | |
139 | ||
140 | #define VDSO_USEFUL | |
141 | #define VDSO_CGT_SYM "__vdso_clock_gettime" | |
142 | #define VDSO_CGT_VER "LINUX_2.6" |