Commit e5febef5f1811dfd59aa197aad83e96db26a9516

Authored by ths
1 parent 2053152b

Conditionalize more syscall implementations, by Mike Frysinger.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2576 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 62 additions and 2 deletions
linux-user/syscall.c
... ... @@ -2057,6 +2057,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2057 2057 case TARGET_NR_fork:
2058 2058 ret = get_errno(do_fork(cpu_env, SIGCHLD, 0));
2059 2059 break;
  2060 +#ifdef TARGET_NR_waitpid
2060 2061 case TARGET_NR_waitpid:
2061 2062 {
2062 2063 int status;
... ... @@ -2065,6 +2066,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2065 2066 tput32(arg2, status);
2066 2067 }
2067 2068 break;
  2069 +#endif
2068 2070 case TARGET_NR_creat:
2069 2071 p = lock_user_string(arg1);
2070 2072 ret = get_errno(creat(p, arg2));
... ... @@ -2193,11 +2195,13 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2193 2195 unlock_user(p3, arg3, 0);
2194 2196 break;
2195 2197 }
  2198 +#ifdef TARGET_NR_umount
2196 2199 case TARGET_NR_umount:
2197 2200 p = lock_user_string(arg1);
2198 2201 ret = get_errno(umount(p));
2199 2202 unlock_user(p, arg1, 0);
2200 2203 break;
  2204 +#endif
2201 2205 case TARGET_NR_stime:
2202 2206 {
2203 2207 time_t host_time;
... ... @@ -2217,6 +2221,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2217 2221 case TARGET_NR_pause:
2218 2222 ret = get_errno(pause());
2219 2223 break;
  2224 +#ifdef TARGET_NR_utime
2220 2225 case TARGET_NR_utime:
2221 2226 {
2222 2227 struct utimbuf tbuf, *host_tbuf;
... ... @@ -2235,6 +2240,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2235 2240 unlock_user(p, arg1, 0);
2236 2241 }
2237 2242 break;
  2243 +#endif
2238 2244 case TARGET_NR_utimes:
2239 2245 {
2240 2246 struct timeval *tvp, tv[2];
... ... @@ -2331,9 +2337,10 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2331 2337 case TARGET_NR_prof:
2332 2338 goto unimplemented;
2333 2339 #endif
  2340 +#ifdef TARGET_NR_signal
2334 2341 case TARGET_NR_signal:
2335 2342 goto unimplemented;
2336   -
  2343 +#endif
2337 2344 case TARGET_NR_acct:
2338 2345 p = lock_user_string(arg1);
2339 2346 ret = get_errno(acct(path(p)));
... ... @@ -2391,6 +2398,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2391 2398 case TARGET_NR_setsid:
2392 2399 ret = get_errno(setsid());
2393 2400 break;
  2401 +#ifdef TARGET_NR_sigaction
2394 2402 case TARGET_NR_sigaction:
2395 2403 {
2396 2404 #if !defined(TARGET_MIPS)
... ... @@ -2445,6 +2453,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2445 2453 #endif
2446 2454 }
2447 2455 break;
  2456 +#endif
2448 2457 case TARGET_NR_rt_sigaction:
2449 2458 {
2450 2459 struct target_sigaction *act;
... ... @@ -2486,6 +2495,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2486 2495 ret = target_set;
2487 2496 }
2488 2497 break;
  2498 +#ifdef TARGET_NR_sigprocmask
2489 2499 case TARGET_NR_sigprocmask:
2490 2500 {
2491 2501 int how = arg1;
... ... @@ -2522,6 +2532,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2522 2532 }
2523 2533 }
2524 2534 break;
  2535 +#endif
2525 2536 case TARGET_NR_rt_sigprocmask:
2526 2537 {
2527 2538 int how = arg1;
... ... @@ -2558,6 +2569,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2558 2569 }
2559 2570 }
2560 2571 break;
  2572 +#ifdef TARGET_NR_sigpending
2561 2573 case TARGET_NR_sigpending:
2562 2574 {
2563 2575 sigset_t set;
... ... @@ -2569,6 +2581,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2569 2581 }
2570 2582 }
2571 2583 break;
  2584 +#endif
2572 2585 case TARGET_NR_rt_sigpending:
2573 2586 {
2574 2587 sigset_t set;
... ... @@ -2580,6 +2593,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2580 2593 }
2581 2594 }
2582 2595 break;
  2596 +#ifdef TARGET_NR_sigsuspend
