qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [patch] dont require many old syscalls


From: Mike Frysinger
Subject: [Qemu-devel] [patch] dont require many old syscalls
Date: Sat, 31 Mar 2007 04:38:10 -0400
User-agent: KMail/1.9.6

the linux/syscall.c file assumes the target arch has a lot of historical 
syscall baggage ... this is not true for newer ports, so ive added more 
#ifdef's where needed in my case
-mike

Attachment: pgpUA9z9m_zJK.pgp
Description: PGP signature

--- linux-user/syscall.c        22 Mar 2007 15:08:55 -0000      1.95
+++ linux-user/syscall.c        31 Mar 2007 08:36:00 -0000
@@ -2043,6 +2047,7 @@ long do_syscall(void *cpu_env, int num, 
     case TARGET_NR_fork:
         ret = get_errno(do_fork(cpu_env, SIGCHLD, 0));
         break;
+#ifdef TARGET_NR_waitpid
     case TARGET_NR_waitpid:
         {
             int status;
@@ -2051,6 +2056,7 @@ long do_syscall(void *cpu_env, int num, 
                 tput32(arg2, status);
         }
         break;
+#endif
     case TARGET_NR_creat:
         p = lock_user_string(arg1);
         ret = get_errno(creat(p, arg2));
@@ -2179,11 +2185,13 @@ long do_syscall(void *cpu_env, int num, 
                        unlock_user(p3, arg3, 0);
                        break;
                }
+#ifdef TARGET_NR_umount
     case TARGET_NR_umount:
         p = lock_user_string(arg1);
         ret = get_errno(umount(p));
         unlock_user(p, arg1, 0);
         break;
+#endif
     case TARGET_NR_stime:
         {
             time_t host_time;
@@ -2203,6 +2211,7 @@ long do_syscall(void *cpu_env, int num, 
     case TARGET_NR_pause:
         ret = get_errno(pause());
         break;
+#ifdef TARGET_NR_utime
     case TARGET_NR_utime:
         {
             struct utimbuf tbuf, *host_tbuf;
@@ -2221,6 +2230,7 @@ long do_syscall(void *cpu_env, int num, 
             unlock_user(p, arg1, 0);
         }
         break;
+#endif
     case TARGET_NR_utimes:
         {
             struct timeval *tvp, tv[2];
@@ -2317,9 +2327,10 @@ long do_syscall(void *cpu_env, int num, 
     case TARGET_NR_prof:
         goto unimplemented;
 #endif
+#ifdef TARGET_NR_signal
     case TARGET_NR_signal:
         goto unimplemented;
-
+#endif
     case TARGET_NR_acct:
         p = lock_user_string(arg1);
         ret = get_errno(acct(path(p)));
@@ -2377,6 +2388,7 @@ long do_syscall(void *cpu_env, int num, 
     case TARGET_NR_setsid:
         ret = get_errno(setsid());
         break;
+#ifdef TARGET_NR_sigaction
     case TARGET_NR_sigaction:
         {
        #if !defined(TARGET_MIPS)
@@ -2431,6 +2443,7 @@ long do_syscall(void *cpu_env, int num, 
        #endif
         }
         break;
+#endif
     case TARGET_NR_rt_sigaction:
         {
             struct target_sigaction *act;
@@ -2472,6 +2485,7 @@ long do_syscall(void *cpu_env, int num, 
             ret = target_set;
         }
         break;
+#ifdef TARGET_NR_sigprocmask
     case TARGET_NR_sigprocmask:
         {
             int how = arg1;
@@ -2508,6 +2522,7 @@ long do_syscall(void *cpu_env, int num, 
             }
         }
         break;
+#endif
     case TARGET_NR_rt_sigprocmask:
         {
             int how = arg1;
@@ -2544,6 +2559,7 @@ long do_syscall(void *cpu_env, int num, 
             }
         }
         break;
+#ifdef TARGET_NR_sigpending
     case TARGET_NR_sigpending:
         {
             sigset_t set;
@@ -2555,6 +2571,7 @@ long do_syscall(void *cpu_env, int num, 
             }
         }
         break;
+#endif
     case TARGET_NR_rt_sigpending:
         {
             sigset_t set;
@@ -2566,6 +2583,7 @@ long do_syscall(void *cpu_env, int num, 
             }
         }
         break;
+#ifdef TARGET_NR_sigsuspend
     case TARGET_NR_sigsuspend:
         {
             sigset_t set;
@@ -2575,6 +2593,7 @@ long do_syscall(void *cpu_env, int num, 
             ret = get_errno(sigsuspend(&set));
         }
         break;
+#endif
     case TARGET_NR_rt_sigsuspend:
         {
             sigset_t set;
@@ -2616,10 +2635,12 @@ long do_syscall(void *cpu_env, int num, 
             ret = get_errno(sys_rt_sigqueueinfo(arg1, arg2, &uinfo));
         }
         break;
+#ifdef TARGET_NR_sigreturn
     case TARGET_NR_sigreturn:
         /* NOTE: ret is eax, so not transcoding must be done */
         ret = do_sigreturn(cpu_env);
         break;
+#endif
     case TARGET_NR_rt_sigreturn:
         /* NOTE: ret is eax, so not transcoding must be done */
         ret = do_rt_sigreturn(cpu_env);
@@ -2725,17 +2746,24 @@ long do_syscall(void *cpu_env, int num, 
             unlock_user(p, arg1, 0);
         }
         break;
+#ifdef TARGET_NR_uselib
     case TARGET_NR_uselib:
         goto unimplemented;
+#endif
+#ifdef TARGET_NR_swapon
     case TARGET_NR_swapon:
         p = lock_user_string(arg1);
         ret = get_errno(swapon(p, arg2));
         unlock_user(p, arg1, 0);
         break;
+#endif
     case TARGET_NR_reboot:
         goto unimplemented;
+#ifdef TARGET_NR_readdir
     case TARGET_NR_readdir:
         goto unimplemented;
+#endif
+#ifdef TARGET_NR_mmap
     case TARGET_NR_mmap:
 #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_M68K)
         {
@@ -2760,6 +2788,7 @@ long do_syscall(void *cpu_env, int num, 
                                     arg6));
 #endif
         break;
+#endif
 #ifdef TARGET_NR_mmap2
     case TARGET_NR_mmap2:
 #if defined(TARGET_SPARC) || defined(TARGET_MIPS)
@@ -2779,25 +2808,37 @@ long do_syscall(void *cpu_env, int num, 
     case TARGET_NR_mprotect:
         ret = get_errno(target_mprotect(arg1, arg2, arg3));
         break;
+#ifdef TARGET_NR_mremap
     case TARGET_NR_mremap:
         ret = get_errno(target_mremap(arg1, arg2, arg3, arg4, arg5));
         break;
+#endif
         /* ??? msync/mlock/munlock are broken for softmmu.  */
+#ifdef TARGET_NR_msync
     case TARGET_NR_msync:
         ret = get_errno(msync(g2h(arg1), arg2, arg3));
         break;
+#endif
+#ifdef TARGET_NR_mlock
     case TARGET_NR_mlock:
         ret = get_errno(mlock(g2h(arg1), arg2));
         break;
+#endif
+#ifdef TARGET_NR_munlock
     case TARGET_NR_munlock:
         ret = get_errno(munlock(g2h(arg1), arg2));
         break;
+#endif
+#ifdef TARGET_NR_mlockall
     case TARGET_NR_mlockall:
         ret = get_errno(mlockall(arg1));
         break;
+#endif
+#ifdef TARGET_NR_munlockall
     case TARGET_NR_munlockall:
         ret = get_errno(munlockall());
         break;
+#endif
     case TARGET_NR_truncate:
         p = lock_user_string(arg1);
         ret = get_errno(truncate(p, arg2));
@@ -2875,10 +2916,11 @@ long do_syscall(void *cpu_env, int num, 
     case TARGET_NR_ioperm:
         goto unimplemented;
 #endif
+#ifdef TARGET_NR_socketcall
     case TARGET_NR_socketcall:
         ret = do_socketcall(arg1, arg2);
         break;
-
+#endif
 #ifdef TARGET_NR_accept
     case TARGET_NR_accept:
         ret = do_accept(arg1, arg2, arg3);
@@ -3087,11 +3129,13 @@ long do_syscall(void *cpu_env, int num, 
             }
         }
         break;
+#ifdef TARGET_NR_swapoff
     case TARGET_NR_swapoff:
         p = lock_user_string(arg1);
         ret = get_errno(swapoff(p));
         unlock_user(p, arg1, 0);
         break;
+#endif
     case TARGET_NR_sysinfo:
         {
             struct target_sysinfo *target_value;
@@ -3119,9 +3163,11 @@ long do_syscall(void *cpu_env, int num, 
             }
         }
         break;
+#ifdef TARGET_NR_ipc
     case TARGET_NR_ipc:
        ret = do_ipc(arg1, arg2, arg3, arg4, arg5, arg6);
        break;
+#endif
     case TARGET_NR_fsync:
         ret = get_errno(fsync(arg1));
         break;
@@ -3170,10 +3216,14 @@ long do_syscall(void *cpu_env, int num, 
 #endif
     case TARGET_NR_adjtimex:
         goto unimplemented;
+#ifdef TARGET_NR_create_module
     case TARGET_NR_create_module:
+#endif
     case TARGET_NR_init_module:
     case TARGET_NR_delete_module:
+#ifdef TARGET_NR_get_kernel_syms
     case TARGET_NR_get_kernel_syms:
+#endif
         goto unimplemented;
     case TARGET_NR_quotactl:
         goto unimplemented;
@@ -3185,13 +3235,17 @@ long do_syscall(void *cpu_env, int num, 
         break;
     case TARGET_NR_bdflush:
         goto unimplemented;
+#ifdef TARGET_NR_sysfs
     case TARGET_NR_sysfs:
         goto unimplemented;
+#endif
     case TARGET_NR_personality:
         ret = get_errno(personality(arg1));
         break;
+#ifdef TARGET_NR_afs_syscall
     case TARGET_NR_afs_syscall:
         goto unimplemented;
+#endif
     case TARGET_NR__llseek:
         {
 #if defined (__x86_64__)
@@ -3305,9 +3359,12 @@ long do_syscall(void *cpu_env, int num, 
         }
         break;
 #endif /* TARGET_NR_getdents64 */
+#ifdef TARGET_NR__newselect
     case TARGET_NR__newselect:
         ret = do_select(arg1, arg2, arg3, arg4, arg5);
         break;
+#endif
+#ifdef TARGET_NR_poll
     case TARGET_NR_poll:
         {
             struct target_pollfd *target_pfd;
@@ -3333,6 +3390,7 @@ long do_syscall(void *cpu_env, int num, 
             unlock_user(target_pfd, arg1, ret);
         }
         break;
+#endif
     case TARGET_NR_flock:
         /* NOTE: the flock constant seems to be the same for every
            Linux platform */
@@ -3434,10 +3492,14 @@ long do_syscall(void *cpu_env, int num, 
             }
         }
         break;
+#ifdef TARGET_NR_query_module
     case TARGET_NR_query_module:
         goto unimplemented;
+#endif
+#ifdef TARGET_NR_nfsservctl
     case TARGET_NR_nfsservctl:
         goto unimplemented;
+#endif
     case TARGET_NR_prctl:
         switch (arg1)
             {
@@ -3970,8 +4032,10 @@ long do_syscall(void *cpu_env, int num, 
     case TARGET_NR_gettid:
         ret = get_errno(gettid());
         break;
+#ifdef TARGET_NR_readahead
     case TARGET_NR_readahead:
         goto unimplemented;
+#endif
 #ifdef TARGET_NR_setxattr
     case TARGET_NR_setxattr:
     case TARGET_NR_lsetxattr:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]