MIPS linux-user update.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2810 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index 1256dba..c130692 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -287,7 +287,11 @@
 
 #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 @@
     regs->regs[29] = infop->start_stack;
 }
 
+#define USE_ELF_CORE_DUMP
+#define ELF_EXEC_PAGESIZE        4096
+
 #endif /* TARGET_MIPS */
 
 #ifdef TARGET_SH4
diff --git a/linux-user/main.c b/linux-user/main.c
index d14b499..ccb8c26 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -1312,9 +1312,41 @@
 	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 @@
 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);
+            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;
                 }
-                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;
-                }
+                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:
diff --git a/linux-user/mips/syscall_nr.h b/linux-user/mips/syscall_nr.h
index e869bcd..f86f86a 100644
--- a/linux-user/mips/syscall_nr.h
+++ b/linux-user/mips/syscall_nr.h
@@ -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)
@@ -48,241 +48,273 @@
 #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)
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 5a99e61..5b1334a 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -432,17 +432,17 @@
     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 @@
 
     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 @@
     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 @@
 	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 @@
 	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 @@
     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_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 @@
 	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 @@
 	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 @@
 
 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 @@
     if (q != &k->info)
         free_sigqueue(q);
 }
-
-
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 78d8dfa..abefe85 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -1750,7 +1750,9 @@
         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 @@
 #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 @@
                 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 @@
 		old_act->sa_mask.sig[3] = 0;
 		unlock_user_struct(old_act, arg3, 1);
 	    }
-	#endif
+#endif
         }
         break;
 #endif
diff --git a/target-mips/cpu.h b/target-mips/cpu.h
index 9e02919..d127d00 100644
--- a/target-mips/cpu.h
+++ b/target-mips/cpu.h
@@ -372,5 +372,6 @@
 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__) */