2583 2597 case TARGET_NR_sigsuspend:
2584 2598 {
2585 2599 sigset_t set;
... ... @@ -2589,6 +2603,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2589 2603 ret = get_errno(sigsuspend(&set));
2590 2604 }
2591 2605 break;
  2606 +#endif
2592 2607 case TARGET_NR_rt_sigsuspend:
2593 2608 {
2594 2609 sigset_t set;
... ... @@ -2630,10 +2645,12 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2630 2645 ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo));
2631 2646 }
2632 2647 break;
  2648 +#ifdef TARGET_NR_sigreturn
2633 2649 case TARGET_NR_sigreturn:
2634 2650 /* NOTE: ret is eax, so not transcoding must be done */
2635 2651 ret = do_sigreturn(cpu_env);
2636 2652 break;
  2653 +#endif
2637 2654 case TARGET_NR_rt_sigreturn:
2638 2655 /* NOTE: ret is eax, so not transcoding must be done */
2639 2656 ret = do_rt_sigreturn(cpu_env);
... ... @@ -2739,17 +2756,24 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2739 2756 unlock_user(p, arg1, 0);
2740 2757 }
2741 2758 break;
  2759 +#ifdef TARGET_NR_uselib
2742 2760 case TARGET_NR_uselib:
2743 2761 goto unimplemented;
  2762 +#endif
  2763 +#ifdef TARGET_NR_swapon
2744 2764 case TARGET_NR_swapon:
2745 2765 p = lock_user_string(arg1);
2746 2766 ret = get_errno(swapon(p, arg2));
2747 2767 unlock_user(p, arg1, 0);
2748 2768 break;
  2769 +#endif
2749 2770 case TARGET_NR_reboot:
2750 2771 goto unimplemented;
  2772 +#ifdef TARGET_NR_readdir
2751 2773 case TARGET_NR_readdir:
2752 2774 goto unimplemented;
  2775 +#endif
  2776 +#ifdef TARGET_NR_mmap
2753 2777 case TARGET_NR_mmap:
2754 2778 #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_M68K)
2755 2779 {
... ... @@ -2774,6 +2798,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2774 2798 arg6));
2775 2799 #endif
2776 2800 break;
  2801 +#endif
2777 2802 #ifdef TARGET_NR_mmap2
2778 2803 case TARGET_NR_mmap2:
2779 2804 #if defined(TARGET_SPARC) || defined(TARGET_MIPS)
... ... @@ -2793,25 +2818,37 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2793 2818 case TARGET_NR_mprotect:
2794 2819 ret = get_errno(target_mprotect(arg1, arg2, arg3));
2795 2820 break;
  2821 +#ifdef TARGET_NR_mremap
2796 2822 case TARGET_NR_mremap:
2797 2823 ret = get_errno(target_mremap(arg1, arg2, arg3, arg4, arg5));
2798 2824 break;
  2825 +#endif
2799 2826 /* ??? msync/mlock/munlock are broken for softmmu. */
  2827 +#ifdef TARGET_NR_msync
2800 2828 case TARGET_NR_msync:
2801 2829 ret = get_errno(msync(g2h(arg1), arg2, arg3));
2802 2830 break;
  2831 +#endif
  2832 +#ifdef TARGET_NR_mlock
2803 2833 case TARGET_NR_mlock:
2804 2834 ret = get_errno(mlock(g2h(arg1), arg2));
2805 2835 break;
  2836 +#endif
  2837 +#ifdef TARGET_NR_munlock
2806 2838 case TARGET_NR_munlock:
2807 2839 ret = get_errno(munlock(g2h(arg1), arg2));
2808 2840 break;
  2841 +#endif
  2842 +#ifdef TARGET_NR_mlockall
2809 2843 case TARGET_NR_mlockall:
2810 2844 ret = get_errno(mlockall(arg1));
2811 2845 break;
  2846 +#endif
  2847 +#ifdef TARGET_NR_munlockall
2812 2848 case TARGET_NR_munlockall:
2813 2849 ret = get_errno(munlockall());
2814 2850 break;
  2851 +#endif
2815 2852 case TARGET_NR_truncate:
2816 2853 p = lock_user_string(arg1);
2817 2854 ret = get_errno(truncate(p, arg2));
... ... @@ -2889,10 +2926,11 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
2889 2926 case TARGET_NR_ioperm:
2890 2927 goto unimplemented;
2891 2928 #endif
  2929 +#ifdef TARGET_NR_socketcall
2892 2930 case TARGET_NR_socketcall:
2893 2931 ret = do_socketcall(arg1, arg2);
2894 2932 break;
2895   -
  2933 +#endif
