Commit 048f6b4d authored by bellard's avatar bellard

mips user emulation


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1668 c046a42c-6fe2-441c-8c8c-71466251a162
parent eeef26cd
......@@ -13,6 +13,7 @@ version 0.7.3:
- Linux host serial port access
- Linux host low level parallel port access
- New network emulation code supporting VLANs.
- MIPS User Linux emulation
version 0.7.2:
......
......@@ -230,7 +230,7 @@ if test -z "$target_list" ; then
target_list="i386-softmmu ppc-softmmu sparc-softmmu x86_64-softmmu mips-softmmu arm-softmmu"
# the following are Linux specific
if [ "$linux" = "yes" ] ; then
target_list="i386-user arm-user armeb-user sparc-user ppc-user $target_list"
target_list="i386-user arm-user armeb-user sparc-user ppc-user mips-user $target_list"
fi
else
target_list=$(echo "$target_list" | sed -e 's/,/ /g')
......
......@@ -247,6 +247,31 @@ static inline void init_thread(struct target_pt_regs *_regs, struct image_info *
#endif
#ifdef TARGET_MIPS
#define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ( (x) == EM_MIPS )
#define ELF_CLASS ELFCLASS32
#ifdef TARGET_WORDS_BIGENDIAN
#define ELF_DATA ELFDATA2MSB
#else
#define ELF_DATA ELFDATA2LSB
#endif
#define ELF_ARCH EM_MIPS
#define ELF_PLAT_INIT(_r)
static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop)
{
regs->cp0_status = CP0St_UM;
regs->cp0_epc = infop->entry;
regs->regs[29] = infop->start_stack;
}
#endif /* TARGET_MIPS */
#ifndef ELF_PLATFORM
#define ELF_PLATFORM (NULL)
#endif
......
......@@ -977,6 +977,404 @@ void cpu_loop(CPUPPCState *env)
}
#endif
#ifdef TARGET_MIPS
#define MIPS_SYS(name, args) args,
static const uint8_t mips_syscall_args[] = {
MIPS_SYS(sys_syscall , 0) /* 4000 */
MIPS_SYS(sys_exit , 1)
MIPS_SYS(sys_fork , 0)
MIPS_SYS(sys_read , 3)
MIPS_SYS(sys_write , 3)
MIPS_SYS(sys_open , 3) /* 4005 */
MIPS_SYS(sys_close , 1)
MIPS_SYS(sys_waitpid , 3)
MIPS_SYS(sys_creat , 2)
MIPS_SYS(sys_link , 2)
MIPS_SYS(sys_unlink , 1) /* 4010 */
MIPS_SYS(sys_execve , 0)
MIPS_SYS(sys_chdir , 1)
MIPS_SYS(sys_time , 1)
MIPS_SYS(sys_mknod , 3)
MIPS_SYS(sys_chmod , 2) /* 4015 */
MIPS_SYS(sys_lchown , 3)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_ni_syscall , 0) /* was sys_stat */
MIPS_SYS(sys_lseek , 3)
MIPS_SYS(sys_getpid , 0) /* 4020 */
MIPS_SYS(sys_mount , 5)
MIPS_SYS(sys_oldumount , 1)
MIPS_SYS(sys_setuid , 1)
MIPS_SYS(sys_getuid , 0)
MIPS_SYS(sys_stime , 1) /* 4025 */
MIPS_SYS(sys_ptrace , 4)
MIPS_SYS(sys_alarm , 1)
MIPS_SYS(sys_ni_syscall , 0) /* was sys_fstat */
MIPS_SYS(sys_pause , 0)
MIPS_SYS(sys_utime , 2) /* 4030 */
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_access , 2)
MIPS_SYS(sys_nice , 1)
MIPS_SYS(sys_ni_syscall , 0) /* 4035 */
MIPS_SYS(sys_sync , 0)
MIPS_SYS(sys_kill , 2)
MIPS_SYS(sys_rename , 2)
MIPS_SYS(sys_mkdir , 2)
MIPS_SYS(sys_rmdir , 1) /* 4040 */
MIPS_SYS(sys_dup , 1)
MIPS_SYS(sys_pipe , 0)
MIPS_SYS(sys_times , 1)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_brk , 1) /* 4045 */
MIPS_SYS(sys_setgid , 1)
MIPS_SYS(sys_getgid , 0)
MIPS_SYS(sys_ni_syscall , 0) /* was signal(2) */
MIPS_SYS(sys_geteuid , 0)
MIPS_SYS(sys_getegid , 0) /* 4050 */
MIPS_SYS(sys_acct , 0)
MIPS_SYS(sys_umount , 2)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_ioctl , 3)
MIPS_SYS(sys_fcntl , 3) /* 4055 */
MIPS_SYS(sys_ni_syscall , 2)
MIPS_SYS(sys_setpgid , 2)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_olduname , 1)
MIPS_SYS(sys_umask , 1) /* 4060 */
MIPS_SYS(sys_chroot , 1)
MIPS_SYS(sys_ustat , 2)
MIPS_SYS(sys_dup2 , 2)
MIPS_SYS(sys_getppid , 0)
MIPS_SYS(sys_getpgrp , 0) /* 4065 */
MIPS_SYS(sys_setsid , 0)
MIPS_SYS(sys_sigaction , 3)
MIPS_SYS(sys_sgetmask , 0)
MIPS_SYS(sys_ssetmask , 1)
MIPS_SYS(sys_setreuid , 2) /* 4070 */
MIPS_SYS(sys_setregid , 2)
MIPS_SYS(sys_sigsuspend , 0)
MIPS_SYS(sys_sigpending , 1)
MIPS_SYS(sys_sethostname , 2)
MIPS_SYS(sys_setrlimit , 2) /* 4075 */
MIPS_SYS(sys_getrlimit , 2)
MIPS_SYS(sys_getrusage , 2)
MIPS_SYS(sys_gettimeofday, 2)
MIPS_SYS(sys_settimeofday, 2)
MIPS_SYS(sys_getgroups , 2) /* 4080 */
MIPS_SYS(sys_setgroups , 2)
MIPS_SYS(sys_ni_syscall , 0) /* old_select */
MIPS_SYS(sys_symlink , 2)
MIPS_SYS(sys_ni_syscall , 0) /* was sys_lstat */
MIPS_SYS(sys_readlink , 3) /* 4085 */
MIPS_SYS(sys_uselib , 1)
MIPS_SYS(sys_swapon , 2)
MIPS_SYS(sys_reboot , 3)
MIPS_SYS(old_readdir , 3)
MIPS_SYS(old_mmap , 6) /* 4090 */
MIPS_SYS(sys_munmap , 2)
MIPS_SYS(sys_truncate , 2)
MIPS_SYS(sys_ftruncate , 2)
MIPS_SYS(sys_fchmod , 2)
MIPS_SYS(sys_fchown , 3) /* 4095 */
MIPS_SYS(sys_getpriority , 2)
MIPS_SYS(sys_setpriority , 3)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_statfs , 2)
MIPS_SYS(sys_fstatfs , 2) /* 4100 */
MIPS_SYS(sys_ni_syscall , 0) /* was ioperm(2) */
MIPS_SYS(sys_socketcall , 2)
MIPS_SYS(sys_syslog , 3)
MIPS_SYS(sys_setitimer , 3)
MIPS_SYS(sys_getitimer , 2) /* 4105 */
MIPS_SYS(sys_newstat , 2)
MIPS_SYS(sys_newlstat , 2)
MIPS_SYS(sys_newfstat , 2)
MIPS_SYS(sys_uname , 1)
MIPS_SYS(sys_ni_syscall , 0) /* 4110 was iopl(2) */
MIPS_SYS(sys_vhangup , 0)
MIPS_SYS(sys_ni_syscall , 0) /* was sys_idle() */
MIPS_SYS(sys_ni_syscall , 0) /* was sys_vm86 */
MIPS_SYS(sys_wait4 , 4)
MIPS_SYS(sys_swapoff , 1) /* 4115 */
MIPS_SYS(sys_sysinfo , 1)
MIPS_SYS(sys_ipc , 6)
MIPS_SYS(sys_fsync , 1)
MIPS_SYS(sys_sigreturn , 0)
MIPS_SYS(sys_clone , 0) /* 4120 */
MIPS_SYS(sys_setdomainname, 2)
MIPS_SYS(sys_newuname , 1)
MIPS_SYS(sys_ni_syscall , 0) /* sys_modify_ldt */
MIPS_SYS(sys_adjtimex , 1)
MIPS_SYS(sys_mprotect , 3) /* 4125 */
MIPS_SYS(sys_sigprocmask , 3)
MIPS_SYS(sys_ni_syscall , 0) /* was create_module */
MIPS_SYS(sys_init_module , 5)
MIPS_SYS(sys_delete_module, 1)
MIPS_SYS(sys_ni_syscall , 0) /* 4130 was get_kernel_syms */
MIPS_SYS(sys_quotactl , 0)
MIPS_SYS(sys_getpgid , 1)
MIPS_SYS(sys_fchdir , 1)
MIPS_SYS(sys_bdflush , 2)
MIPS_SYS(sys_sysfs , 3) /* 4135 */
MIPS_SYS(sys_personality , 1)
MIPS_SYS(sys_ni_syscall , 0) /* for afs_syscall */
MIPS_SYS(sys_setfsuid , 1)
MIPS_SYS(sys_setfsgid , 1)
MIPS_SYS(sys_llseek , 5) /* 4140 */
MIPS_SYS(sys_getdents , 3)
MIPS_SYS(sys_select , 5)
MIPS_SYS(sys_flock , 2)
MIPS_SYS(sys_msync , 3)
MIPS_SYS(sys_readv , 3) /* 4145 */
MIPS_SYS(sys_writev , 3)
MIPS_SYS(sys_cacheflush , 3)
MIPS_SYS(sys_cachectl , 3)
MIPS_SYS(sys_sysmips , 4)
MIPS_SYS(sys_ni_syscall , 0) /* 4150 */
MIPS_SYS(sys_getsid , 1)
MIPS_SYS(sys_fdatasync , 0)
MIPS_SYS(sys_sysctl , 1)
MIPS_SYS(sys_mlock , 2)
MIPS_SYS(sys_munlock , 2) /* 4155 */
MIPS_SYS(sys_mlockall , 1)
MIPS_SYS(sys_munlockall , 0)
MIPS_SYS(sys_sched_setparam, 2)
MIPS_SYS(sys_sched_getparam, 2)
MIPS_SYS(sys_sched_setscheduler, 3) /* 4160 */
MIPS_SYS(sys_sched_getscheduler, 1)
MIPS_SYS(sys_sched_yield , 0)
MIPS_SYS(sys_sched_get_priority_max, 1)
MIPS_SYS(sys_sched_get_priority_min, 1)
MIPS_SYS(sys_sched_rr_get_interval, 2) /* 4165 */
MIPS_SYS(sys_nanosleep, 2)
MIPS_SYS(sys_mremap , 4)
MIPS_SYS(sys_accept , 3)
MIPS_SYS(sys_bind , 3)
MIPS_SYS(sys_connect , 3) /* 4170 */
MIPS_SYS(sys_getpeername , 3)
MIPS_SYS(sys_getsockname , 3)
MIPS_SYS(sys_getsockopt , 5)
MIPS_SYS(sys_listen , 2)
MIPS_SYS(sys_recv , 4) /* 4175 */
MIPS_SYS(sys_recvfrom , 6)
MIPS_SYS(sys_recvmsg , 3)
MIPS_SYS(sys_send , 4)
MIPS_SYS(sys_sendmsg , 3)
MIPS_SYS(sys_sendto , 6) /* 4180 */
MIPS_SYS(sys_setsockopt , 5)
MIPS_SYS(sys_shutdown , 2)
MIPS_SYS(sys_socket , 3)
MIPS_SYS(sys_socketpair , 4)
MIPS_SYS(sys_setresuid , 3) /* 4185 */
MIPS_SYS(sys_getresuid , 3)
MIPS_SYS(sys_ni_syscall , 0) /* was sys_query_module */
MIPS_SYS(sys_poll , 3)
MIPS_SYS(sys_nfsservctl , 3)
MIPS_SYS(sys_setresgid , 3) /* 4190 */
MIPS_SYS(sys_getresgid , 3)
MIPS_SYS(sys_prctl , 5)
MIPS_SYS(sys_rt_sigreturn, 0)
MIPS_SYS(sys_rt_sigaction, 4)
MIPS_SYS(sys_rt_sigprocmask, 4) /* 4195 */
MIPS_SYS(sys_rt_sigpending, 2)
MIPS_SYS(sys_rt_sigtimedwait, 4)
MIPS_SYS(sys_rt_sigqueueinfo, 3)
MIPS_SYS(sys_rt_sigsuspend, 0)
MIPS_SYS(sys_pread64 , 6) /* 4200 */
MIPS_SYS(sys_pwrite64 , 6)
MIPS_SYS(sys_chown , 3)
MIPS_SYS(sys_getcwd , 2)
MIPS_SYS(sys_capget , 2)
MIPS_SYS(sys_capset , 2) /* 4205 */
MIPS_SYS(sys_sigaltstack , 0)
MIPS_SYS(sys_sendfile , 4)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_mmap2 , 6) /* 4210 */
MIPS_SYS(sys_truncate64 , 4)
MIPS_SYS(sys_ftruncate64 , 4)
MIPS_SYS(sys_stat64 , 2)
MIPS_SYS(sys_lstat64 , 2)
MIPS_SYS(sys_fstat64 , 2) /* 4215 */
MIPS_SYS(sys_pivot_root , 2)
MIPS_SYS(sys_mincore , 3)
MIPS_SYS(sys_madvise , 3)
MIPS_SYS(sys_getdents64 , 3)
MIPS_SYS(sys_fcntl64 , 3) /* 4220 */
MIPS_SYS(sys_ni_syscall , 0)
MIPS_SYS(sys_gettid , 0)
MIPS_SYS(sys_readahead , 5)
MIPS_SYS(sys_setxattr , 5)
MIPS_SYS(sys_lsetxattr , 5) /* 4225 */
MIPS_SYS(sys_fsetxattr , 5)
MIPS_SYS(sys_getxattr , 4)
MIPS_SYS(sys_lgetxattr , 4)
MIPS_SYS(sys_fgetxattr , 4)
MIPS_SYS(sys_listxattr , 3) /* 4230 */
MIPS_SYS(sys_llistxattr , 3)
MIPS_SYS(sys_flistxattr , 3)
MIPS_SYS(sys_removexattr , 2)
MIPS_SYS(sys_lremovexattr, 2)
MIPS_SYS(sys_fremovexattr, 2) /* 4235 */
MIPS_SYS(sys_tkill , 2)
MIPS_SYS(sys_sendfile64 , 5)
MIPS_SYS(sys_futex , 2)
MIPS_SYS(sys_sched_setaffinity, 3)
MIPS_SYS(sys_sched_getaffinity, 3) /* 4240 */
MIPS_SYS(sys_io_setup , 2)
MIPS_SYS(sys_io_destroy , 1)
MIPS_SYS(sys_io_getevents, 5)
MIPS_SYS(sys_io_submit , 3)
MIPS_SYS(sys_io_cancel , 3) /* 4245 */
MIPS_SYS(sys_exit_group , 1)
MIPS_SYS(sys_lookup_dcookie, 3)
MIPS_SYS(sys_epoll_create, 1)
MIPS_SYS(sys_epoll_ctl , 4)
MIPS_SYS(sys_epoll_wait , 3) /* 4250 */
MIPS_SYS(sys_remap_file_pages, 5)
MIPS_SYS(sys_set_tid_address, 1)
MIPS_SYS(sys_restart_syscall, 0)
MIPS_SYS(sys_fadvise64_64, 7)
MIPS_SYS(sys_statfs64 , 3) /* 4255 */
MIPS_SYS(sys_fstatfs64 , 2)
MIPS_SYS(sys_timer_create, 3)
MIPS_SYS(sys_timer_settime, 4)
MIPS_SYS(sys_timer_gettime, 2)
MIPS_SYS(sys_timer_getoverrun, 1) /* 4260 */
MIPS_SYS(sys_timer_delete, 1)
MIPS_SYS(sys_clock_settime, 2)
MIPS_SYS(sys_clock_gettime, 2)
MIPS_SYS(sys_clock_getres, 2)
MIPS_SYS(sys_clock_nanosleep, 4) /* 4265 */
MIPS_SYS(sys_tgkill , 3)
MIPS_SYS(sys_utimes , 2)
MIPS_SYS(sys_mbind , 4)
MIPS_SYS(sys_ni_syscall , 0) /* sys_get_mempolicy */
MIPS_SYS(sys_ni_syscall , 0) /* 4270 sys_set_mempolicy */
MIPS_SYS(sys_mq_open , 4)
MIPS_SYS(sys_mq_unlink , 1)
MIPS_SYS(sys_mq_timedsend, 5)
MIPS_SYS(sys_mq_timedreceive, 5)
MIPS_SYS(sys_mq_notify , 2) /* 4275 */
MIPS_SYS(sys_mq_getsetattr, 3)
MIPS_SYS(sys_ni_syscall , 0) /* sys_vserver */
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_keyctl , 5)
};
#undef MIPS_SYS
void cpu_loop(CPUMIPSState *env)
{
target_siginfo_t info;
int trapnr, ret, nb_args;
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;
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 */
if (get_user(arg5, (target_ulong *)(sp_reg + 16))) {
ret = -EFAULT;
goto fail;
}
if (nb_args >= 6) {
if (get_user(arg6, (target_ulong *)(sp_reg + 20))) {
ret = -EFAULT;
goto fail;
}
} 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);
}
fail:
env->PC += 4;
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;
}
}
break;
case EXCP_RI:
{
uint32_t insn, op;
if (get_user(insn, (uint32_t *)env->PC) < 0)
goto sigill;
op = insn >> 26;
// printf("insn=%08x op=%02x\n", insn, op);
/* XXX: totally dummy FP ops just to be able to launch
a few executables */
switch(op) {
case 0x31: /* LWC1 */
env->PC += 4;
break;
case 0x39: /* SWC1 */
env->PC += 4;
break;
case 0x11:
switch((insn >> 21) & 0x1f) {
case 0x02: /* CFC1 */
env->PC += 4;
break;
default:
goto sigill;
}
break;
default:
sigill:
info.si_signo = TARGET_SIGILL;
info.si_errno = 0;
info.si_code = 0;
queue_signal(info.si_signo, &info);
break;
}
}
break;
default:
// error:
fprintf(stderr, "qemu: unhandled CPU exception 0x%x - aborting\n",
trapnr);
cpu_dump_state(env, stderr, fprintf, 0);
abort();
}
process_pending_signals(env);
}
}
#endif
void usage(void)
{
printf("qemu-" TARGET_ARCH " version " QEMU_VERSION ", Copyright (c) 2003-2005 Fabrice Bellard\n"
......@@ -1245,6 +1643,15 @@ int main(int argc, char **argv)
env->gpr[i] = regs->gpr[i];
}
}
#elif defined(TARGET_MIPS)
{
int i;
for(i = 0; i < 32; i++) {
env->gpr[i] = regs->regs[i];
}
env->PC = regs->cp0_epc;
}
#else
#error unsupported target CPU
#endif
......
/* this struct defines the way the registers are stored on the
stack during a system call. */
struct target_pt_regs {
#if 1
/* Pad bytes for argument save space on the stack. */
target_ulong pad0[6];
#endif
/* Saved main processor registers. */
target_ulong regs[32];
/* Saved special registers. */
target_ulong cp0_status;
target_ulong lo;
target_ulong hi;
target_ulong cp0_badvaddr;
target_ulong cp0_cause;
target_ulong cp0_epc;
};
#define UNAME_MACHINE "mips"
/*
* 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_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_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_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_lchown (TARGET_NR_Linux + 16)
#define TARGET_NR_break (TARGET_NR_Linux + 17)
#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_mount (TARGET_NR_Linux + 21)
#define TARGET_NR_umount (TARGET_NR_Linux + 22)
#define TARGET_NR_setuid (TARGET_NR_Linux + 23)
#define TARGET_NR_getuid (TARGET_NR_Linux + 24)
#define TARGET_NR_stime (TARGET_NR_Linux + 25)
#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_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_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_mkdir (TARGET_NR_Linux + 39)
#define TARGET_NR_rmdir (TARGET_NR_Linux + 40)
#define TARGET_NR_dup (TARGET_NR_Linux + 41)
#define TARGET_NR_pipe (TARGET_NR_Linux + 42)
#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_setgid (TARGET_NR_Linux + 46)
#define TARGET_NR_getgid (TARGET_NR_Linux + 47)
#define TARGET_NR_signal (TARGET_NR_Linux + 48)
#define TARGET_NR_geteuid (TARGET_NR_Linux + 49)
#define TARGET_NR_getegid (TARGET_NR_Linux + 50)
#define TARGET_NR_acct (TARGET_NR_Linux + 51)
#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_umask (TARGET_NR_Linux + 60)
#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_setreuid (TARGET_NR_Linux + 70)
#define TARGET_NR_setregid (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_gettimeofday (TARGET_NR_Linux + 78)
#define TARGET_NR_settimeofday (TARGET_NR_Linux + 79)
#define TARGET_NR_getgroups (TARGET_NR_Linux + 80)
#define TARGET_NR_setgroups (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_fchown (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_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_iopl (TARGET_NR_Linux + 110)
#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_ipc (TARGET_NR_Linux + 117)
#define TARGET_NR_fsync (TARGET_NR_Linux + 118)
#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_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_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 */