MIPS linux-user update.
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 13 May 2007 13:58:00 +0000 (13:58 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 13 May 2007 13:58:00 +0000 (13:58 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2810 c046a42c-6fe2-441c-8c8c-71466251a162

linux-user/elfload.c
linux-user/main.c
linux-user/mips/syscall_nr.h
linux-user/signal.c
linux-user/syscall.c
target-mips/cpu.h

index 1256dba..c130692 100644 (file)
@@ -287,7 +287,11 @@ static inline void init_thread(struct target_pt_regs *_regs, struct image_info *
 
 #define elf_check_arch(x) ( (x) == EM_MIPS )
 
+#ifdef TARGET_MIPS64
+#define ELF_CLASS   ELFCLASS64
+#else
 #define ELF_CLASS   ELFCLASS32
+#endif
 #ifdef TARGET_WORDS_BIGENDIAN
 #define ELF_DATA       ELFDATA2MSB
 #else
@@ -302,6 +306,9 @@ static inline void init_thread(struct target_pt_regs *regs, struct image_info *i
     regs->regs[29] = infop->start_stack;
 }
 
+#define USE_ELF_CORE_DUMP
+#define ELF_EXEC_PAGESIZE        4096
+
 #endif /* TARGET_MIPS */
 
 #ifdef TARGET_SH4
index d14b499..ccb8c26 100644 (file)
@@ -1312,9 +1312,41 @@ static const uint8_t mips_syscall_args[] = {
        MIPS_SYS(sys_waitid     , 4)
        MIPS_SYS(sys_ni_syscall , 0)    /* available, was setaltroot */
        MIPS_SYS(sys_add_key    , 5)
-       MIPS_SYS(sys_request_key        , 4)
+       MIPS_SYS(sys_request_key, 4)
        MIPS_SYS(sys_keyctl     , 5)
        MIPS_SYS(sys_set_thread_area, 1)
+       MIPS_SYS(sys_inotify_init, 0)
+       MIPS_SYS(sys_inotify_add_watch, 3) /* 4285 */
+       MIPS_SYS(sys_inotify_rm_watch, 2)
+       MIPS_SYS(sys_migrate_pages, 4)
+       MIPS_SYS(sys_openat, 4)
+       MIPS_SYS(sys_mkdirat, 3)
+       MIPS_SYS(sys_mknodat, 4)        /* 4290 */
+       MIPS_SYS(sys_fchownat, 5)
+       MIPS_SYS(sys_futimesat, 3)
+       MIPS_SYS(sys_fstatat64, 4)
+       MIPS_SYS(sys_unlinkat, 3)
+       MIPS_SYS(sys_renameat, 4)       /* 4295 */
+       MIPS_SYS(sys_linkat, 5)
+       MIPS_SYS(sys_symlinkat, 3)
+       MIPS_SYS(sys_readlinkat, 4)
+       MIPS_SYS(sys_fchmodat, 3)
+       MIPS_SYS(sys_faccessat, 3)      /* 4300 */
+       MIPS_SYS(sys_pselect6, 6)
+       MIPS_SYS(sys_ppoll, 5)
+       MIPS_SYS(sys_unshare, 1)
+       MIPS_SYS(sys_splice, 4)
+       MIPS_SYS(sys_sync_file_range, 7) /* 4305 */
+       MIPS_SYS(sys_tee, 4)
+       MIPS_SYS(sys_vmsplice, 4)
+       MIPS_SYS(sys_move_pages, 6)
+       MIPS_SYS(sys_set_robust_list, 2)
+       MIPS_SYS(sys_get_robust_list, 3) /* 4310 */
+       MIPS_SYS(sys_kexec_load, 4)
+       MIPS_SYS(sys_getcpu, 3)
+       MIPS_SYS(sys_epoll_pwait, 6)
+       MIPS_SYS(sys_ioprio_set, 3)
+       MIPS_SYS(sys_ioprio_get, 2)
 };
 
 #undef MIPS_SYS
@@ -1322,53 +1354,45 @@ static const uint8_t mips_syscall_args[] = {
 void cpu_loop(CPUMIPSState *env)
 {
     target_siginfo_t info;
-    int trapnr, ret, nb_args;
+    int trapnr, ret;
     unsigned int syscall_num;
-    target_ulong arg5, arg6, sp_reg;
 
     for(;;) {
         trapnr = cpu_mips_exec(env);
         switch(trapnr) {
         case EXCP_SYSCALL:
-            {
-                syscall_num = env->gpr[2] - 4000;
-                env->PC += 4;
-                if (syscall_num >= sizeof(mips_syscall_args)) {
-                    ret = -ENOSYS;
-                } else {
-                    nb_args = mips_syscall_args[syscall_num];
-                    if (nb_args >= 5) {
-                        sp_reg = env->gpr[29];
-                        /* these arguments are taken from the stack */
-                        arg5 = tgetl(sp_reg + 16);
-                        if (nb_args >= 6) {
-                            arg6 = tgetl(sp_reg + 20);
-                        } else {
-                            arg6 = 0;
-                        }
-                    } else {
-                        arg5 = 0;
-                        arg6 = 0;
-                    }
-                    ret = do_syscall(env, 
-                                     env->gpr[2], 
-                                     env->gpr[4],
-                                     env->gpr[5],
-                                     env->gpr[6],
-                                     env->gpr[7],
-                                     arg5, 
-                                     arg6);
-                }
-                if ((unsigned int)ret >= (unsigned int)(-1133)) {
-                    env->gpr[7] = 1; /* error flag */
-                    ret = -ret;
-                    env->gpr[0] = ret;
-                    env->gpr[2] = ret;
-                } else {
-                    env->gpr[7] = 0; /* error flag */
-                    env->gpr[2] = ret;
+            syscall_num = env->gpr[2] - 4000;
+            env->PC += 4;
+            if (syscall_num >= sizeof(mips_syscall_args)) {
+                ret = -ENOSYS;
+            } else {
+                int nb_args;
+                target_ulong sp_reg;
+                target_ulong arg5 = 0, arg6 = 0, arg7 = 0, arg8 = 0;
+
+                nb_args = mips_syscall_args[syscall_num];
+                sp_reg = env->gpr[29];
+                switch (nb_args) {
+                /* these arguments are taken from the stack */
+                case 8: arg8 = tgetl(sp_reg + 28);
+                case 7: arg7 = tgetl(sp_reg + 24);
+                case 6: arg6 = tgetl(sp_reg + 20);
+                case 5: arg5 = tgetl(sp_reg + 16);
+                default:
+                    break;
                 }
+                ret = do_syscall(env, env->gpr[2],
+                                 env->gpr[4], env->gpr[5],
+                                 env->gpr[6], env->gpr[7],
+                                 arg5, arg6/*, arg7, arg8*/);
+            }
+            if ((unsigned int)ret >= (unsigned int)(-1133)) {
+                env->gpr[7] = 1; /* error flag */
+                ret = -ret;
+            } else {
+                env->gpr[7] = 0; /* error flag */
             }
+            env->gpr[2] = ret;
             break;
         case EXCP_TLBL:
         case EXCP_TLBS:
index e869bcd..f86f86a 100644 (file)
@@ -2,45 +2,45 @@
  * Linux o32 style syscalls are in the range from 4000 to 4999.
  */
 #define TARGET_NR_Linux                        4000
-#define TARGET_NR_syscall                      (TARGET_NR_Linux +   0)
+#define TARGET_NR_syscall              (TARGET_NR_Linux +   0)
 #define TARGET_NR_exit                 (TARGET_NR_Linux +   1)
 #define TARGET_NR_fork                 (TARGET_NR_Linux +   2)
 #define TARGET_NR_read                 (TARGET_NR_Linux +   3)
 #define TARGET_NR_write                        (TARGET_NR_Linux +   4)
 #define TARGET_NR_open                 (TARGET_NR_Linux +   5)
 #define TARGET_NR_close                        (TARGET_NR_Linux +   6)
-#define TARGET_NR_waitpid                      (TARGET_NR_Linux +   7)
+#define TARGET_NR_waitpid              (TARGET_NR_Linux +   7)
 #define TARGET_NR_creat                        (TARGET_NR_Linux +   8)
 #define TARGET_NR_link                 (TARGET_NR_Linux +   9)
-#define TARGET_NR_unlink                       (TARGET_NR_Linux +  10)
-#define TARGET_NR_execve                       (TARGET_NR_Linux +  11)
+#define TARGET_NR_unlink               (TARGET_NR_Linux +  10)
+#define TARGET_NR_execve               (TARGET_NR_Linux +  11)
 #define TARGET_NR_chdir                        (TARGET_NR_Linux +  12)
 #define TARGET_NR_time                 (TARGET_NR_Linux +  13)
 #define TARGET_NR_mknod                        (TARGET_NR_Linux +  14)
 #define TARGET_NR_chmod                        (TARGET_NR_Linux +  15)
-#define TARGET_NR_lchown32                     (TARGET_NR_Linux +  16)
+#define TARGET_NR_lchown32             (TARGET_NR_Linux +  16)
 #define TARGET_NR_break                        (TARGET_NR_Linux +  17)
-#define TARGET_NR_unused18                     (TARGET_NR_Linux +  18)
+#define TARGET_NR_unused18             (TARGET_NR_Linux +  18)
 #define TARGET_NR_lseek                        (TARGET_NR_Linux +  19)
-#define TARGET_NR_getpid                       (TARGET_NR_Linux +  20)
+#define TARGET_NR_getpid               (TARGET_NR_Linux +  20)
 #define TARGET_NR_mount                        (TARGET_NR_Linux +  21)
-#define TARGET_NR_umount                       (TARGET_NR_Linux +  22)
-#define TARGET_NR_setuid32                     (TARGET_NR_Linux +  23)
-#define TARGET_NR_getuid32                     (TARGET_NR_Linux +  24)
+#define TARGET_NR_umount               (TARGET_NR_Linux +  22)
+#define TARGET_NR_setuid32             (TARGET_NR_Linux +  23)
+#define TARGET_NR_getuid32             (TARGET_NR_Linux +  24)
 #define TARGET_NR_stime                        (TARGET_NR_Linux +  25)
-#define TARGET_NR_ptrace                       (TARGET_NR_Linux +  26)
+#define TARGET_NR_ptrace               (TARGET_NR_Linux +  26)
 #define TARGET_NR_alarm                        (TARGET_NR_Linux +  27)
-#define TARGET_NR_unused28                     (TARGET_NR_Linux +  28)
+#define TARGET_NR_unused28             (TARGET_NR_Linux +  28)
 #define TARGET_NR_pause                        (TARGET_NR_Linux +  29)
 #define TARGET_NR_utime                        (TARGET_NR_Linux +  30)
 #define TARGET_NR_stty                 (TARGET_NR_Linux +  31)
 #define TARGET_NR_gtty                 (TARGET_NR_Linux +  32)
-#define TARGET_NR_access                       (TARGET_NR_Linux +  33)
+#define TARGET_NR_access               (TARGET_NR_Linux +  33)
 #define TARGET_NR_nice                 (TARGET_NR_Linux +  34)
 #define TARGET_NR_ftime                        (TARGET_NR_Linux +  35)
 #define TARGET_NR_sync                 (TARGET_NR_Linux +  36)
 #define TARGET_NR_kill                 (TARGET_NR_Linux +  37)
-#define TARGET_NR_rename                       (TARGET_NR_Linux +  38)
+#define TARGET_NR_rename               (TARGET_NR_Linux +  38)
 #define TARGET_NR_mkdir                        (TARGET_NR_Linux +  39)
 #define TARGET_NR_rmdir                        (TARGET_NR_Linux +  40)
 #define TARGET_NR_dup                  (TARGET_NR_Linux +  41)
 #define TARGET_NR_times                        (TARGET_NR_Linux +  43)
 #define TARGET_NR_prof                 (TARGET_NR_Linux +  44)
 #define TARGET_NR_brk                  (TARGET_NR_Linux +  45)
-#define TARGET_NR_setgid32                     (TARGET_NR_Linux +  46)
-#define TARGET_NR_getgid32                     (TARGET_NR_Linux +  47)
-#define TARGET_NR_signal                       (TARGET_NR_Linux +  48)
-#define TARGET_NR_geteuid32                    (TARGET_NR_Linux +  49)
-#define TARGET_NR_getegid32                    (TARGET_NR_Linux +  50)
+#define TARGET_NR_setgid32             (TARGET_NR_Linux +  46)
+#define TARGET_NR_getgid32             (TARGET_NR_Linux +  47)
+#define TARGET_NR_signal               (TARGET_NR_Linux +  48)
+#define TARGET_NR_geteuid32            (TARGET_NR_Linux +  49)
+#define TARGET_NR_getegid32            (TARGET_NR_Linux +  50)
 #define TARGET_NR_acct                 (TARGET_NR_Linux +  51)
-#define TARGET_NR_umount2                      (TARGET_NR_Linux +  52)
+#define TARGET_NR_umount2              (TARGET_NR_Linux +  52)
 #define TARGET_NR_lock                 (TARGET_NR_Linux +  53)
 #define TARGET_NR_ioctl                        (TARGET_NR_Linux +  54)
 #define TARGET_NR_fcntl                        (TARGET_NR_Linux +  55)
 #define TARGET_NR_mpx                  (TARGET_NR_Linux +  56)
-#define TARGET_NR_setpgid                      (TARGET_NR_Linux +  57)
-#define TARGET_NR_ulimit                       (TARGET_NR_Linux +  58)
-#define TARGET_NR_unused59                     (TARGET_NR_Linux +  59)
+#define TARGET_NR_setpgid              (TARGET_NR_Linux +  57)
+#define TARGET_NR_ulimit               (TARGET_NR_Linux +  58)
+#define TARGET_NR_unused59             (TARGET_NR_Linux +  59)
 #define TARGET_NR_umask                        (TARGET_NR_Linux +  60)
-#define TARGET_NR_chroot                       (TARGET_NR_Linux +  61)
+#define TARGET_NR_chroot               (TARGET_NR_Linux +  61)
 #define TARGET_NR_ustat                        (TARGET_NR_Linux +  62)
 #define TARGET_NR_dup2                 (TARGET_NR_Linux +  63)
-#define TARGET_NR_getppid                      (TARGET_NR_Linux +  64)
-#define TARGET_NR_getpgrp                      (TARGET_NR_Linux +  65)
-#define TARGET_NR_setsid                       (TARGET_NR_Linux +  66)
-#define TARGET_NR_sigaction                    (TARGET_NR_Linux +  67)
-#define TARGET_NR_sgetmask                     (TARGET_NR_Linux +  68)
-#define TARGET_NR_ssetmask                     (TARGET_NR_Linux +  69)
-#define TARGET_NR_setreuid32                   (TARGET_NR_Linux +  70)
-#define TARGET_NR_setregid32                   (TARGET_NR_Linux +  71)
-#define TARGET_NR_sigsuspend                   (TARGET_NR_Linux +  72)
-#define TARGET_NR_sigpending                   (TARGET_NR_Linux +  73)
+#define TARGET_NR_getppid              (TARGET_NR_Linux +  64)
+#define TARGET_NR_getpgrp              (TARGET_NR_Linux +  65)
+#define TARGET_NR_setsid               (TARGET_NR_Linux +  66)
+#define TARGET_NR_sigaction            (TARGET_NR_Linux +  67)
+#define TARGET_NR_sgetmask             (TARGET_NR_Linux +  68)
+#define TARGET_NR_ssetmask             (TARGET_NR_Linux +  69)
+#define TARGET_NR_setreuid32           (TARGET_NR_Linux +  70)
+#define TARGET_NR_setregid32           (TARGET_NR_Linux +  71)
+#define TARGET_NR_sigsuspend           (TARGET_NR_Linux +  72)
+#define TARGET_NR_sigpending           (TARGET_NR_Linux +  73)
 #define TARGET_NR_sethostname          (TARGET_NR_Linux +  74)
-#define TARGET_NR_setrlimit                    (TARGET_NR_Linux +  75)
-#define TARGET_NR_getrlimit                    (TARGET_NR_Linux +  76)
-#define TARGET_NR_getrusage                    (TARGET_NR_Linux +  77)
+#define TARGET_NR_setrlimit            (TARGET_NR_Linux +  75)
+#define TARGET_NR_getrlimit            (TARGET_NR_Linux +  76)
+#define TARGET_NR_getrusage            (TARGET_NR_Linux +  77)
 #define TARGET_NR_gettimeofday         (TARGET_NR_Linux +  78)
 #define TARGET_NR_settimeofday         (TARGET_NR_Linux +  79)
-#define TARGET_NR_getgroups32                  (TARGET_NR_Linux +  80)
-#define TARGET_NR_setgroups32                  (TARGET_NR_Linux +  81)
-#define TARGET_NR_reserved82                   (TARGET_NR_Linux +  82)
-#define TARGET_NR_symlink                      (TARGET_NR_Linux +  83)
-#define TARGET_NR_unused84                     (TARGET_NR_Linux +  84)
-#define TARGET_NR_readlink                     (TARGET_NR_Linux +  85)
-#define TARGET_NR_uselib                       (TARGET_NR_Linux +  86)
-#define TARGET_NR_swapon                       (TARGET_NR_Linux +  87)
-#define TARGET_NR_reboot                       (TARGET_NR_Linux +  88)
-#define TARGET_NR_readdir                      (TARGET_NR_Linux +  89)
+#define TARGET_NR_getgroups32          (TARGET_NR_Linux +  80)
+#define TARGET_NR_setgroups32          (TARGET_NR_Linux +  81)
+#define TARGET_NR_reserved82           (TARGET_NR_Linux +  82)
+#define TARGET_NR_symlink              (TARGET_NR_Linux +  83)
+#define TARGET_NR_unused84             (TARGET_NR_Linux +  84)
+#define TARGET_NR_readlink             (TARGET_NR_Linux +  85)
+#define TARGET_NR_uselib               (TARGET_NR_Linux +  86)
+#define TARGET_NR_swapon               (TARGET_NR_Linux +  87)
+#define TARGET_NR_reboot               (TARGET_NR_Linux +  88)
+#define TARGET_NR_readdir              (TARGET_NR_Linux +  89)
 #define TARGET_NR_mmap                 (TARGET_NR_Linux +  90)
-#define TARGET_NR_munmap                       (TARGET_NR_Linux +  91)
-#define TARGET_NR_truncate                     (TARGET_NR_Linux +  92)
-#define TARGET_NR_ftruncate                    (TARGET_NR_Linux +  93)
-#define TARGET_NR_fchmod                       (TARGET_NR_Linux +  94)
-#define TARGET_NR_fchown32                     (TARGET_NR_Linux +  95)
+#define TARGET_NR_munmap               (TARGET_NR_Linux +  91)
+#define TARGET_NR_truncate             (TARGET_NR_Linux +  92)
+#define TARGET_NR_ftruncate            (TARGET_NR_Linux +  93)
+#define TARGET_NR_fchmod               (TARGET_NR_Linux +  94)
+#define TARGET_NR_fchown32             (TARGET_NR_Linux +  95)
 #define TARGET_NR_getpriority          (TARGET_NR_Linux +  96)
 #define TARGET_NR_setpriority          (TARGET_NR_Linux +  97)
-#define TARGET_NR_profil                       (TARGET_NR_Linux +  98)
-#define TARGET_NR_statfs                       (TARGET_NR_Linux +  99)
-#define TARGET_NR_fstatfs                      (TARGET_NR_Linux + 100)
-#define TARGET_NR_ioperm                       (TARGET_NR_Linux + 101)
-#define TARGET_NR_socketcall                   (TARGET_NR_Linux + 102)
-#define TARGET_NR_syslog                       (TARGET_NR_Linux + 103)
-#define TARGET_NR_setitimer                    (TARGET_NR_Linux + 104)
-#define TARGET_NR_getitimer                    (TARGET_NR_Linux + 105)
+#define TARGET_NR_profil               (TARGET_NR_Linux +  98)
+#define TARGET_NR_statfs               (TARGET_NR_Linux +  99)
+#define TARGET_NR_fstatfs              (TARGET_NR_Linux + 100)
+#define TARGET_NR_ioperm               (TARGET_NR_Linux + 101)
+#define TARGET_NR_socketcall           (TARGET_NR_Linux + 102)
+#define TARGET_NR_syslog               (TARGET_NR_Linux + 103)
+#define TARGET_NR_setitimer            (TARGET_NR_Linux + 104)
+#define TARGET_NR_getitimer            (TARGET_NR_Linux + 105)
 #define TARGET_NR_stat                 (TARGET_NR_Linux + 106)
 #define TARGET_NR_lstat                        (TARGET_NR_Linux + 107)
 #define TARGET_NR_fstat                        (TARGET_NR_Linux + 108)
-#define TARGET_NR_unused109                    (TARGET_NR_Linux + 109)
+#define TARGET_NR_unused109            (TARGET_NR_Linux + 109)
 #define TARGET_NR_iopl                 (TARGET_NR_Linux + 110)
-#define TARGET_NR_vhangup                      (TARGET_NR_Linux + 111)
+#define TARGET_NR_vhangup              (TARGET_NR_Linux + 111)
 #define TARGET_NR_idle                 (TARGET_NR_Linux + 112)
 #define TARGET_NR_vm86                 (TARGET_NR_Linux + 113)
 #define TARGET_NR_wait4                        (TARGET_NR_Linux + 114)
-#define TARGET_NR_swapoff                      (TARGET_NR_Linux + 115)
-#define TARGET_NR_sysinfo                      (TARGET_NR_Linux + 116)
+#define TARGET_NR_swapoff              (TARGET_NR_Linux + 115)
+#define TARGET_NR_sysinfo              (TARGET_NR_Linux + 116)
 #define TARGET_NR_ipc                  (TARGET_NR_Linux + 117)
 #define TARGET_NR_fsync                        (TARGET_NR_Linux + 118)
-#define TARGET_NR_sigreturn                    (TARGET_NR_Linux + 119)
+#define TARGET_NR_sigreturn            (TARGET_NR_Linux + 119)
 #define TARGET_NR_clone                        (TARGET_NR_Linux + 120)
 #define TARGET_NR_setdomainname                (TARGET_NR_Linux + 121)
 #define TARGET_NR_uname                        (TARGET_NR_Linux + 122)
-#define TARGET_NR_modify_ldt                   (TARGET_NR_Linux + 123)
-#define TARGET_NR_adjtimex                     (TARGET_NR_Linux + 124)
-#define TARGET_NR_mprotect                     (TARGET_NR_Linux + 125)
+#define TARGET_NR_modify_ldt           (TARGET_NR_Linux + 123)
+#define TARGET_NR_adjtimex             (TARGET_NR_Linux + 124)
+#define TARGET_NR_mprotect             (TARGET_NR_Linux + 125)
 #define TARGET_NR_sigprocmask          (TARGET_NR_Linux + 126)
 #define TARGET_NR_create_module                (TARGET_NR_Linux + 127)
 #define TARGET_NR_init_module          (TARGET_NR_Linux + 128)
 #define TARGET_NR_delete_module                (TARGET_NR_Linux + 129)
-#define TARGET_NR_get_kernel_syms              (TARGET_NR_Linux + 130)
-#define TARGET_NR_quotactl                     (TARGET_NR_Linux + 131)
-#define TARGET_NR_getpgid                      (TARGET_NR_Linux + 132)
-#define TARGET_NR_fchdir                       (TARGET_NR_Linux + 133)
-#define TARGET_NR_bdflush                      (TARGET_NR_Linux + 134)
+#define TARGET_NR_get_kernel_syms      (TARGET_NR_Linux + 130)
+#define TARGET_NR_quotactl             (TARGET_NR_Linux + 131)
+#define TARGET_NR_getpgid              (TARGET_NR_Linux + 132)
+#define TARGET_NR_fchdir               (TARGET_NR_Linux + 133)
+#define TARGET_NR_bdflush              (TARGET_NR_Linux + 134)
 #define TARGET_NR_sysfs                        (TARGET_NR_Linux + 135)
 #define TARGET_NR_personality          (TARGET_NR_Linux + 136)
 #define TARGET_NR_afs_syscall          (TARGET_NR_Linux + 137) /* Syscall for Andrew File System */
-#define TARGET_NR_setfsuid32                   (TARGET_NR_Linux + 138)
-#define TARGET_NR_setfsgid32                   (TARGET_NR_Linux + 139)
-#define TARGET_NR__llseek                      (TARGET_NR_Linux + 140)
-#define TARGET_NR_getdents                     (TARGET_NR_Linux + 141)
-#define TARGET_NR__newselect                   (TARGET_NR_Linux + 142)
+#define TARGET_NR_setfsuid32           (TARGET_NR_Linux + 138)
+#define TARGET_NR_setfsgid32           (TARGET_NR_Linux + 139)
+#define TARGET_NR__llseek              (TARGET_NR_Linux + 140)
+#define TARGET_NR_getdents             (TARGET_NR_Linux + 141)
+#define TARGET_NR__newselect           (TARGET_NR_Linux + 142)
 #define TARGET_NR_flock                        (TARGET_NR_Linux + 143)
 #define TARGET_NR_msync                        (TARGET_NR_Linux + 144)
 #define TARGET_NR_readv                        (TARGET_NR_Linux + 145)
-#define TARGET_NR_writev                       (TARGET_NR_Linux + 146)
-#define TARGET_NR_cacheflush                   (TARGET_NR_Linux + 147)
-#define TARGET_NR_cachectl                     (TARGET_NR_Linux + 148)
-#define TARGET_NR_sysmips                      (TARGET_NR_Linux + 149)
-#define TARGET_NR_unused150                    (TARGET_NR_Linux + 150)
-#define TARGET_NR_getsid                       (TARGET_NR_Linux + 151)
-#define TARGET_NR_fdatasync                    (TARGET_NR_Linux + 152)
-#define TARGET_NR__sysctl                      (TARGET_NR_Linux + 153)
+#define TARGET_NR_writev               (TARGET_NR_Linux + 146)
+#define TARGET_NR_cacheflush           (TARGET_NR_Linux + 147)
+#define TARGET_NR_cachectl             (TARGET_NR_Linux + 148)
+#define TARGET_NR_sysmips              (TARGET_NR_Linux + 149)
+#define TARGET_NR_unused150            (TARGET_NR_Linux + 150)
+#define TARGET_NR_getsid               (TARGET_NR_Linux + 151)
+#define TARGET_NR_fdatasync            (TARGET_NR_Linux + 152)
+#define TARGET_NR__sysctl              (TARGET_NR_Linux + 153)
 #define TARGET_NR_mlock                        (TARGET_NR_Linux + 154)
-#define TARGET_NR_munlock                      (TARGET_NR_Linux + 155)
-#define TARGET_NR_mlockall                     (TARGET_NR_Linux + 156)
-#define TARGET_NR_munlockall                   (TARGET_NR_Linux + 157)
-#define TARGET_NR_sched_setparam               (TARGET_NR_Linux + 158)
-#define TARGET_NR_sched_getparam               (TARGET_NR_Linux + 159)
-#define TARGET_NR_sched_setscheduler           (TARGET_NR_Linux + 160)
-#define TARGET_NR_sched_getscheduler           (TARGET_NR_Linux + 161)
+#define TARGET_NR_munlock              (TARGET_NR_Linux + 155)
+#define TARGET_NR_mlockall             (TARGET_NR_Linux + 156)
+#define TARGET_NR_munlockall           (TARGET_NR_Linux + 157)
+#define TARGET_NR_sched_setparam       (TARGET_NR_Linux + 158)
+#define TARGET_NR_sched_getparam       (TARGET_NR_Linux + 159)
+#define TARGET_NR_sched_setscheduler   (TARGET_NR_Linux + 160)
+#define TARGET_NR_sched_getscheduler   (TARGET_NR_Linux + 161)
 #define TARGET_NR_sched_yield          (TARGET_NR_Linux + 162)
 #define TARGET_NR_sched_get_priority_max       (TARGET_NR_Linux + 163)
 #define TARGET_NR_sched_get_priority_min       (TARGET_NR_Linux + 164)
 #define TARGET_NR_sched_rr_get_interval        (TARGET_NR_Linux + 165)
-#define TARGET_NR_nanosleep                    (TARGET_NR_Linux + 166)
-#define TARGET_NR_mremap                       (TARGET_NR_Linux + 167)
-#define TARGET_NR_accept                       (TARGET_NR_Linux + 168)
+#define TARGET_NR_nanosleep            (TARGET_NR_Linux + 166)
+#define TARGET_NR_mremap               (TARGET_NR_Linux + 167)
+#define TARGET_NR_accept               (TARGET_NR_Linux + 168)
 #define TARGET_NR_bind                 (TARGET_NR_Linux + 169)
-#define TARGET_NR_connect                      (TARGET_NR_Linux + 170)
+#define TARGET_NR_connect              (TARGET_NR_Linux + 170)
 #define TARGET_NR_getpeername          (TARGET_NR_Linux + 171)
 #define TARGET_NR_getsockname          (TARGET_NR_Linux + 172)
-#define TARGET_NR_getsockopt                   (TARGET_NR_Linux + 173)
-#define TARGET_NR_listen                       (TARGET_NR_Linux + 174)
+#define TARGET_NR_getsockopt           (TARGET_NR_Linux + 173)
+#define TARGET_NR_listen               (TARGET_NR_Linux + 174)
 #define TARGET_NR_recv                 (TARGET_NR_Linux + 175)
-#define TARGET_NR_recvfrom                     (TARGET_NR_Linux + 176)
-#define TARGET_NR_recvmsg                      (TARGET_NR_Linux + 177)
+#define TARGET_NR_recvfrom             (TARGET_NR_Linux + 176)
+#define TARGET_NR_recvmsg              (TARGET_NR_Linux + 177)
 #define TARGET_NR_send                 (TARGET_NR_Linux + 178)
-#define TARGET_NR_sendmsg                      (TARGET_NR_Linux + 179)
-#define TARGET_NR_sendto                       (TARGET_NR_Linux + 180)
-#define TARGET_NR_setsockopt                   (TARGET_NR_Linux + 181)
-#define TARGET_NR_shutdown                     (TARGET_NR_Linux + 182)
-#define TARGET_NR_socket                       (TARGET_NR_Linux + 183)
-#define TARGET_NR_socketpair                   (TARGET_NR_Linux + 184)
-#define TARGET_NR_setresuid32                  (TARGET_NR_Linux + 185)
-#define TARGET_NR_getresuid32                  (TARGET_NR_Linux + 186)
+#define TARGET_NR_sendmsg              (TARGET_NR_Linux + 179)
+#define TARGET_NR_sendto               (TARGET_NR_Linux + 180)
+#define TARGET_NR_setsockopt           (TARGET_NR_Linux + 181)
+#define TARGET_NR_shutdown             (TARGET_NR_Linux + 182)
+#define TARGET_NR_socket               (TARGET_NR_Linux + 183)
+#define TARGET_NR_socketpair           (TARGET_NR_Linux + 184)
+#define TARGET_NR_setresuid32          (TARGET_NR_Linux + 185)
+#define TARGET_NR_getresuid32          (TARGET_NR_Linux + 186)
 #define TARGET_NR_query_module         (TARGET_NR_Linux + 187)
 #define TARGET_NR_poll                 (TARGET_NR_Linux + 188)
-#define TARGET_NR_nfsservctl                   (TARGET_NR_Linux + 189)
-#define TARGET_NR_setresgid32                  (TARGET_NR_Linux + 190)
-#define TARGET_NR_getresgid32                  (TARGET_NR_Linux + 191)
+#define TARGET_NR_nfsservctl           (TARGET_NR_Linux + 189)
+#define TARGET_NR_setresgid32          (TARGET_NR_Linux + 190)
+#define TARGET_NR_getresgid32          (TARGET_NR_Linux + 191)
 #define TARGET_NR_prctl                        (TARGET_NR_Linux + 192)
 #define TARGET_NR_rt_sigreturn         (TARGET_NR_Linux + 193)
 #define TARGET_NR_rt_sigaction         (TARGET_NR_Linux + 194)
-#define TARGET_NR_rt_sigprocmask               (TARGET_NR_Linux + 195)
+#define TARGET_NR_rt_sigprocmask       (TARGET_NR_Linux + 195)
 #define TARGET_NR_rt_sigpending                (TARGET_NR_Linux + 196)
-#define TARGET_NR_rt_sigtimedwait              (TARGET_NR_Linux + 197)
-#define TARGET_NR_rt_sigqueueinfo              (TARGET_NR_Linux + 198)
+#define TARGET_NR_rt_sigtimedwait      (TARGET_NR_Linux + 197)
+#define TARGET_NR_rt_sigqueueinfo      (TARGET_NR_Linux + 198)
 #define TARGET_NR_rt_sigsuspend                (TARGET_NR_Linux + 199)
-#define TARGET_NR_pread64                      (TARGET_NR_Linux + 200)
-#define TARGET_NR_pwrite64                     (TARGET_NR_Linux + 201)
-#define TARGET_NR_chown32                      (TARGET_NR_Linux + 202)
-#define TARGET_NR_getcwd                       (TARGET_NR_Linux + 203)
-#define TARGET_NR_capget                       (TARGET_NR_Linux + 204)
-#define TARGET_NR_capset                       (TARGET_NR_Linux + 205)
+#define TARGET_NR_pread64              (TARGET_NR_Linux + 200)
+#define TARGET_NR_pwrite64             (TARGET_NR_Linux + 201)
+#define TARGET_NR_chown32              (TARGET_NR_Linux + 202)
+#define TARGET_NR_getcwd               (TARGET_NR_Linux + 203)
+#define TARGET_NR_capget               (TARGET_NR_Linux + 204)
+#define TARGET_NR_capset               (TARGET_NR_Linux + 205)
 #define TARGET_NR_sigaltstack          (TARGET_NR_Linux + 206)
-#define TARGET_NR_sendfile                     (TARGET_NR_Linux + 207)
-#define TARGET_NR_getpmsg                      (TARGET_NR_Linux + 208)
-#define TARGET_NR_putpmsg                      (TARGET_NR_Linux + 209)
+#define TARGET_NR_sendfile             (TARGET_NR_Linux + 207)
+#define TARGET_NR_getpmsg              (TARGET_NR_Linux + 208)
+#define TARGET_NR_putpmsg              (TARGET_NR_Linux + 209)
 #define TARGET_NR_mmap2                        (TARGET_NR_Linux + 210)
-#define TARGET_NR_truncate64                   (TARGET_NR_Linux + 211)
+#define TARGET_NR_truncate64           (TARGET_NR_Linux + 211)
 #define TARGET_NR_ftruncate64          (TARGET_NR_Linux + 212)
-#define TARGET_NR_stat64                       (TARGET_NR_Linux + 213)
-#define TARGET_NR_lstat64                      (TARGET_NR_Linux + 214)
-#define TARGET_NR_fstat64                      (TARGET_NR_Linux + 215)
-#define TARGET_NR_pivot_root                   (TARGET_NR_Linux + 216)
-#define TARGET_NR_mincore                      (TARGET_NR_Linux + 217)
-#define TARGET_NR_madvise                      (TARGET_NR_Linux + 218)
-#define TARGET_NR_getdents64                   (TARGET_NR_Linux + 219)
-#define TARGET_NR_fcntl64                      (TARGET_NR_Linux + 220)
+#define TARGET_NR_stat64               (TARGET_NR_Linux + 213)
+#define TARGET_NR_lstat64              (TARGET_NR_Linux + 214)
+#define TARGET_NR_fstat64              (TARGET_NR_Linux + 215)
+#define TARGET_NR_pivot_root           (TARGET_NR_Linux + 216)
+#define TARGET_NR_mincore              (TARGET_NR_Linux + 217)
+#define TARGET_NR_madvise              (TARGET_NR_Linux + 218)
+#define TARGET_NR_getdents64           (TARGET_NR_Linux + 219)
+#define TARGET_NR_fcntl64              (TARGET_NR_Linux + 220)
 #define TARGET_NR_reserved221          (TARGET_NR_Linux + 221)
-#define TARGET_NR_gettid                       (TARGET_NR_Linux + 222)
-#define TARGET_NR_readahead                    (TARGET_NR_Linux + 223)
-#define TARGET_NR_setxattr                     (TARGET_NR_Linux + 224)
-#define TARGET_NR_lsetxattr                    (TARGET_NR_Linux + 225)
-#define TARGET_NR_fsetxattr                    (TARGET_NR_Linux + 226)
-#define TARGET_NR_getxattr                     (TARGET_NR_Linux + 227)
-#define TARGET_NR_lgetxattr                    (TARGET_NR_Linux + 228)
-#define TARGET_NR_fgetxattr                    (TARGET_NR_Linux + 229)
-#define TARGET_NR_listxattr                    (TARGET_NR_Linux + 230)
-#define TARGET_NR_llistxattr                   (TARGET_NR_Linux + 231)
-#define TARGET_NR_flistxattr                   (TARGET_NR_Linux + 232)
+#define TARGET_NR_gettid               (TARGET_NR_Linux + 222)
+#define TARGET_NR_readahead            (TARGET_NR_Linux + 223)
+#define TARGET_NR_setxattr             (TARGET_NR_Linux + 224)
+#define TARGET_NR_lsetxattr            (TARGET_NR_Linux + 225)
+#define TARGET_NR_fsetxattr            (TARGET_NR_Linux + 226)
+#define TARGET_NR_getxattr             (TARGET_NR_Linux + 227)
+#define TARGET_NR_lgetxattr            (TARGET_NR_Linux + 228)
+#define TARGET_NR_fgetxattr            (TARGET_NR_Linux + 229)
+#define TARGET_NR_listxattr            (TARGET_NR_Linux + 230)
+#define TARGET_NR_llistxattr           (TARGET_NR_Linux + 231)
+#define TARGET_NR_flistxattr           (TARGET_NR_Linux + 232)
 #define TARGET_NR_removexattr          (TARGET_NR_Linux + 233)
 #define TARGET_NR_lremovexattr         (TARGET_NR_Linux + 234)
 #define TARGET_NR_fremovexattr         (TARGET_NR_Linux + 235)
 #define TARGET_NR_tkill                        (TARGET_NR_Linux + 236)
-#define TARGET_NR_sendfile64                   (TARGET_NR_Linux + 237)
+#define TARGET_NR_sendfile64           (TARGET_NR_Linux + 237)
 #define TARGET_NR_futex                        (TARGET_NR_Linux + 238)
-#define TARGET_NR_sched_setaffinity            (TARGET_NR_Linux + 239)
-#define TARGET_NR_sched_getaffinity            (TARGET_NR_Linux + 240)
-#define TARGET_NR_io_setup                     (TARGET_NR_Linux + 241)
-#define TARGET_NR_io_destroy                   (TARGET_NR_Linux + 242)
+#define TARGET_NR_sched_setaffinity    (TARGET_NR_Linux + 239)
+#define TARGET_NR_sched_getaffinity    (TARGET_NR_Linux + 240)
+#define TARGET_NR_io_setup             (TARGET_NR_Linux + 241)
+#define TARGET_NR_io_destroy           (TARGET_NR_Linux + 242)
 #define TARGET_NR_io_getevents         (TARGET_NR_Linux + 243)
-#define TARGET_NR_io_submit                    (TARGET_NR_Linux + 244)
-#define TARGET_NR_io_cancel                    (TARGET_NR_Linux + 245)
-#define TARGET_NR_exit_group                   (TARGET_NR_Linux + 246)
-#define TARGET_NR_lookup_dcookie               (TARGET_NR_Linux + 247)
+#define TARGET_NR_io_submit            (TARGET_NR_Linux + 244)
+#define TARGET_NR_io_cancel            (TARGET_NR_Linux + 245)
+#define TARGET_NR_exit_group           (TARGET_NR_Linux + 246)
+#define TARGET_NR_lookup_dcookie       (TARGET_NR_Linux + 247)
 #define TARGET_NR_epoll_create         (TARGET_NR_Linux + 248)
-#define TARGET_NR_epoll_ctl                    (TARGET_NR_Linux + 249)
-#define TARGET_NR_epoll_wait                   (TARGET_NR_Linux + 250)
-#define TARGET_NR_remap_file_pages             (TARGET_NR_Linux + 251)
-#define TARGET_NR_set_tid_address              (TARGET_NR_Linux + 252)
-#define TARGET_NR_restart_syscall              (TARGET_NR_Linux + 253)
-#define TARGET_NR_fadvise64                    (TARGET_NR_Linux + 254)
-#define TARGET_NR_statfs64                     (TARGET_NR_Linux + 255)
-#define TARGET_NR_fstatfs64                    (TARGET_NR_Linux + 256)
+#define TARGET_NR_epoll_ctl            (TARGET_NR_Linux + 249)
+#define TARGET_NR_epoll_wait           (TARGET_NR_Linux + 250)
+#define TARGET_NR_remap_file_pages     (TARGET_NR_Linux + 251)
+#define TARGET_NR_set_tid_address      (TARGET_NR_Linux + 252)
+#define TARGET_NR_restart_syscall      (TARGET_NR_Linux + 253)
+#define TARGET_NR_fadvise64            (TARGET_NR_Linux + 254)
+#define TARGET_NR_statfs64             (TARGET_NR_Linux + 255)
+#define TARGET_NR_fstatfs64            (TARGET_NR_Linux + 256)
 #define TARGET_NR_timer_create         (TARGET_NR_Linux + 257)
 #define TARGET_NR_timer_settime                (TARGET_NR_Linux + 258)
 #define TARGET_NR_timer_gettime                (TARGET_NR_Linux + 259)
-#define TARGET_NR_timer_getoverrun             (TARGET_NR_Linux + 260)
+#define TARGET_NR_timer_getoverrun     (TARGET_NR_Linux + 260)
 #define TARGET_NR_timer_delete         (TARGET_NR_Linux + 261)
 #define TARGET_NR_clock_settime                (TARGET_NR_Linux + 262)
 #define TARGET_NR_clock_gettime                (TARGET_NR_Linux + 263)
 #define TARGET_NR_clock_getres         (TARGET_NR_Linux + 264)
-#define TARGET_NR_clock_nanosleep              (TARGET_NR_Linux + 265)
-#define TARGET_NR_tgkill                       (TARGET_NR_Linux + 266)
-#define TARGET_NR_utimes                       (TARGET_NR_Linux + 267)
+#define TARGET_NR_clock_nanosleep      (TARGET_NR_Linux + 265)
+#define TARGET_NR_tgkill               (TARGET_NR_Linux + 266)
+#define TARGET_NR_utimes               (TARGET_NR_Linux + 267)
 #define TARGET_NR_mbind                        (TARGET_NR_Linux + 268)
 #define TARGET_NR_get_mempolicy                (TARGET_NR_Linux + 269)
 #define TARGET_NR_set_mempolicy                (TARGET_NR_Linux + 270)
-#define TARGET_NR_mq_open                      (TARGET_NR_Linux + 271)
-#define TARGET_NR_mq_unlink                    (TARGET_NR_Linux + 272)
+#define TARGET_NR_mq_open              (TARGET_NR_Linux + 271)
+#define TARGET_NR_mq_unlink            (TARGET_NR_Linux + 272)
 #define TARGET_NR_mq_timedsend         (TARGET_NR_Linux + 273)
-#define TARGET_NR_mq_timedreceive              (TARGET_NR_Linux + 274)
-#define TARGET_NR_mq_notify                    (TARGET_NR_Linux + 275)
+#define TARGET_NR_mq_timedreceive      (TARGET_NR_Linux + 274)
+#define TARGET_NR_mq_notify            (TARGET_NR_Linux + 275)
 #define TARGET_NR_mq_getsetattr                (TARGET_NR_Linux + 276)
-#define TARGET_NR_vserver                      (TARGET_NR_Linux + 277)
-#define TARGET_NR_waitid                       (TARGET_NR_Linux + 278)
-/* #define TARGET_NR_sys_setaltroot            (TARGET_NR_Linux + 279) */
-#define TARGET_NR_add_key                      (TARGET_NR_Linux + 280)
+#define TARGET_NR_vserver              (TARGET_NR_Linux + 277)
+#define TARGET_NR_waitid               (TARGET_NR_Linux + 278)
+/* #define TARGET_NR_sys_setaltroot    (TARGET_NR_Linux + 279) */
+#define TARGET_NR_add_key              (TARGET_NR_Linux + 280)
 #define TARGET_NR_request_key          (TARGET_NR_Linux + 281)
-#define TARGET_NR_keyctl                       (TARGET_NR_Linux + 282)
+#define TARGET_NR_keyctl               (TARGET_NR_Linux + 282)
 #define TARGET_NR_set_thread_area      (TARGET_NR_Linux + 283)
+#define TARGET_NR_inotify_init         (TARGET_NR_Linux + 284)
+#define TARGET_NR_inotify_add_watch    (TARGET_NR_Linux + 285)
+#define TARGET_NR_inotify_rm_watch     (TARGET_NR_Linux + 286)
+#define TARGET_NR_migrate_pages                (TARGET_NR_Linux + 287)
+#define TARGET_NR_openat               (TARGET_NR_Linux + 288)
+#define TARGET_NR_mkdirat              (TARGET_NR_Linux + 289)
+#define TARGET_NR_mknodat              (TARGET_NR_Linux + 290)
+#define TARGET_NR_fchownat             (TARGET_NR_Linux + 291)
+#define TARGET_NR_futimesat            (TARGET_NR_Linux + 292)
+#define TARGET_NR_fstatat64            (TARGET_NR_Linux + 293)
+#define TARGET_NR_unlinkat             (TARGET_NR_Linux + 294)
+#define TARGET_NR_renameat             (TARGET_NR_Linux + 295)
+#define TARGET_NR_linkat               (TARGET_NR_Linux + 296)
+#define TARGET_NR_symlinkat            (TARGET_NR_Linux + 297)
+#define TARGET_NR_readlinkat           (TARGET_NR_Linux + 298)
+#define TARGET_NR_fchmodat             (TARGET_NR_Linux + 299)
+#define TARGET_NR_faccessat            (TARGET_NR_Linux + 300)
+#define TARGET_NR_pselect6             (TARGET_NR_Linux + 301)
+#define TARGET_NR_ppoll                        (TARGET_NR_Linux + 302)
+#define TARGET_NR_unshare              (TARGET_NR_Linux + 303)
+#define TARGET_NR_splice               (TARGET_NR_Linux + 304)
+#define TARGET_NR_sync_file_range      (TARGET_NR_Linux + 305)
+#define TARGET_NR_tee                  (TARGET_NR_Linux + 306)
+#define TARGET_NR_vmsplice             (TARGET_NR_Linux + 307)
+#define TARGET_NR_move_pages           (TARGET_NR_Linux + 308)
+#define TARGET_NR_set_robust_list      (TARGET_NR_Linux + 309)
+#define TARGET_NR_get_robust_list      (TARGET_NR_Linux + 310)
+#define TARGET_NR_kexec_load           (TARGET_NR_Linux + 311)
+#define TARGET_NR_getcpu               (TARGET_NR_Linux + 312)
+#define TARGET_NR_epoll_pwait          (TARGET_NR_Linux + 313)
+#define TARGET_NR_ioprio_set           (TARGET_NR_Linux + 314)
+#define TARGET_NR_ioprio_get           (TARGET_NR_Linux + 315)
index 5a99e61..5b1334a 100644 (file)
@@ -432,17 +432,17 @@ int do_sigaction(int sig, const struct target_sigaction *act,
     if (oact) {
         oact->_sa_handler = tswapl(k->sa._sa_handler);
         oact->sa_flags = tswapl(k->sa.sa_flags);
-       #if !defined(TARGET_MIPS)
-               oact->sa_restorer = tswapl(k->sa.sa_restorer);
-       #endif
+#if !defined(TARGET_MIPS)
+        oact->sa_restorer = tswapl(k->sa.sa_restorer);
+#endif
         oact->sa_mask = k->sa.sa_mask;
     }
     if (act) {
         k->sa._sa_handler = tswapl(act->_sa_handler);
         k->sa.sa_flags = tswapl(act->sa_flags);
-       #if !defined(TARGET_MIPS)
-               k->sa.sa_restorer = tswapl(act->sa_restorer);
-       #endif
+#if !defined(TARGET_MIPS)
+        k->sa.sa_restorer = tswapl(act->sa_restorer);
+#endif
         k->sa.sa_mask = act->sa_mask;
 
         /* we update the host linux signal state */
@@ -1684,8 +1684,8 @@ setup_sigcontext(CPUState *regs, struct target_sigcontext *sc)
 
     err |= __put_user(regs->PC, &sc->sc_pc);
 
-    #define save_gp_reg(i) do {                                        \
-        err |= __put_user(regs->gpr[i], &sc->sc_regs[i]);              \
+#define save_gp_reg(i) do {                                    \
+        err |= __put_user(regs->gpr[i], &sc->sc_regs[i]);      \
     } while(0)
     __put_user(0, &sc->sc_regs[0]); save_gp_reg(1); save_gp_reg(2);
     save_gp_reg(3); save_gp_reg(4); save_gp_reg(5); save_gp_reg(6);
@@ -1696,7 +1696,7 @@ setup_sigcontext(CPUState *regs, struct target_sigcontext *sc)
     save_gp_reg(23); save_gp_reg(24); save_gp_reg(25); save_gp_reg(26);
     save_gp_reg(27); save_gp_reg(28); save_gp_reg(29); save_gp_reg(30);
     save_gp_reg(31);
-    #undef save_gp_reg
+#undef save_gp_reg
 
     err |= __put_user(regs->HI, &sc->sc_mdhi);
     err |= __put_user(regs->LO, &sc->sc_mdlo);
@@ -1713,7 +1713,7 @@ setup_sigcontext(CPUState *regs, struct target_sigcontext *sc)
        err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
     }
     /* same with 64 bit */
-    #ifdef CONFIG_64BIT
+#ifdef CONFIG_64BIT
     err |= __put_user(regs->hi, &sc->sc_hi[0]);
     err |= __put_user(regs->lo, &sc->sc_lo[0]);
     if (cpu_has_dsp) {
@@ -1725,13 +1725,10 @@ setup_sigcontext(CPUState *regs, struct target_sigcontext *sc)
        err |= __put_user(mflo3(), &sc->sc_lo[3]);
        err |= __put_user(rddsp(DSP_MASK), &sc->sc_dsp);
     }
-    #endif
-
-
-    #endif
-
+#endif
+#endif
 
-    #if 0
+#if 0
     err |= __put_user(!!used_math(), &sc->sc_used_math);
 
     if (!used_math())
@@ -1765,7 +1762,7 @@ restore_sigcontext(CPUState *regs, struct target_sigcontext *sc)
     err |= __get_user(regs->HI, &sc->sc_mdhi);
     err |= __get_user(regs->LO, &sc->sc_mdlo);
 
-    #define restore_gp_reg(i) do {                                     \
+#define restore_gp_reg(i) do {                                         \
         err |= __get_user(regs->gpr[i], &sc->sc_regs[i]);              \
     } while(0)
     restore_gp_reg( 1); restore_gp_reg( 2); restore_gp_reg( 3);
@@ -1779,7 +1776,7 @@ restore_sigcontext(CPUState *regs, struct target_sigcontext *sc)
     restore_gp_reg(25); restore_gp_reg(26); restore_gp_reg(27);
     restore_gp_reg(28); restore_gp_reg(29); restore_gp_reg(30);
     restore_gp_reg(31);
-    #undef restore_gp_reg
+#undef restore_gp_reg
 
 #if 0
     if (cpu_has_dsp) {
@@ -1791,7 +1788,7 @@ restore_sigcontext(CPUState *regs, struct target_sigcontext *sc)
        err |= __get_user(treg, &sc->sc_lo3); mtlo3(treg);
        err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
     }
-    #ifdef CONFIG_64BIT
+#ifdef CONFIG_64BIT
     err |= __get_user(regs->hi, &sc->sc_hi[0]);
     err |= __get_user(regs->lo, &sc->sc_lo[0]);
     if (cpu_has_dsp) {
@@ -1803,7 +1800,7 @@ restore_sigcontext(CPUState *regs, struct target_sigcontext *sc)
        err |= __get_user(treg, &sc->sc_lo[3]); mthi3(treg);
        err |= __get_user(treg, &sc->sc_dsp); wrdsp(treg, DSP_MASK);
     }
-    #endif
+#endif
 
     err |= __get_user(used_math, &sc->sc_used_math);
     conditional_used_math(used_math);
@@ -1898,51 +1895,50 @@ give_sigsegv:
 
 long do_sigreturn(CPUState *regs)
 {
-   struct sigframe *frame;
-   sigset_t blocked;
-   target_sigset_t target_set;
-   int i;
+    struct sigframe *frame;
+    sigset_t blocked;
+    target_sigset_t target_set;
+    int i;
 
 #if defined(DEBUG_SIGNAL)
-   fprintf(stderr, "do_sigreturn\n");
+    fprintf(stderr, "do_sigreturn\n");
 #endif
-   frame = (struct sigframe *) regs->gpr[29];
-   if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
+    frame = (struct sigframe *) regs->gpr[29];
+    if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
        goto badframe;
 
-   for(i = 0; i < TARGET_NSIG_WORDS; i++) {
+    for(i = 0; i < TARGET_NSIG_WORDS; i++) {
        if(__get_user(target_set.sig[i], &frame->sf_mask.sig[i]))
            goto badframe;
-   }           
+    }
 
-   target_to_host_sigset_internal(&blocked, &target_set);
-   sigprocmask(SIG_SETMASK, &blocked, NULL);
+    target_to_host_sigset_internal(&blocked, &target_set);
+    sigprocmask(SIG_SETMASK, &blocked, NULL);
 
-   if (restore_sigcontext(regs, &frame->sf_sc))
+    if (restore_sigcontext(regs, &frame->sf_sc))
        goto badframe;
 
 #if 0
-   /*
-    * Don't let your children do this ...
-    */
-   __asm__ __volatile__(
+    /*
+     * Don't let your children do this ...
+     */
+    __asm__ __volatile__(
        "move\t$29, %0\n\t"
        "j\tsyscall_exit"
        :/* no outputs */
        :"r" (&regs));
-   /* Unreached */
+    /* Unreached */
 #endif
     
     regs->PC = regs->CP0_EPC;
-   /* I am not sure this is right, but it seems to work
+    /* I am not sure this is right, but it seems to work
     * maybe a problem with nested signals ? */
     regs->CP0_EPC = 0;
     return 0;
 
 badframe:
-   force_sig(TARGET_SIGSEGV/*, current*/);
-   return 0;   
-
+    force_sig(TARGET_SIGSEGV/*, current*/);
+    return 0;
 }
 
 static void setup_rt_frame(int sig, struct emulated_sigaction *ka, 
@@ -2070,5 +2066,3 @@ void process_pending_signals(void *cpu_env)
     if (q != &k->info)
         free_sigqueue(q);
 }
-
-
index 78d8dfa..abefe85 100644 (file)
@@ -1750,7 +1750,9 @@ int do_fork(CPUState *env, unsigned int flags, unsigned long newsp)
         new_env->dregs[0] = 0;
         /* ??? is this sufficient?  */
 #elif defined(TARGET_MIPS)
-        printf ("HELPME: %s:%d\n", __FILE__, __LINE__);
+        if (!newsp)
+            newsp = env->gpr[29];
+        new_env->gpr[29] = newsp;
 #elif defined(TARGET_PPC)
         if (!newsp)
             newsp = env->gpr[1];
@@ -2429,7 +2431,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
 #ifdef TARGET_NR_sigaction
     case TARGET_NR_sigaction:
         {
-       #if !defined(TARGET_MIPS)
+#if !defined(TARGET_MIPS)
             struct target_old_sigaction *old_act;
             struct target_sigaction act, oact, *pact;
             if (arg2) {
@@ -2452,7 +2454,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
                 old_act->sa_restorer = oact.sa_restorer;
                 unlock_user_struct(old_act, arg3, 1);
             }
-       #else
+#else
            struct target_sigaction act, oact, *pact, *old_act;
 
            if (arg2) {
@@ -2478,7 +2480,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
                old_act->sa_mask.sig[3] = 0;
                unlock_user_struct(old_act, arg3, 1);
            }
-       #endif
+#endif
         }
         break;
 #endif
index 9e02919..d127d00 100644 (file)
@@ -372,5 +372,6 @@ enum {
 int cpu_mips_exec(CPUMIPSState *s);
 CPUMIPSState *cpu_mips_init(void);
 uint32_t cpu_mips_get_clock (void);
+int cpu_mips_signal_handler(int host_signum, void *pinfo, void *puc);
 
 #endif /* !defined (__MIPS_CPU_H__) */