]> git.wh0rd.org - patches.git/blame_incremental - qemu-friendlier-syscall.patch
initial import
[patches.git] / qemu-friendlier-syscall.patch
... / ...
CommitLineData
1--- linux-user/syscall.c 22 Mar 2007 15:08:55 -0000 1.95
2+++ linux-user/syscall.c 31 Mar 2007 08:36:00 -0000
3@@ -2043,6 +2047,7 @@ long do_syscall(void *cpu_env, int num,
4 case TARGET_NR_fork:
5 ret = get_errno(do_fork(cpu_env, SIGCHLD, 0));
6 break;
7+#ifdef TARGET_NR_waitpid
8 case TARGET_NR_waitpid:
9 {
10 int status;
11@@ -2051,6 +2056,7 @@ long do_syscall(void *cpu_env, int num,
12 tput32(arg2, status);
13 }
14 break;
15+#endif
16 case TARGET_NR_creat:
17 p = lock_user_string(arg1);
18 ret = get_errno(creat(p, arg2));
19@@ -2179,11 +2185,13 @@ long do_syscall(void *cpu_env, int num,
20 unlock_user(p3, arg3, 0);
21 break;
22 }
23+#ifdef TARGET_NR_umount
24 case TARGET_NR_umount:
25 p = lock_user_string(arg1);
26 ret = get_errno(umount(p));
27 unlock_user(p, arg1, 0);
28 break;
29+#endif
30 case TARGET_NR_stime:
31 {
32 time_t host_time;
33@@ -2203,6 +2211,7 @@ long do_syscall(void *cpu_env, int num,
34 case TARGET_NR_pause:
35 ret = get_errno(pause());
36 break;
37+#ifdef TARGET_NR_utime
38 case TARGET_NR_utime:
39 {
40 struct utimbuf tbuf, *host_tbuf;
41@@ -2221,6 +2230,7 @@ long do_syscall(void *cpu_env, int num,
42 unlock_user(p, arg1, 0);
43 }
44 break;
45+#endif
46 case TARGET_NR_utimes:
47 {
48 struct timeval *tvp, tv[2];
49@@ -2317,9 +2327,10 @@ long do_syscall(void *cpu_env, int num,
50 case TARGET_NR_prof:
51 goto unimplemented;
52 #endif
53+#ifdef TARGET_NR_signal
54 case TARGET_NR_signal:
55 goto unimplemented;
56-
57+#endif
58 case TARGET_NR_acct:
59 p = lock_user_string(arg1);
60 ret = get_errno(acct(path(p)));
61@@ -2377,6 +2388,7 @@ long do_syscall(void *cpu_env, int num,
62 case TARGET_NR_setsid:
63 ret = get_errno(setsid());
64 break;
65+#ifdef TARGET_NR_sigaction
66 case TARGET_NR_sigaction:
67 {
68 #if !defined(TARGET_MIPS)
69@@ -2431,6 +2443,7 @@ long do_syscall(void *cpu_env, int num,
70 #endif
71 }
72 break;
73+#endif
74 case TARGET_NR_rt_sigaction:
75 {
76 struct target_sigaction *act;
77@@ -2472,6 +2485,7 @@ long do_syscall(void *cpu_env, int num,
78 ret = target_set;
79 }
80 break;
81+#ifdef TARGET_NR_sigprocmask
82 case TARGET_NR_sigprocmask:
83 {
84 int how = arg1;
85@@ -2508,6 +2522,7 @@ long do_syscall(void *cpu_env, int num,
86 }
87 }
88 break;
89+#endif
90 case TARGET_NR_rt_sigprocmask:
91 {
92 int how = arg1;
93@@ -2544,6 +2559,7 @@ long do_syscall(void *cpu_env, int num,
94 }
95 }
96 break;
97+#ifdef TARGET_NR_sigpending
98 case TARGET_NR_sigpending:
99 {
100 sigset_t set;
101@@ -2555,6 +2571,7 @@ long do_syscall(void *cpu_env, int num,
102 }
103 }
104 break;
105+#endif
106 case TARGET_NR_rt_sigpending:
107 {
108 sigset_t set;
109@@ -2566,6 +2583,7 @@ long do_syscall(void *cpu_env, int num,
110 }
111 }
112 break;
113+#ifdef TARGET_NR_sigsuspend
114 case TARGET_NR_sigsuspend:
115 {
116 sigset_t set;
117@@ -2575,6 +2593,7 @@ long do_syscall(void *cpu_env, int num,
118 ret = get_errno(sigsuspend(&set));
119 }
120 break;
121+#endif
122 case TARGET_NR_rt_sigsuspend:
123 {
124 sigset_t set;
125@@ -2616,10 +2635,12 @@ long do_syscall(void *cpu_env, int num,
126 ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo));
127 }
128 break;
129+#ifdef TARGET_NR_sigreturn
130 case TARGET_NR_sigreturn:
131 /* NOTE: ret is eax, so not transcoding must be done */
132 ret = do_sigreturn(cpu_env);
133 break;
134+#endif
135 case TARGET_NR_rt_sigreturn:
136 /* NOTE: ret is eax, so not transcoding must be done */
137 ret = do_rt_sigreturn(cpu_env);
138@@ -2725,17 +2746,24 @@ long do_syscall(void *cpu_env, int num,
139 unlock_user(p, arg1, 0);
140 }
141 break;
142+#ifdef TARGET_NR_uselib
143 case TARGET_NR_uselib:
144 goto unimplemented;
145+#endif
146+#ifdef TARGET_NR_swapon
147 case TARGET_NR_swapon:
148 p = lock_user_string(arg1);
149 ret = get_errno(swapon(p, arg2));
150 unlock_user(p, arg1, 0);
151 break;
152+#endif
153 case TARGET_NR_reboot:
154 goto unimplemented;
155+#ifdef TARGET_NR_readdir
156 case TARGET_NR_readdir:
157 goto unimplemented;
158+#endif
159+#ifdef TARGET_NR_mmap
160 case TARGET_NR_mmap:
161 #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_M68K)
162 {
163@@ -2760,6 +2788,7 @@ long do_syscall(void *cpu_env, int num,
164 arg6));
165 #endif
166 break;
167+#endif
168 #ifdef TARGET_NR_mmap2
169 case TARGET_NR_mmap2:
170 #if defined(TARGET_SPARC) || defined(TARGET_MIPS)
171@@ -2779,25 +2808,37 @@ long do_syscall(void *cpu_env, int num,
172 case TARGET_NR_mprotect:
173 ret = get_errno(target_mprotect(arg1, arg2, arg3));
174 break;
175+#ifdef TARGET_NR_mremap
176 case TARGET_NR_mremap:
177 ret = get_errno(target_mremap(arg1, arg2, arg3, arg4, arg5));
178 break;
179+#endif
180 /* ??? msync/mlock/munlock are broken for softmmu. */
181+#ifdef TARGET_NR_msync
182 case TARGET_NR_msync:
183 ret = get_errno(msync(g2h(arg1), arg2, arg3));
184 break;
185+#endif
186+#ifdef TARGET_NR_mlock
187 case TARGET_NR_mlock:
188 ret = get_errno(mlock(g2h(arg1), arg2));
189 break;
190+#endif
191+#ifdef TARGET_NR_munlock
192 case TARGET_NR_munlock:
193 ret = get_errno(munlock(g2h(arg1), arg2));
194 break;
195+#endif
196+#ifdef TARGET_NR_mlockall
197 case TARGET_NR_mlockall:
198 ret = get_errno(mlockall(arg1));
199 break;
200+#endif
201+#ifdef TARGET_NR_munlockall
202 case TARGET_NR_munlockall:
203 ret = get_errno(munlockall());
204 break;
205+#endif
206 case TARGET_NR_truncate:
207 p = lock_user_string(arg1);
208 ret = get_errno(truncate(p, arg2));
209@@ -2875,10 +2916,11 @@ long do_syscall(void *cpu_env, int num,
210 case TARGET_NR_ioperm:
211 goto unimplemented;
212 #endif
213+#ifdef TARGET_NR_socketcall
214 case TARGET_NR_socketcall:
215 ret = do_socketcall(arg1, arg2);
216 break;
217-
218+#endif
219 #ifdef TARGET_NR_accept
220 case TARGET_NR_accept:
221 ret = do_accept(arg1, arg2, arg3);
222@@ -3087,11 +3129,13 @@ long do_syscall(void *cpu_env, int num,
223 }
224 }
225 break;
226+#ifdef TARGET_NR_swapoff
227 case TARGET_NR_swapoff:
228 p = lock_user_string(arg1);
229 ret = get_errno(swapoff(p));
230 unlock_user(p, arg1, 0);
231 break;
232+#endif
233 case TARGET_NR_sysinfo:
234 {
235 struct target_sysinfo *target_value;
236@@ -3119,9 +3163,11 @@ long do_syscall(void *cpu_env, int num,
237 }
238 }
239 break;
240+#ifdef TARGET_NR_ipc
241 case TARGET_NR_ipc:
242 ret = do_ipc(arg1, arg2, arg3, arg4, arg5, arg6);
243 break;
244+#endif
245 case TARGET_NR_fsync:
246 ret = get_errno(fsync(arg1));
247 break;
248@@ -3170,10 +3216,14 @@ long do_syscall(void *cpu_env, int num,
249 #endif
250 case TARGET_NR_adjtimex:
251 goto unimplemented;
252+#ifdef TARGET_NR_create_module
253 case TARGET_NR_create_module:
254+#endif
255 case TARGET_NR_init_module:
256 case TARGET_NR_delete_module:
257+#ifdef TARGET_NR_get_kernel_syms
258 case TARGET_NR_get_kernel_syms:
259+#endif
260 goto unimplemented;
261 case TARGET_NR_quotactl:
262 goto unimplemented;
263@@ -3185,13 +3235,17 @@ long do_syscall(void *cpu_env, int num,
264 break;
265 case TARGET_NR_bdflush:
266 goto unimplemented;
267+#ifdef TARGET_NR_sysfs
268 case TARGET_NR_sysfs:
269 goto unimplemented;
270+#endif
271 case TARGET_NR_personality:
272 ret = get_errno(personality(arg1));
273 break;
274+#ifdef TARGET_NR_afs_syscall
275 case TARGET_NR_afs_syscall:
276 goto unimplemented;
277+#endif
278 case TARGET_NR__llseek:
279 {
280 #if defined (__x86_64__)
281@@ -3305,9 +3359,12 @@ long do_syscall(void *cpu_env, int num,
282 }
283 break;
284 #endif /* TARGET_NR_getdents64 */
285+#ifdef TARGET_NR__newselect
286 case TARGET_NR__newselect:
287 ret = do_select(arg1, arg2, arg3, arg4, arg5);
288 break;
289+#endif
290+#ifdef TARGET_NR_poll
291 case TARGET_NR_poll:
292 {
293 struct target_pollfd *target_pfd;
294@@ -3333,6 +3390,7 @@ long do_syscall(void *cpu_env, int num,
295 unlock_user(target_pfd, arg1, ret);
296 }
297 break;
298+#endif
299 case TARGET_NR_flock:
300 /* NOTE: the flock constant seems to be the same for every
301 Linux platform */
302@@ -3434,10 +3492,14 @@ long do_syscall(void *cpu_env, int num,
303 }
304 }
305 break;
306+#ifdef TARGET_NR_query_module
307 case TARGET_NR_query_module:
308 goto unimplemented;
309+#endif
310+#ifdef TARGET_NR_nfsservctl
311 case TARGET_NR_nfsservctl:
312 goto unimplemented;
313+#endif
314 case TARGET_NR_prctl:
315 switch (arg1)
316 {
317@@ -3970,8 +4032,10 @@ long do_syscall(void *cpu_env, int num,
318 case TARGET_NR_gettid:
319 ret = get_errno(gettid());
320 break;
321+#ifdef TARGET_NR_readahead
322 case TARGET_NR_readahead:
323 goto unimplemented;
324+#endif
325 #ifdef TARGET_NR_setxattr
326 case TARGET_NR_setxattr:
327 case TARGET_NR_lsetxattr: