1 #define __SYSCALL_LL_E(x) (x)
2 #define __SYSCALL_LL_O(x) (x)
4 #define SYSCALL_RLIM_INFINITY (-1UL/2)
9 unsigned int __pad1[3];
10 unsigned long long st_ino;
12 unsigned int st_nlink;
16 unsigned int __pad2[3];
18 unsigned int st_atime_sec;
19 unsigned int st_atime_nsec;
20 unsigned int st_mtime_sec;
21 unsigned int st_mtime_nsec;
22 unsigned int st_ctime_sec;
23 unsigned int st_ctime_nsec;
24 unsigned int st_blksize;
26 unsigned long long st_blocks;
29 static void __stat_fix(struct kernel_stat *kst, struct stat *st)
31 st->st_dev = kst->st_dev;
32 st->st_ino = kst->st_ino;
33 st->st_mode = kst->st_mode;
34 st->st_nlink = kst->st_nlink;
35 st->st_uid = kst->st_uid;
36 st->st_gid = kst->st_gid;
37 st->st_rdev = kst->st_rdev;
38 st->st_size = kst->st_size;
39 st->st_atim.tv_sec = kst->st_atime_sec;
40 st->st_atim.tv_nsec = kst->st_atime_nsec;
41 st->st_mtim.tv_sec = kst->st_mtime_sec;
42 st->st_mtim.tv_nsec = kst->st_mtime_nsec;
43 st->st_ctim.tv_sec = kst->st_ctime_sec;
44 st->st_ctim.tv_nsec = kst->st_ctime_nsec;
45 st->st_blksize = kst->st_blksize;
46 st->st_blocks = kst->st_blocks;
49 #define SYSCALL_CLOBBERLIST \
50 "$1", "$3", "$10", "$11", "$12", "$13", \
51 "$14", "$15", "$24", "$25", "hi", "lo", "memory"
53 static inline long __syscall0(long n)
55 register long r7 __asm__("$7");
56 register long r2 __asm__("$2") = n;
57 __asm__ __volatile__ (
61 : SYSCALL_CLOBBERLIST);
65 static inline long __syscall1(long n, long a)
67 register long r4 __asm__("$4") = a;
68 register long r7 __asm__("$7");
69 register long r2 __asm__("$2") = n;
70 __asm__ __volatile__ (
74 : SYSCALL_CLOBBERLIST);
78 static inline long __syscall2(long n, long a, long b)
80 struct kernel_stat kst;
82 register long r4 __asm__("$4") = a;
83 register long r5 __asm__("$5") = b;
84 register long r7 __asm__("$7");
85 register long r2 __asm__("$2") = n;
87 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
90 __asm__ __volatile__ (
94 : SYSCALL_CLOBBERLIST);
99 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
100 __stat_fix(&kst, (struct stat *)b);
105 static inline long __syscall3(long n, long a, long b, long c)
107 struct kernel_stat kst;
109 register long r4 __asm__("$4") = a;
110 register long r5 __asm__("$5") = b;
111 register long r6 __asm__("$6") = c;
112 register long r7 __asm__("$7");
113 register long r2 __asm__("$2") = n;
115 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
118 __asm__ __volatile__ (
120 : "+&r"(r2), "=r"(r7)
121 : "r"(r4), "r"(r5), "r"(r6)
122 : SYSCALL_CLOBBERLIST);
127 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
128 __stat_fix(&kst, (struct stat *)b);
133 static inline long __syscall4(long n, long a, long b, long c, long d)
135 struct kernel_stat kst;
137 register long r4 __asm__("$4") = a;
138 register long r5 __asm__("$5") = b;
139 register long r6 __asm__("$6") = c;
140 register long r7 __asm__("$7") = d;
141 register long r2 __asm__("$2") = n;
143 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
145 if (n == SYS_newfstatat)
148 __asm__ __volatile__ (
150 : "+&r"(r2), "+r"(r7)
151 : "r"(r4), "r"(r5), "r"(r6)
152 : SYSCALL_CLOBBERLIST);
157 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
158 __stat_fix(&kst, (struct stat *)b);
159 if (n == SYS_newfstatat)
160 __stat_fix(&kst, (struct stat *)c);
165 static inline long __syscall5(long n, long a, long b, long c, long d, long e)
167 struct kernel_stat kst;
169 register long r4 __asm__("$4") = a;
170 register long r5 __asm__("$5") = b;
171 register long r6 __asm__("$6") = c;
172 register long r7 __asm__("$7") = d;
173 register long r8 __asm__("$8") = e;
174 register long r2 __asm__("$2") = n;
176 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
178 if (n == SYS_newfstatat)
181 __asm__ __volatile__ (
183 : "+&r"(r2), "+r"(r7)
184 : "r"(r4), "r"(r5), "r"(r6), "r"(r8)
185 : SYSCALL_CLOBBERLIST);
190 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
191 __stat_fix(&kst, (struct stat *)b);
192 if (n == SYS_newfstatat)
193 __stat_fix(&kst, (struct stat *)c);
198 static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
200 struct kernel_stat kst;
202 register long r4 __asm__("$4") = a;
203 register long r5 __asm__("$5") = b;
204 register long r6 __asm__("$6") = c;
205 register long r7 __asm__("$7") = d;
206 register long r8 __asm__("$8") = e;
207 register long r9 __asm__("$9") = f;
208 register long r2 __asm__("$2") = n;
210 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
212 if (n == SYS_newfstatat)
215 __asm__ __volatile__ (
217 : "+&r"(r2), "+r"(r7)
218 : "r"(r4), "r"(r5), "r"(r6), "r"(r8), "r"(r9)
219 : SYSCALL_CLOBBERLIST);
224 if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat)
225 __stat_fix(&kst, (struct stat *)b);
226 if (n == SYS_newfstatat)
227 __stat_fix(&kst, (struct stat *)c);
233 #define VDSO_CGT_SYM "__vdso_clock_gettime"
234 #define VDSO_CGT_VER "LINUX_2.6"