2896 2934 #ifdef TARGET_NR_accept
2897 2935 case TARGET_NR_accept:
2898 2936 ret = do_accept(arg1, arg2, arg3);
... ... @@ -3101,11 +3139,13 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3101 3139 }
3102 3140 }
3103 3141 break;
  3142 +#ifdef TARGET_NR_swapoff
3104 3143 case TARGET_NR_swapoff:
3105 3144 p = lock_user_string(arg1);
3106 3145 ret = get_errno(swapoff(p));
3107 3146 unlock_user(p, arg1, 0);
3108 3147 break;
  3148 +#endif
3109 3149 case TARGET_NR_sysinfo:
3110 3150 {
3111 3151 struct target_sysinfo *target_value;
... ... @@ -3133,9 +3173,11 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3133 3173 }
3134 3174 }
3135 3175 break;
  3176 +#ifdef TARGET_NR_ipc
3136 3177 case TARGET_NR_ipc:
3137 3178 ret = do_ipc(arg1, arg2, arg3, arg4, arg5, arg6);
3138 3179 break;
  3180 +#endif
3139 3181 case TARGET_NR_fsync:
3140 3182 ret = get_errno(fsync(arg1));
3141 3183 break;
... ... @@ -3184,10 +3226,14 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3184 3226 #endif
3185 3227 case TARGET_NR_adjtimex:
3186 3228 goto unimplemented;
  3229 +#ifdef TARGET_NR_create_module
3187 3230 case TARGET_NR_create_module:
  3231 +#endif
3188 3232 case TARGET_NR_init_module:
3189 3233 case TARGET_NR_delete_module:
  3234 +#ifdef TARGET_NR_get_kernel_syms
3190 3235 case TARGET_NR_get_kernel_syms:
  3236 +#endif
3191 3237 goto unimplemented;
3192 3238 case TARGET_NR_quotactl:
3193 3239 goto unimplemented;
... ... @@ -3199,13 +3245,17 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3199 3245 break;
3200 3246 case TARGET_NR_bdflush:
3201 3247 goto unimplemented;
  3248 +#ifdef TARGET_NR_sysfs
3202 3249 case TARGET_NR_sysfs:
3203 3250 goto unimplemented;
  3251 +#endif
3204 3252 case TARGET_NR_personality:
3205 3253 ret = get_errno(personality(arg1));
3206 3254 break;
  3255 +#ifdef TARGET_NR_afs_syscall
3207 3256 case TARGET_NR_afs_syscall:
3208 3257 goto unimplemented;
  3258 +#endif
3209 3259 case TARGET_NR__llseek:
3210 3260 {
3211 3261 #if defined (__x86_64__)
... ... @@ -3319,9 +3369,12 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3319 3369 }
3320 3370 break;
3321 3371 #endif /* TARGET_NR_getdents64 */
  3372 +#ifdef TARGET_NR__newselect
3322 3373 case TARGET_NR__newselect:
3323 3374 ret = do_select(arg1, arg2, arg3, arg4, arg5);
3324 3375 break;
  3376 +#endif
  3377 +#ifdef TARGET_NR_poll
3325 3378 case TARGET_NR_poll:
3326 3379 {
3327 3380 struct target_pollfd *target_pfd;
... ... @@ -3347,6 +3400,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3347 3400 unlock_user(target_pfd, arg1, ret);
3348 3401 }
3349 3402 break;
  3403 +#endif
3350 3404 case TARGET_NR_flock:
3351 3405 /* NOTE: the flock constant seems to be the same for every
3352 3406 Linux platform */
... ... @@ -3448,10 +3502,14 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3448 3502 }
3449 3503 }
3450 3504 break;
  3505 +#ifdef TARGET_NR_query_module
3451 3506 case TARGET_NR_query_module:
3452 3507 goto unimplemented;
  3508 +#endif
  3509 +#ifdef TARGET_NR_nfsservctl
3453 3510 case TARGET_NR_nfsservctl:
3454 3511 goto unimplemented;
  3512 +#endif
3455 3513 case TARGET_NR_prctl:
3456 3514 switch (arg1)
3457 3515 {
... ... @@ -4004,8 +4062,10 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
4004 4062 case TARGET_NR_gettid:
4005 4063 ret = get_errno(gettid());
4006 4064 break;
  4065 +#ifdef TARGET_NR_readahead
4007 4066 case TARGET_NR_readahead:
4008 4067 goto unimplemented;
  4068 +#endif
4009 4069 #ifdef TARGET_NR_setxattr
4010 4070 case TARGET_NR_setxattr:
4011 4071 case TARGET_NR_lsetxattr:
... ...