summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authordfr <dfr@FreeBSD.org>2002-04-10 19:34:51 +0000
committerdfr <dfr@FreeBSD.org>2002-04-10 19:34:51 +0000
commitcfb2ec9f72687e0e4a583b241487f81d1a769b22 (patch)
tree5b6107cc31901f631872c0ee512d3bf14afa0a65 /sys/ia64
parent5c10a8af2430ee1c789444ca9d8863296bdf2765 (diff)
downloadFreeBSD-src-cfb2ec9f72687e0e4a583b241487f81d1a769b22.zip
FreeBSD-src-cfb2ec9f72687e0e4a583b241487f81d1a769b22.tar.gz
Initial support for executing IA-32 binaries. This will not compile
without a few patches for the rest of the kernel to allow the image activator to override exec_copyout_strings and setregs. None of the syscall argument translation has been done. Possibly, this translation layer can be shared with any platform that wants to support running ILP32 binaries on an LP64 host (e.g. sparc32 binaries?)
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia32/Makefile15
-rw-r--r--sys/ia64/ia32/ia32_proto.h1529
-rw-r--r--sys/ia64/ia32/ia32_syscall.h306
-rw-r--r--sys/ia64/ia32/ia32_sysent.c415
-rw-r--r--sys/ia64/ia32/imgact_ia32.c1445
-rw-r--r--sys/ia64/ia32/imgact_ia32.h112
-rw-r--r--sys/ia64/ia32/syscalls.conf12
-rw-r--r--sys/ia64/ia32/syscalls.master562
8 files changed, 4396 insertions, 0 deletions
diff --git a/sys/ia64/ia32/Makefile b/sys/ia64/ia32/Makefile
new file mode 100644
index 0000000..1184ef4
--- /dev/null
+++ b/sys/ia64/ia32/Makefile
@@ -0,0 +1,15 @@
+# Makefile for syscall tables
+#
+# $FreeBSD$
+
+all:
+ @echo "make sysent only"
+
+sysent: ia32_sysent.c ia32_syscall.h ia32_proto.h
+
+ia32_sysent.c ia32_syscall.h ia32_proto.h: ../../kern/makesyscalls.sh \
+ syscalls.master syscalls.conf
+ -mv -f ia32_sysent.c ia32_sysent.c.bak
+ -mv -f ia32_syscall.h ia32_syscall.h.bak
+ -mv -f ia32_proto.h ia32_proto.h.bak
+ sh ../../kern/makesyscalls.sh syscalls.master syscalls.conf
diff --git a/sys/ia64/ia32/ia32_proto.h b/sys/ia64/ia32/ia32_proto.h
new file mode 100644
index 0000000..5bb7abf
--- /dev/null
+++ b/sys/ia64/ia32/ia32_proto.h
@@ -0,0 +1,1529 @@
+/*
+ * System call prototypes.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * created from FreeBSD
+ */
+
+#ifndef _IA32_SYSPROTO_H_
+#define _IA32_SYSPROTO_H_
+
+#include <sys/signal.h>
+
+#include <sys/acl.h>
+
+struct proc;
+
+struct thread;
+
+#define PAD_(t) (sizeof(register_t) <= sizeof(t) ? \
+ 0 : sizeof(register_t) - sizeof(t))
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+#define PADL_(t) 0
+#define PADR_(t) PAD_(t)
+#else
+#define PADL_(t) PAD_(t)
+#define PADR_(t) 0
+#endif
+
+struct nosys_args {
+ register_t dummy;
+};
+struct sys_exit_args {
+ char rval_l_[PADL_(int)]; int rval; char rval_r_[PADR_(int)];
+};
+struct fork_args {
+ register_t dummy;
+};
+struct read_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
+ char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+};
+struct write_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(const void *)]; const void * buf; char buf_r_[PADR_(const void *)];
+ char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+};
+struct open_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+};
+struct close_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+};
+struct wait_args {
+ char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)];
+ char status_l_[PADL_(int *)]; int * status; char status_r_[PADR_(int *)];
+ char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)];
+ char rusage_l_[PADL_(struct rusage *)]; struct rusage * rusage; char rusage_r_[PADR_(struct rusage *)];
+};
+struct link_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char link_l_[PADL_(char *)]; char * link; char link_r_[PADR_(char *)];
+};
+struct unlink_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
+struct chdir_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
+struct fchdir_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+};
+struct mknod_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+ char dev_l_[PADL_(int)]; int dev; char dev_r_[PADR_(int)];
+};
+struct chmod_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+};
+struct chown_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char uid_l_[PADL_(int)]; int uid; char uid_r_[PADR_(int)];
+ char gid_l_[PADL_(int)]; int gid; char gid_r_[PADR_(int)];
+};
+struct obreak_args {
+ char nsize_l_[PADL_(char *)]; char * nsize; char nsize_r_[PADR_(char *)];
+};
+struct getfsstat_args {
+ char buf_l_[PADL_(struct statfs *)]; struct statfs * buf; char buf_r_[PADR_(struct statfs *)];
+ char bufsize_l_[PADL_(long)]; long bufsize; char bufsize_r_[PADR_(long)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct getpid_args {
+ register_t dummy;
+};
+struct mount_args {
+ char type_l_[PADL_(char *)]; char * type; char type_r_[PADR_(char *)];
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+ char data_l_[PADL_(caddr_t)]; caddr_t data; char data_r_[PADR_(caddr_t)];
+};
+struct unmount_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct setuid_args {
+ char uid_l_[PADL_(uid_t)]; uid_t uid; char uid_r_[PADR_(uid_t)];
+};
+struct getuid_args {
+ register_t dummy;
+};
+struct geteuid_args {
+ register_t dummy;
+};
+struct ptrace_args {
+ char req_l_[PADL_(int)]; int req; char req_r_[PADR_(int)];
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+ char addr_l_[PADL_(caddr_t)]; caddr_t addr; char addr_r_[PADR_(caddr_t)];
+ char data_l_[PADL_(int)]; int data; char data_r_[PADR_(int)];
+};
+struct recvmsg_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char msg_l_[PADL_(struct msghdr *)]; struct msghdr * msg; char msg_r_[PADR_(struct msghdr *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct sendmsg_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct recvfrom_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char buf_l_[PADL_(caddr_t)]; caddr_t buf; char buf_r_[PADR_(caddr_t)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+ char from_l_[PADL_(caddr_t)]; caddr_t from; char from_r_[PADR_(caddr_t)];
+ char fromlenaddr_l_[PADL_(int *)]; int * fromlenaddr; char fromlenaddr_r_[PADR_(int *)];
+};
+struct accept_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char name_l_[PADL_(caddr_t)]; caddr_t name; char name_r_[PADR_(caddr_t)];
+ char anamelen_l_[PADL_(int *)]; int * anamelen; char anamelen_r_[PADR_(int *)];
+};
+struct getpeername_args {
+ char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
+ char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
+ char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
+};
+struct getsockname_args {
+ char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
+ char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
+ char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
+};
+struct access_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct chflags_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct fchflags_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct sync_args {
+ register_t dummy;
+};
+struct kill_args {
+ char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)];
+ char signum_l_[PADL_(int)]; int signum; char signum_r_[PADR_(int)];
+};
+struct getppid_args {
+ register_t dummy;
+};
+struct dup_args {
+ char fd_l_[PADL_(u_int)]; u_int fd; char fd_r_[PADR_(u_int)];
+};
+struct pipe_args {
+ register_t dummy;
+};
+struct getegid_args {
+ register_t dummy;
+};
+struct profil_args {
+ char samples_l_[PADL_(caddr_t)]; caddr_t samples; char samples_r_[PADR_(caddr_t)];
+ char size_l_[PADL_(size_t)]; size_t size; char size_r_[PADR_(size_t)];
+ char offset_l_[PADL_(size_t)]; size_t offset; char offset_r_[PADR_(size_t)];
+ char scale_l_[PADL_(u_int)]; u_int scale; char scale_r_[PADR_(u_int)];
+};
+struct ktrace_args {
+ char fname_l_[PADL_(const char *)]; const char * fname; char fname_r_[PADR_(const char *)];
+ char ops_l_[PADL_(int)]; int ops; char ops_r_[PADR_(int)];
+ char facs_l_[PADL_(int)]; int facs; char facs_r_[PADR_(int)];
+ char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)];
+};
+struct getgid_args {
+ register_t dummy;
+};
+struct getlogin_args {
+ char namebuf_l_[PADL_(char *)]; char * namebuf; char namebuf_r_[PADR_(char *)];
+ char namelen_l_[PADL_(u_int)]; u_int namelen; char namelen_r_[PADR_(u_int)];
+};
+struct setlogin_args {
+ char namebuf_l_[PADL_(char *)]; char * namebuf; char namebuf_r_[PADR_(char *)];
+};
+struct acct_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
+struct osigpending_args {
+ register_t dummy;
+};
+struct sigaltstack_args {
+ char ss_l_[PADL_(stack_t *)]; stack_t * ss; char ss_r_[PADR_(stack_t *)];
+ char oss_l_[PADL_(stack_t *)]; stack_t * oss; char oss_r_[PADR_(stack_t *)];
+};
+struct ioctl_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char com_l_[PADL_(u_long)]; u_long com; char com_r_[PADR_(u_long)];
+ char data_l_[PADL_(caddr_t)]; caddr_t data; char data_r_[PADR_(caddr_t)];
+};
+struct reboot_args {
+ char opt_l_[PADL_(int)]; int opt; char opt_r_[PADR_(int)];
+};
+struct revoke_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
+struct symlink_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char link_l_[PADL_(char *)]; char * link; char link_r_[PADR_(char *)];
+};
+struct readlink_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)];
+ char count_l_[PADL_(int)]; int count; char count_r_[PADR_(int)];
+};
+struct execve_args {
+ char fname_l_[PADL_(char *)]; char * fname; char fname_r_[PADR_(char *)];
+ char argv_l_[PADL_(char **)]; char ** argv; char argv_r_[PADR_(char **)];
+ char envv_l_[PADL_(char **)]; char ** envv; char envv_r_[PADR_(char **)];
+};
+struct umask_args {
+ char newmask_l_[PADL_(int)]; int newmask; char newmask_r_[PADR_(int)];
+};
+struct chroot_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
+struct getpagesize_args {
+ register_t dummy;
+};
+struct msync_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct vfork_args {
+ register_t dummy;
+};
+struct sbrk_args {
+ char incr_l_[PADL_(int)]; int incr; char incr_r_[PADR_(int)];
+};
+struct sstk_args {
+ char incr_l_[PADL_(int)]; int incr; char incr_r_[PADR_(int)];
+};
+struct ovadvise_args {
+ char anom_l_[PADL_(int)]; int anom; char anom_r_[PADR_(int)];
+};
+struct munmap_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+};
+struct mprotect_args {
+ char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)];
+};
+struct madvise_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char behav_l_[PADL_(int)]; int behav; char behav_r_[PADR_(int)];
+};
+struct mincore_args {
+ char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char vec_l_[PADL_(char *)]; char * vec; char vec_r_[PADR_(char *)];
+};
+struct getgroups_args {
+ char gidsetsize_l_[PADL_(u_int)]; u_int gidsetsize; char gidsetsize_r_[PADR_(u_int)];
+ char gidset_l_[PADL_(gid_t *)]; gid_t * gidset; char gidset_r_[PADR_(gid_t *)];
+};
+struct setgroups_args {
+ char gidsetsize_l_[PADL_(u_int)]; u_int gidsetsize; char gidsetsize_r_[PADR_(u_int)];
+ char gidset_l_[PADL_(gid_t *)]; gid_t * gidset; char gidset_r_[PADR_(gid_t *)];
+};
+struct getpgrp_args {
+ register_t dummy;
+};
+struct setpgid_args {
+ char pid_l_[PADL_(int)]; int pid; char pid_r_[PADR_(int)];
+ char pgid_l_[PADL_(int)]; int pgid; char pgid_r_[PADR_(int)];
+};
+struct setitimer_args {
+ char which_l_[PADL_(u_int)]; u_int which; char which_r_[PADR_(u_int)];
+ char itv_l_[PADL_(struct itimerval *)]; struct itimerval * itv; char itv_r_[PADR_(struct itimerval *)];
+ char oitv_l_[PADL_(struct itimerval *)]; struct itimerval * oitv; char oitv_r_[PADR_(struct itimerval *)];
+};
+struct owait_args {
+ register_t dummy;
+};
+struct swapon_args {
+ char name_l_[PADL_(char *)]; char * name; char name_r_[PADR_(char *)];
+};
+struct getitimer_args {
+ char which_l_[PADL_(u_int)]; u_int which; char which_r_[PADR_(u_int)];
+ char itv_l_[PADL_(struct itimerval *)]; struct itimerval * itv; char itv_r_[PADR_(struct itimerval *)];
+};
+struct getdtablesize_args {
+ register_t dummy;
+};
+struct dup2_args {
+ char from_l_[PADL_(u_int)]; u_int from; char from_r_[PADR_(u_int)];
+ char to_l_[PADL_(u_int)]; u_int to; char to_r_[PADR_(u_int)];
+};
+struct fcntl_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)];
+ char arg_l_[PADL_(long)]; long arg; char arg_r_[PADR_(long)];
+};
+struct select_args {
+ char nd_l_[PADL_(int)]; int nd; char nd_r_[PADR_(int)];
+ char in_l_[PADL_(fd_set *)]; fd_set * in; char in_r_[PADR_(fd_set *)];
+ char ou_l_[PADL_(fd_set *)]; fd_set * ou; char ou_r_[PADR_(fd_set *)];
+ char ex_l_[PADL_(fd_set *)]; fd_set * ex; char ex_r_[PADR_(fd_set *)];
+ char tv_l_[PADL_(struct timeval *)]; struct timeval * tv; char tv_r_[PADR_(struct timeval *)];
+};
+struct fsync_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+};
+struct setpriority_args {
+ char which_l_[PADL_(int)]; int which; char which_r_[PADR_(int)];
+ char who_l_[PADL_(int)]; int who; char who_r_[PADR_(int)];
+ char prio_l_[PADL_(int)]; int prio; char prio_r_[PADR_(int)];
+};
+struct socket_args {
+ char domain_l_[PADL_(int)]; int domain; char domain_r_[PADR_(int)];
+ char type_l_[PADL_(int)]; int type; char type_r_[PADR_(int)];
+ char protocol_l_[PADL_(int)]; int protocol; char protocol_r_[PADR_(int)];
+};
+struct connect_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char name_l_[PADL_(caddr_t)]; caddr_t name; char name_r_[PADR_(caddr_t)];
+ char namelen_l_[PADL_(int)]; int namelen; char namelen_r_[PADR_(int)];
+};
+struct getpriority_args {
+ char which_l_[PADL_(int)]; int which; char which_r_[PADR_(int)];
+ char who_l_[PADL_(int)]; int who; char who_r_[PADR_(int)];
+};
+struct osigreturn_args {
+ char sigcntxp_l_[PADL_(struct osigcontext *)]; struct osigcontext * sigcntxp; char sigcntxp_r_[PADR_(struct osigcontext *)];
+};
+struct bind_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char name_l_[PADL_(caddr_t)]; caddr_t name; char name_r_[PADR_(caddr_t)];
+ char namelen_l_[PADL_(int)]; int namelen; char namelen_r_[PADR_(int)];
+};
+struct setsockopt_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char level_l_[PADL_(int)]; int level; char level_r_[PADR_(int)];
+ char name_l_[PADL_(int)]; int name; char name_r_[PADR_(int)];
+ char val_l_[PADL_(caddr_t)]; caddr_t val; char val_r_[PADR_(caddr_t)];
+ char valsize_l_[PADL_(int)]; int valsize; char valsize_r_[PADR_(int)];
+};
+struct listen_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char backlog_l_[PADL_(int)]; int backlog; char backlog_r_[PADR_(int)];
+};
+struct gettimeofday_args {
+ char tp_l_[PADL_(struct timeval *)]; struct timeval * tp; char tp_r_[PADR_(struct timeval *)];
+ char tzp_l_[PADL_(struct timezone *)]; struct timezone * tzp; char tzp_r_[PADR_(struct timezone *)];
+};
+struct getrusage_args {
+ char who_l_[PADL_(int)]; int who; char who_r_[PADR_(int)];
+ char rusage_l_[PADL_(struct rusage *)]; struct rusage * rusage; char rusage_r_[PADR_(struct rusage *)];
+};
+struct getsockopt_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char level_l_[PADL_(int)]; int level; char level_r_[PADR_(int)];
+ char name_l_[PADL_(int)]; int name; char name_r_[PADR_(int)];
+ char val_l_[PADL_(caddr_t)]; caddr_t val; char val_r_[PADR_(caddr_t)];
+ char avalsize_l_[PADL_(int *)]; int * avalsize; char avalsize_r_[PADR_(int *)];
+};
+struct readv_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char iovp_l_[PADL_(struct iovec *)]; struct iovec * iovp; char iovp_r_[PADR_(struct iovec *)];
+ char iovcnt_l_[PADL_(u_int)]; u_int iovcnt; char iovcnt_r_[PADR_(u_int)];
+};
+struct writev_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char iovp_l_[PADL_(struct iovec *)]; struct iovec * iovp; char iovp_r_[PADR_(struct iovec *)];
+ char iovcnt_l_[PADL_(u_int)]; u_int iovcnt; char iovcnt_r_[PADR_(u_int)];
+};
+struct settimeofday_args {
+ char tv_l_[PADL_(struct timeval *)]; struct timeval * tv; char tv_r_[PADR_(struct timeval *)];
+ char tzp_l_[PADL_(struct timezone *)]; struct timezone * tzp; char tzp_r_[PADR_(struct timezone *)];
+};
+struct fchown_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char uid_l_[PADL_(int)]; int uid; char uid_r_[PADR_(int)];
+ char gid_l_[PADL_(int)]; int gid; char gid_r_[PADR_(int)];
+};
+struct fchmod_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+};
+struct setreuid_args {
+ char ruid_l_[PADL_(int)]; int ruid; char ruid_r_[PADR_(int)];
+ char euid_l_[PADL_(int)]; int euid; char euid_r_[PADR_(int)];
+};
+struct setregid_args {
+ char rgid_l_[PADL_(int)]; int rgid; char rgid_r_[PADR_(int)];
+ char egid_l_[PADL_(int)]; int egid; char egid_r_[PADR_(int)];
+};
+struct rename_args {
+ char from_l_[PADL_(char *)]; char * from; char from_r_[PADR_(char *)];
+ char to_l_[PADL_(char *)]; char * to; char to_r_[PADR_(char *)];
+};
+struct flock_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char how_l_[PADL_(int)]; int how; char how_r_[PADR_(int)];
+};
+struct mkfifo_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+};
+struct sendto_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char buf_l_[PADL_(caddr_t)]; caddr_t buf; char buf_r_[PADR_(caddr_t)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+ char to_l_[PADL_(caddr_t)]; caddr_t to; char to_r_[PADR_(caddr_t)];
+ char tolen_l_[PADL_(int)]; int tolen; char tolen_r_[PADR_(int)];
+};
+struct shutdown_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char how_l_[PADL_(int)]; int how; char how_r_[PADR_(int)];
+};
+struct socketpair_args {
+ char domain_l_[PADL_(int)]; int domain; char domain_r_[PADR_(int)];
+ char type_l_[PADL_(int)]; int type; char type_r_[PADR_(int)];
+ char protocol_l_[PADL_(int)]; int protocol; char protocol_r_[PADR_(int)];
+ char rsv_l_[PADL_(int *)]; int * rsv; char rsv_r_[PADR_(int *)];
+};
+struct mkdir_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+};
+struct rmdir_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
+struct utimes_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char tptr_l_[PADL_(struct timeval *)]; struct timeval * tptr; char tptr_r_[PADR_(struct timeval *)];
+};
+struct adjtime_args {
+ char delta_l_[PADL_(struct timeval *)]; struct timeval * delta; char delta_r_[PADR_(struct timeval *)];
+ char olddelta_l_[PADL_(struct timeval *)]; struct timeval * olddelta; char olddelta_r_[PADR_(struct timeval *)];
+};
+struct ogethostid_args {
+ register_t dummy;
+};
+struct setsid_args {
+ register_t dummy;
+};
+struct quotactl_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)];
+ char uid_l_[PADL_(int)]; int uid; char uid_r_[PADR_(int)];
+ char arg_l_[PADL_(caddr_t)]; caddr_t arg; char arg_r_[PADR_(caddr_t)];
+};
+struct oquota_args {
+ register_t dummy;
+};
+struct nfssvc_args {
+ char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)];
+ char argp_l_[PADL_(caddr_t)]; caddr_t argp; char argp_r_[PADR_(caddr_t)];
+};
+struct statfs_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char buf_l_[PADL_(struct statfs *)]; struct statfs * buf; char buf_r_[PADR_(struct statfs *)];
+};
+struct fstatfs_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(struct statfs *)]; struct statfs * buf; char buf_r_[PADR_(struct statfs *)];
+};
+struct getfh_args {
+ char fname_l_[PADL_(char *)]; char * fname; char fname_r_[PADR_(char *)];
+ char fhp_l_[PADL_(struct fhandle *)]; struct fhandle * fhp; char fhp_r_[PADR_(struct fhandle *)];
+};
+struct getdomainname_args {
+ char domainname_l_[PADL_(char *)]; char * domainname; char domainname_r_[PADR_(char *)];
+ char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
+};
+struct setdomainname_args {
+ char domainname_l_[PADL_(char *)]; char * domainname; char domainname_r_[PADR_(char *)];
+ char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
+};
+struct uname_args {
+ char name_l_[PADL_(struct utsname *)]; struct utsname * name; char name_r_[PADR_(struct utsname *)];
+};
+struct sysarch_args {
+ char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
+ char parms_l_[PADL_(char *)]; char * parms; char parms_r_[PADR_(char *)];
+};
+struct rtprio_args {
+ char function_l_[PADL_(int)]; int function; char function_r_[PADR_(int)];
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+ char rtp_l_[PADL_(struct rtprio *)]; struct rtprio * rtp; char rtp_r_[PADR_(struct rtprio *)];
+};
+struct semsys_args {
+ char which_l_[PADL_(int)]; int which; char which_r_[PADR_(int)];
+ char a2_l_[PADL_(int)]; int a2; char a2_r_[PADR_(int)];
+ char a3_l_[PADL_(int)]; int a3; char a3_r_[PADR_(int)];
+ char a4_l_[PADL_(int)]; int a4; char a4_r_[PADR_(int)];
+ char a5_l_[PADL_(int)]; int a5; char a5_r_[PADR_(int)];
+};
+struct msgsys_args {
+ char which_l_[PADL_(int)]; int which; char which_r_[PADR_(int)];
+ char a2_l_[PADL_(int)]; int a2; char a2_r_[PADR_(int)];
+ char a3_l_[PADL_(int)]; int a3; char a3_r_[PADR_(int)];
+ char a4_l_[PADL_(int)]; int a4; char a4_r_[PADR_(int)];
+ char a5_l_[PADL_(int)]; int a5; char a5_r_[PADR_(int)];
+ char a6_l_[PADL_(int)]; int a6; char a6_r_[PADR_(int)];
+};
+struct shmsys_args {
+ char which_l_[PADL_(int)]; int which; char which_r_[PADR_(int)];
+ char a2_l_[PADL_(int)]; int a2; char a2_r_[PADR_(int)];
+ char a3_l_[PADL_(int)]; int a3; char a3_r_[PADR_(int)];
+ char a4_l_[PADL_(int)]; int a4; char a4_r_[PADR_(int)];
+};
+struct pread_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(void *)]; void * buf; char buf_r_[PADR_(void *)];
+ char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+ char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)];
+ char offset_l_[PADL_(off_t)]; off_t offset; char offset_r_[PADR_(off_t)];
+};
+struct pwrite_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(const void *)]; const void * buf; char buf_r_[PADR_(const void *)];
+ char nbyte_l_[PADL_(size_t)]; size_t nbyte; char nbyte_r_[PADR_(size_t)];
+ char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)];
+ char offset_l_[PADL_(off_t)]; off_t offset; char offset_r_[PADR_(off_t)];
+};
+struct ntp_adjtime_args {
+ char tp_l_[PADL_(struct timex *)]; struct timex * tp; char tp_r_[PADR_(struct timex *)];
+};
+struct setgid_args {
+ char gid_l_[PADL_(gid_t)]; gid_t gid; char gid_r_[PADR_(gid_t)];
+};
+struct setegid_args {
+ char egid_l_[PADL_(gid_t)]; gid_t egid; char egid_r_[PADR_(gid_t)];
+};
+struct seteuid_args {
+ char euid_l_[PADL_(uid_t)]; uid_t euid; char euid_r_[PADR_(uid_t)];
+};
+struct stat_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char ub_l_[PADL_(struct stat *)]; struct stat * ub; char ub_r_[PADR_(struct stat *)];
+};
+struct fstat_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char sb_l_[PADL_(struct stat *)]; struct stat * sb; char sb_r_[PADR_(struct stat *)];
+};
+struct lstat_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char ub_l_[PADL_(struct stat *)]; struct stat * ub; char ub_r_[PADR_(struct stat *)];
+};
+struct pathconf_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char name_l_[PADL_(int)]; int name; char name_r_[PADR_(int)];
+};
+struct fpathconf_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char name_l_[PADL_(int)]; int name; char name_r_[PADR_(int)];
+};
+struct __getrlimit_args {
+ char which_l_[PADL_(u_int)]; u_int which; char which_r_[PADR_(u_int)];
+ char rlp_l_[PADL_(struct rlimit *)]; struct rlimit * rlp; char rlp_r_[PADR_(struct rlimit *)];
+};
+struct __setrlimit_args {
+ char which_l_[PADL_(u_int)]; u_int which; char which_r_[PADR_(u_int)];
+ char rlp_l_[PADL_(struct rlimit *)]; struct rlimit * rlp; char rlp_r_[PADR_(struct rlimit *)];
+};
+struct getdirentries_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)];
+ char count_l_[PADL_(u_int)]; u_int count; char count_r_[PADR_(u_int)];
+ char basep_l_[PADL_(long *)]; long * basep; char basep_r_[PADR_(long *)];
+};
+struct mmap_args {
+ char addr_l_[PADL_(caddr_t)]; caddr_t addr; char addr_r_[PADR_(caddr_t)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)];
+ char pos_l_[PADL_(off_t)]; off_t pos; char pos_r_[PADR_(off_t)];
+};
+struct lseek_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)];
+ char offset_l_[PADL_(off_t)]; off_t offset; char offset_r_[PADR_(off_t)];
+ char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)];
+};
+struct truncate_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)];
+ char length_l_[PADL_(off_t)]; off_t length; char length_r_[PADR_(off_t)];
+};
+struct ftruncate_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)];
+ char length_l_[PADL_(off_t)]; off_t length; char length_r_[PADR_(off_t)];
+};
+struct sysctl_args {
+ char name_l_[PADL_(int *)]; int * name; char name_r_[PADR_(int *)];
+ char namelen_l_[PADL_(u_int)]; u_int namelen; char namelen_r_[PADR_(u_int)];
+ char old_l_[PADL_(void *)]; void * old; char old_r_[PADR_(void *)];
+ char oldlenp_l_[PADL_(size_t *)]; size_t * oldlenp; char oldlenp_r_[PADR_(size_t *)];
+ char new_l_[PADL_(void *)]; void * new; char new_r_[PADR_(void *)];
+ char newlen_l_[PADL_(size_t)]; size_t newlen; char newlen_r_[PADR_(size_t)];
+};
+struct mlock_args {
+ char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+};
+struct munlock_args {
+ char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+};
+struct undelete_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+};
+struct futimes_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char tptr_l_[PADL_(struct timeval *)]; struct timeval * tptr; char tptr_r_[PADR_(struct timeval *)];
+};
+struct getpgid_args {
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+};
+struct poll_args {
+ char fds_l_[PADL_(struct pollfd *)]; struct pollfd * fds; char fds_r_[PADR_(struct pollfd *)];
+ char nfds_l_[PADL_(u_int)]; u_int nfds; char nfds_r_[PADR_(u_int)];
+ char timeout_l_[PADL_(int)]; int timeout; char timeout_r_[PADR_(int)];
+};
+struct __semctl_args {
+ char semid_l_[PADL_(int)]; int semid; char semid_r_[PADR_(int)];
+ char semnum_l_[PADL_(int)]; int semnum; char semnum_r_[PADR_(int)];
+ char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)];
+ char arg_l_[PADL_(union semun *)]; union semun * arg; char arg_r_[PADR_(union semun *)];
+};
+struct semget_args {
+ char key_l_[PADL_(key_t)]; key_t key; char key_r_[PADR_(key_t)];
+ char nsems_l_[PADL_(int)]; int nsems; char nsems_r_[PADR_(int)];
+ char semflg_l_[PADL_(int)]; int semflg; char semflg_r_[PADR_(int)];
+};
+struct semop_args {
+ char semid_l_[PADL_(int)]; int semid; char semid_r_[PADR_(int)];
+ char sops_l_[PADL_(struct sembuf *)]; struct sembuf * sops; char sops_r_[PADR_(struct sembuf *)];
+ char nsops_l_[PADL_(u_int)]; u_int nsops; char nsops_r_[PADR_(u_int)];
+};
+struct msgctl_args {
+ char msqid_l_[PADL_(int)]; int msqid; char msqid_r_[PADR_(int)];
+ char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)];
+ char buf_l_[PADL_(struct msqid_ds *)]; struct msqid_ds * buf; char buf_r_[PADR_(struct msqid_ds *)];
+};
+struct msgget_args {
+ char key_l_[PADL_(key_t)]; key_t key; char key_r_[PADR_(key_t)];
+ char msgflg_l_[PADL_(int)]; int msgflg; char msgflg_r_[PADR_(int)];
+};
+struct msgsnd_args {
+ char msqid_l_[PADL_(int)]; int msqid; char msqid_r_[PADR_(int)];
+ char msgp_l_[PADL_(void *)]; void * msgp; char msgp_r_[PADR_(void *)];
+ char msgsz_l_[PADL_(size_t)]; size_t msgsz; char msgsz_r_[PADR_(size_t)];
+ char msgflg_l_[PADL_(int)]; int msgflg; char msgflg_r_[PADR_(int)];
+};
+struct msgrcv_args {
+ char msqid_l_[PADL_(int)]; int msqid; char msqid_r_[PADR_(int)];
+ char msgp_l_[PADL_(void *)]; void * msgp; char msgp_r_[PADR_(void *)];
+ char msgsz_l_[PADL_(size_t)]; size_t msgsz; char msgsz_r_[PADR_(size_t)];
+ char msgtyp_l_[PADL_(long)]; long msgtyp; char msgtyp_r_[PADR_(long)];
+ char msgflg_l_[PADL_(int)]; int msgflg; char msgflg_r_[PADR_(int)];
+};
+struct shmat_args {
+ char shmid_l_[PADL_(int)]; int shmid; char shmid_r_[PADR_(int)];
+ char shmaddr_l_[PADL_(void *)]; void * shmaddr; char shmaddr_r_[PADR_(void *)];
+ char shmflg_l_[PADL_(int)]; int shmflg; char shmflg_r_[PADR_(int)];
+};
+struct shmctl_args {
+ char shmid_l_[PADL_(int)]; int shmid; char shmid_r_[PADR_(int)];
+ char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)];
+ char buf_l_[PADL_(struct shmid_ds *)]; struct shmid_ds * buf; char buf_r_[PADR_(struct shmid_ds *)];
+};
+struct shmdt_args {
+ char shmaddr_l_[PADL_(void *)]; void * shmaddr; char shmaddr_r_[PADR_(void *)];
+};
+struct shmget_args {
+ char key_l_[PADL_(key_t)]; key_t key; char key_r_[PADR_(key_t)];
+ char size_l_[PADL_(int)]; int size; char size_r_[PADR_(int)];
+ char shmflg_l_[PADL_(int)]; int shmflg; char shmflg_r_[PADR_(int)];
+};
+struct clock_gettime_args {
+ char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)];
+ char tp_l_[PADL_(struct timespec *)]; struct timespec * tp; char tp_r_[PADR_(struct timespec *)];
+};
+struct clock_settime_args {
+ char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)];
+ char tp_l_[PADL_(const struct timespec *)]; const struct timespec * tp; char tp_r_[PADR_(const struct timespec *)];
+};
+struct clock_getres_args {
+ char clock_id_l_[PADL_(clockid_t)]; clockid_t clock_id; char clock_id_r_[PADR_(clockid_t)];
+ char tp_l_[PADL_(struct timespec *)]; struct timespec * tp; char tp_r_[PADR_(struct timespec *)];
+};
+struct nanosleep_args {
+ char rqtp_l_[PADL_(const struct timespec *)]; const struct timespec * rqtp; char rqtp_r_[PADR_(const struct timespec *)];
+ char rmtp_l_[PADL_(struct timespec *)]; struct timespec * rmtp; char rmtp_r_[PADR_(struct timespec *)];
+};
+struct minherit_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+ char inherit_l_[PADL_(int)]; int inherit; char inherit_r_[PADR_(int)];
+};
+struct rfork_args {
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct openbsd_poll_args {
+ char fds_l_[PADL_(struct pollfd *)]; struct pollfd * fds; char fds_r_[PADR_(struct pollfd *)];
+ char nfds_l_[PADL_(u_int)]; u_int nfds; char nfds_r_[PADR_(u_int)];
+ char timeout_l_[PADL_(int)]; int timeout; char timeout_r_[PADR_(int)];
+};
+struct issetugid_args {
+ register_t dummy;
+};
+struct lchown_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char uid_l_[PADL_(int)]; int uid; char uid_r_[PADR_(int)];
+ char gid_l_[PADL_(int)]; int gid; char gid_r_[PADR_(int)];
+};
+struct getdents_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)];
+ char count_l_[PADL_(size_t)]; size_t count; char count_r_[PADR_(size_t)];
+};
+struct lchmod_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char mode_l_[PADL_(mode_t)]; mode_t mode; char mode_r_[PADR_(mode_t)];
+};
+struct lutimes_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char tptr_l_[PADL_(struct timeval *)]; struct timeval * tptr; char tptr_r_[PADR_(struct timeval *)];
+};
+struct nstat_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char ub_l_[PADL_(struct nstat *)]; struct nstat * ub; char ub_r_[PADR_(struct nstat *)];
+};
+struct nfstat_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char sb_l_[PADL_(struct nstat *)]; struct nstat * sb; char sb_r_[PADR_(struct nstat *)];
+};
+struct nlstat_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char ub_l_[PADL_(struct nstat *)]; struct nstat * ub; char ub_r_[PADR_(struct nstat *)];
+};
+struct fhstatfs_args {
+ char u_fhp_l_[PADL_(const struct fhandle *)]; const struct fhandle * u_fhp; char u_fhp_r_[PADR_(const struct fhandle *)];
+ char buf_l_[PADL_(struct statfs *)]; struct statfs * buf; char buf_r_[PADR_(struct statfs *)];
+};
+struct fhopen_args {
+ char u_fhp_l_[PADL_(const struct fhandle *)]; const struct fhandle * u_fhp; char u_fhp_r_[PADR_(const struct fhandle *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct fhstat_args {
+ char u_fhp_l_[PADL_(const struct fhandle *)]; const struct fhandle * u_fhp; char u_fhp_r_[PADR_(const struct fhandle *)];
+ char sb_l_[PADL_(struct stat *)]; struct stat * sb; char sb_r_[PADR_(struct stat *)];
+};
+struct modnext_args {
+ char modid_l_[PADL_(int)]; int modid; char modid_r_[PADR_(int)];
+};
+struct modstat_args {
+ char modid_l_[PADL_(int)]; int modid; char modid_r_[PADR_(int)];
+ char stat_l_[PADL_(struct module_stat *)]; struct module_stat * stat; char stat_r_[PADR_(struct module_stat *)];
+};
+struct modfnext_args {
+ char modid_l_[PADL_(int)]; int modid; char modid_r_[PADR_(int)];
+};
+struct modfind_args {
+ char name_l_[PADL_(const char *)]; const char * name; char name_r_[PADR_(const char *)];
+};
+struct kldload_args {
+ char file_l_[PADL_(const char *)]; const char * file; char file_r_[PADR_(const char *)];
+};
+struct kldunload_args {
+ char fileid_l_[PADL_(int)]; int fileid; char fileid_r_[PADR_(int)];
+};
+struct kldfind_args {
+ char file_l_[PADL_(const char *)]; const char * file; char file_r_[PADR_(const char *)];
+};
+struct kldnext_args {
+ char fileid_l_[PADL_(int)]; int fileid; char fileid_r_[PADR_(int)];
+};
+struct kldstat_args {
+ char fileid_l_[PADL_(int)]; int fileid; char fileid_r_[PADR_(int)];
+ char stat_l_[PADL_(struct kld_file_stat *)]; struct kld_file_stat * stat; char stat_r_[PADR_(struct kld_file_stat *)];
+};
+struct kldfirstmod_args {
+ char fileid_l_[PADL_(int)]; int fileid; char fileid_r_[PADR_(int)];
+};
+struct getsid_args {
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+};
+struct setresuid_args {
+ char ruid_l_[PADL_(uid_t)]; uid_t ruid; char ruid_r_[PADR_(uid_t)];
+ char euid_l_[PADL_(uid_t)]; uid_t euid; char euid_r_[PADR_(uid_t)];
+ char suid_l_[PADL_(uid_t)]; uid_t suid; char suid_r_[PADR_(uid_t)];
+};
+struct setresgid_args {
+ char rgid_l_[PADL_(gid_t)]; gid_t rgid; char rgid_r_[PADR_(gid_t)];
+ char egid_l_[PADL_(gid_t)]; gid_t egid; char egid_r_[PADR_(gid_t)];
+ char sgid_l_[PADL_(gid_t)]; gid_t sgid; char sgid_r_[PADR_(gid_t)];
+};
+struct aio_return_args {
+ char aiocbp_l_[PADL_(struct aiocb *)]; struct aiocb * aiocbp; char aiocbp_r_[PADR_(struct aiocb *)];
+};
+struct aio_suspend_args {
+ char aiocbp_l_[PADL_(struct aiocb *const *)]; struct aiocb *const * aiocbp; char aiocbp_r_[PADR_(struct aiocb *const *)];
+ char nent_l_[PADL_(int)]; int nent; char nent_r_[PADR_(int)];
+ char timeout_l_[PADL_(const struct timespec *)]; const struct timespec * timeout; char timeout_r_[PADR_(const struct timespec *)];
+};
+struct aio_cancel_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char aiocbp_l_[PADL_(struct aiocb *)]; struct aiocb * aiocbp; char aiocbp_r_[PADR_(struct aiocb *)];
+};
+struct aio_error_args {
+ char aiocbp_l_[PADL_(struct aiocb *)]; struct aiocb * aiocbp; char aiocbp_r_[PADR_(struct aiocb *)];
+};
+struct aio_read_args {
+ char aiocbp_l_[PADL_(struct aiocb *)]; struct aiocb * aiocbp; char aiocbp_r_[PADR_(struct aiocb *)];
+};
+struct aio_write_args {
+ char aiocbp_l_[PADL_(struct aiocb *)]; struct aiocb * aiocbp; char aiocbp_r_[PADR_(struct aiocb *)];
+};
+struct lio_listio_args {
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+ char acb_list_l_[PADL_(struct aiocb *const *)]; struct aiocb *const * acb_list; char acb_list_r_[PADR_(struct aiocb *const *)];
+ char nent_l_[PADL_(int)]; int nent; char nent_r_[PADR_(int)];
+ char sig_l_[PADL_(struct sigevent *)]; struct sigevent * sig; char sig_r_[PADR_(struct sigevent *)];
+};
+struct yield_args {
+ register_t dummy;
+};
+struct mlockall_args {
+ char how_l_[PADL_(int)]; int how; char how_r_[PADR_(int)];
+};
+struct munlockall_args {
+ register_t dummy;
+};
+struct __getcwd_args {
+ char buf_l_[PADL_(u_char *)]; u_char * buf; char buf_r_[PADR_(u_char *)];
+ char buflen_l_[PADL_(u_int)]; u_int buflen; char buflen_r_[PADR_(u_int)];
+};
+struct sched_setparam_args {
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+ char param_l_[PADL_(const struct sched_param *)]; const struct sched_param * param; char param_r_[PADR_(const struct sched_param *)];
+};
+struct sched_getparam_args {
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+ char param_l_[PADL_(struct sched_param *)]; struct sched_param * param; char param_r_[PADR_(struct sched_param *)];
+};
+struct sched_setscheduler_args {
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+ char policy_l_[PADL_(int)]; int policy; char policy_r_[PADR_(int)];
+ char param_l_[PADL_(const struct sched_param *)]; const struct sched_param * param; char param_r_[PADR_(const struct sched_param *)];
+};
+struct sched_getscheduler_args {
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+};
+struct sched_yield_args {
+ register_t dummy;
+};
+struct sched_get_priority_max_args {
+ char policy_l_[PADL_(int)]; int policy; char policy_r_[PADR_(int)];
+};
+struct sched_get_priority_min_args {
+ char policy_l_[PADL_(int)]; int policy; char policy_r_[PADR_(int)];
+};
+struct sched_rr_get_interval_args {
+ char pid_l_[PADL_(pid_t)]; pid_t pid; char pid_r_[PADR_(pid_t)];
+ char interval_l_[PADL_(struct timespec *)]; struct timespec * interval; char interval_r_[PADR_(struct timespec *)];
+};
+struct utrace_args {
+ char addr_l_[PADL_(const void *)]; const void * addr; char addr_r_[PADR_(const void *)];
+ char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_t)];
+};
+struct sendfile_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char offset_l_[PADL_(off_t)]; off_t offset; char offset_r_[PADR_(off_t)];
+ char nbytes_l_[PADL_(size_t)]; size_t nbytes; char nbytes_r_[PADR_(size_t)];
+ char hdtr_l_[PADL_(struct sf_hdtr *)]; struct sf_hdtr * hdtr; char hdtr_r_[PADR_(struct sf_hdtr *)];
+ char sbytes_l_[PADL_(off_t *)]; off_t * sbytes; char sbytes_r_[PADR_(off_t *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct kldsym_args {
+ char fileid_l_[PADL_(int)]; int fileid; char fileid_r_[PADR_(int)];
+ char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)];
+ char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)];
+};
+struct jail_args {
+ char jail_l_[PADL_(struct jail *)]; struct jail * jail; char jail_r_[PADR_(struct jail *)];
+};
+struct sigprocmask_args {
+ char how_l_[PADL_(int)]; int how; char how_r_[PADR_(int)];
+ char set_l_[PADL_(const sigset_t *)]; const sigset_t * set; char set_r_[PADR_(const sigset_t *)];
+ char oset_l_[PADL_(sigset_t *)]; sigset_t * oset; char oset_r_[PADR_(sigset_t *)];
+};
+struct sigsuspend_args {
+ char sigmask_l_[PADL_(const sigset_t *)]; const sigset_t * sigmask; char sigmask_r_[PADR_(const sigset_t *)];
+};
+struct sigaction_args {
+ char sig_l_[PADL_(int)]; int sig; char sig_r_[PADR_(int)];
+ char act_l_[PADL_(const struct sigaction *)]; const struct sigaction * act; char act_r_[PADR_(const struct sigaction *)];
+ char oact_l_[PADL_(struct sigaction *)]; struct sigaction * oact; char oact_r_[PADR_(struct sigaction *)];
+};
+struct sigpending_args {
+ char set_l_[PADL_(sigset_t *)]; sigset_t * set; char set_r_[PADR_(sigset_t *)];
+};
+struct sigreturn_args {
+ char sigcntxp_l_[PADL_(const struct __ucontext *)]; const struct __ucontext * sigcntxp; char sigcntxp_r_[PADR_(const struct __ucontext *)];
+};
+struct __acl_get_file_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+ char aclp_l_[PADL_(struct acl *)]; struct acl * aclp; char aclp_r_[PADR_(struct acl *)];
+};
+struct __acl_set_file_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+ char aclp_l_[PADL_(struct acl *)]; struct acl * aclp; char aclp_r_[PADR_(struct acl *)];
+};
+struct __acl_get_fd_args {
+ char filedes_l_[PADL_(int)]; int filedes; char filedes_r_[PADR_(int)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+ char aclp_l_[PADL_(struct acl *)]; struct acl * aclp; char aclp_r_[PADR_(struct acl *)];
+};
+struct __acl_set_fd_args {
+ char filedes_l_[PADL_(int)]; int filedes; char filedes_r_[PADR_(int)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+ char aclp_l_[PADL_(struct acl *)]; struct acl * aclp; char aclp_r_[PADR_(struct acl *)];
+};
+struct __acl_delete_file_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+};
+struct __acl_delete_fd_args {
+ char filedes_l_[PADL_(int)]; int filedes; char filedes_r_[PADR_(int)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+};
+struct __acl_aclcheck_file_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+ char aclp_l_[PADL_(struct acl *)]; struct acl * aclp; char aclp_r_[PADR_(struct acl *)];
+};
+struct __acl_aclcheck_fd_args {
+ char filedes_l_[PADL_(int)]; int filedes; char filedes_r_[PADR_(int)];
+ char type_l_[PADL_(acl_type_t)]; acl_type_t type; char type_r_[PADR_(acl_type_t)];
+ char aclp_l_[PADL_(struct acl *)]; struct acl * aclp; char aclp_r_[PADR_(struct acl *)];
+};
+struct extattrctl_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)];
+ char filename_l_[PADL_(const char *)]; const char * filename; char filename_r_[PADR_(const char *)];
+ char attrnamespace_l_[PADL_(int)]; int attrnamespace; char attrnamespace_r_[PADR_(int)];
+ char attrname_l_[PADL_(const char *)]; const char * attrname; char attrname_r_[PADR_(const char *)];
+};
+struct extattr_set_file_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char attrnamespace_l_[PADL_(int)]; int attrnamespace; char attrnamespace_r_[PADR_(int)];
+ char attrname_l_[PADL_(const char *)]; const char * attrname; char attrname_r_[PADR_(const char *)];
+ char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)];
+ char nbytes_l_[PADL_(size_t)]; size_t nbytes; char nbytes_r_[PADR_(size_t)];
+};
+struct extattr_get_file_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char attrnamespace_l_[PADL_(int)]; int attrnamespace; char attrnamespace_r_[PADR_(int)];
+ char attrname_l_[PADL_(const char *)]; const char * attrname; char attrname_r_[PADR_(const char *)];
+ char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)];
+ char nbytes_l_[PADL_(size_t)]; size_t nbytes; char nbytes_r_[PADR_(size_t)];
+};
+struct extattr_delete_file_args {
+ char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
+ char attrnamespace_l_[PADL_(int)]; int attrnamespace; char attrnamespace_r_[PADR_(int)];
+ char attrname_l_[PADL_(const char *)]; const char * attrname; char attrname_r_[PADR_(const char *)];
+};
+struct aio_waitcomplete_args {
+ char aiocbp_l_[PADL_(struct aiocb **)]; struct aiocb ** aiocbp; char aiocbp_r_[PADR_(struct aiocb **)];
+ char timeout_l_[PADL_(struct timespec *)]; struct timespec * timeout; char timeout_r_[PADR_(struct timespec *)];
+};
+struct getresuid_args {
+ char ruid_l_[PADL_(uid_t *)]; uid_t * ruid; char ruid_r_[PADR_(uid_t *)];
+ char euid_l_[PADL_(uid_t *)]; uid_t * euid; char euid_r_[PADR_(uid_t *)];
+ char suid_l_[PADL_(uid_t *)]; uid_t * suid; char suid_r_[PADR_(uid_t *)];
+};
+struct getresgid_args {
+ char rgid_l_[PADL_(gid_t *)]; gid_t * rgid; char rgid_r_[PADR_(gid_t *)];
+ char egid_l_[PADL_(gid_t *)]; gid_t * egid; char egid_r_[PADR_(gid_t *)];
+ char sgid_l_[PADL_(gid_t *)]; gid_t * sgid; char sgid_r_[PADR_(gid_t *)];
+};
+struct kqueue_args {
+ register_t dummy;
+};
+struct kevent_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char changelist_l_[PADL_(const struct kevent *)]; const struct kevent * changelist; char changelist_r_[PADR_(const struct kevent *)];
+ char nchanges_l_[PADL_(int)]; int nchanges; char nchanges_r_[PADR_(int)];
+ char eventlist_l_[PADL_(struct kevent *)]; struct kevent * eventlist; char eventlist_r_[PADR_(struct kevent *)];
+ char nevents_l_[PADL_(int)]; int nevents; char nevents_r_[PADR_(int)];
+ char timeout_l_[PADL_(const struct timespec *)]; const struct timespec * timeout; char timeout_r_[PADR_(const struct timespec *)];
+};
+struct __cap_get_proc_args {
+ char cap_p_l_[PADL_(struct cap *)]; struct cap * cap_p; char cap_p_r_[PADR_(struct cap *)];
+};
+struct __cap_set_proc_args {
+ char cap_p_l_[PADL_(struct cap *)]; struct cap * cap_p; char cap_p_r_[PADR_(struct cap *)];
+};
+struct __cap_get_fd_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char cap_p_l_[PADL_(struct cap *)]; struct cap * cap_p; char cap_p_r_[PADR_(struct cap *)];
+};
+struct __cap_get_file_args {
+ char path_p_l_[PADL_(const char *)]; const char * path_p; char path_p_r_[PADR_(const char *)];
+ char cap_p_l_[PADL_(struct cap *)]; struct cap * cap_p; char cap_p_r_[PADR_(struct cap *)];
+};
+struct __cap_set_fd_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char cap_p_l_[PADL_(struct cap *)]; struct cap * cap_p; char cap_p_r_[PADR_(struct cap *)];
+};
+struct __cap_set_file_args {
+ char path_p_l_[PADL_(const char *)]; const char * path_p; char path_p_r_[PADR_(const char *)];
+ char cap_p_l_[PADL_(struct cap *)]; struct cap * cap_p; char cap_p_r_[PADR_(struct cap *)];
+};
+struct extattr_set_fd_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char attrnamespace_l_[PADL_(int)]; int attrnamespace; char attrnamespace_r_[PADR_(int)];
+ char attrname_l_[PADL_(const char *)]; const char * attrname; char attrname_r_[PADR_(const char *)];
+ char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)];
+ char nbytes_l_[PADL_(size_t)]; size_t nbytes; char nbytes_r_[PADR_(size_t)];
+};
+struct extattr_get_fd_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char attrnamespace_l_[PADL_(int)]; int attrnamespace; char attrnamespace_r_[PADR_(int)];
+ char attrname_l_[PADL_(const char *)]; const char * attrname; char attrname_r_[PADR_(const char *)];
+ char data_l_[PADL_(void *)]; void * data; char data_r_[PADR_(void *)];
+ char nbytes_l_[PADL_(size_t)]; size_t nbytes; char nbytes_r_[PADR_(size_t)];
+};
+struct extattr_delete_fd_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char attrnamespace_l_[PADL_(int)]; int attrnamespace; char attrnamespace_r_[PADR_(int)];
+ char attrname_l_[PADL_(const char *)]; const char * attrname; char attrname_r_[PADR_(const char *)];
+};
+struct __setugid_args {
+ char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)];
+};
+struct nfsclnt_args {
+ char flag_l_[PADL_(int)]; int flag; char flag_r_[PADR_(int)];
+ char argp_l_[PADL_(caddr_t)]; caddr_t argp; char argp_r_[PADR_(caddr_t)];
+};
+struct eaccess_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct nmount_args {
+ char iovp_l_[PADL_(struct iovec *)]; struct iovec * iovp; char iovp_r_[PADR_(struct iovec *)];
+ char iovcnt_l_[PADL_(unsigned int)]; unsigned int iovcnt; char iovcnt_r_[PADR_(unsigned int)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct kse_exit_args {
+ register_t dummy;
+};
+struct kse_wakeup_args {
+ register_t dummy;
+};
+struct kse_new_args {
+ char mbx_l_[PADL_(struct kse_mailbox *)]; struct kse_mailbox * mbx; char mbx_r_[PADR_(struct kse_mailbox *)];
+ char new_grp_flag_l_[PADL_(int)]; int new_grp_flag; char new_grp_flag_r_[PADR_(int)];
+};
+struct thread_wakeup_args {
+ char tmbx_l_[PADL_(struct thread_mailbox *)]; struct thread_mailbox * tmbx; char tmbx_r_[PADR_(struct thread_mailbox *)];
+};
+struct kse_yield_args {
+ register_t dummy;
+};
+int nosys(struct thread *, struct nosys_args *);
+void sys_exit(struct thread *, struct sys_exit_args *);
+int fork(struct thread *, struct fork_args *);
+int read(struct thread *, struct read_args *);
+int write(struct thread *, struct write_args *);
+int open(struct thread *, struct open_args *);
+int close(struct thread *, struct close_args *);
+int wait4(struct thread *, struct wait_args *);
+int link(struct thread *, struct link_args *);
+int unlink(struct thread *, struct unlink_args *);
+int chdir(struct thread *, struct chdir_args *);
+int fchdir(struct thread *, struct fchdir_args *);
+int mknod(struct thread *, struct mknod_args *);
+int chmod(struct thread *, struct chmod_args *);
+int chown(struct thread *, struct chown_args *);
+int obreak(struct thread *, struct obreak_args *);
+int getfsstat(struct thread *, struct getfsstat_args *);
+int getpid(struct thread *, struct getpid_args *);
+int mount(struct thread *, struct mount_args *);
+int unmount(struct thread *, struct unmount_args *);
+int setuid(struct thread *, struct setuid_args *);
+int getuid(struct thread *, struct getuid_args *);
+int geteuid(struct thread *, struct geteuid_args *);
+int ptrace(struct thread *, struct ptrace_args *);
+int recvmsg(struct thread *, struct recvmsg_args *);
+int sendmsg(struct thread *, struct sendmsg_args *);
+int recvfrom(struct thread *, struct recvfrom_args *);
+int accept(struct thread *, struct accept_args *);
+int getpeername(struct thread *, struct getpeername_args *);
+int getsockname(struct thread *, struct getsockname_args *);
+int access(struct thread *, struct access_args *);
+int chflags(struct thread *, struct chflags_args *);
+int fchflags(struct thread *, struct fchflags_args *);
+int sync(struct thread *, struct sync_args *);
+int kill(struct thread *, struct kill_args *);
+int getppid(struct thread *, struct getppid_args *);
+int dup(struct thread *, struct dup_args *);
+int pipe(struct thread *, struct pipe_args *);
+int getegid(struct thread *, struct getegid_args *);
+int profil(struct thread *, struct profil_args *);
+int ktrace(struct thread *, struct ktrace_args *);
+int getgid(struct thread *, struct getgid_args *);
+int getlogin(struct thread *, struct getlogin_args *);
+int setlogin(struct thread *, struct setlogin_args *);
+int acct(struct thread *, struct acct_args *);
+int sigaltstack(struct thread *, struct sigaltstack_args *);
+int ioctl(struct thread *, struct ioctl_args *);
+int reboot(struct thread *, struct reboot_args *);
+int revoke(struct thread *, struct revoke_args *);
+int symlink(struct thread *, struct symlink_args *);
+int readlink(struct thread *, struct readlink_args *);
+int execve(struct thread *, struct execve_args *);
+int umask(struct thread *, struct umask_args *);
+int chroot(struct thread *, struct chroot_args *);
+int msync(struct thread *, struct msync_args *);
+int vfork(struct thread *, struct vfork_args *);
+int sbrk(struct thread *, struct sbrk_args *);
+int sstk(struct thread *, struct sstk_args *);
+int ovadvise(struct thread *, struct ovadvise_args *);
+int munmap(struct thread *, struct munmap_args *);
+int mprotect(struct thread *, struct mprotect_args *);
+int madvise(struct thread *, struct madvise_args *);
+int mincore(struct thread *, struct mincore_args *);
+int getgroups(struct thread *, struct getgroups_args *);
+int setgroups(struct thread *, struct setgroups_args *);
+int getpgrp(struct thread *, struct getpgrp_args *);
+int setpgid(struct thread *, struct setpgid_args *);
+int setitimer(struct thread *, struct setitimer_args *);
+int swapon(struct thread *, struct swapon_args *);
+int getitimer(struct thread *, struct getitimer_args *);
+int getdtablesize(struct thread *, struct getdtablesize_args *);
+int dup2(struct thread *, struct dup2_args *);
+int fcntl(struct thread *, struct fcntl_args *);
+int select(struct thread *, struct select_args *);
+int fsync(struct thread *, struct fsync_args *);
+int setpriority(struct thread *, struct setpriority_args *);
+int socket(struct thread *, struct socket_args *);
+int connect(struct thread *, struct connect_args *);
+int getpriority(struct thread *, struct getpriority_args *);
+int osigreturn(struct thread *, struct osigreturn_args *);
+int bind(struct thread *, struct bind_args *);
+int setsockopt(struct thread *, struct setsockopt_args *);
+int listen(struct thread *, struct listen_args *);
+int gettimeofday(struct thread *, struct gettimeofday_args *);
+int getrusage(struct thread *, struct getrusage_args *);
+int getsockopt(struct thread *, struct getsockopt_args *);
+int readv(struct thread *, struct readv_args *);
+int writev(struct thread *, struct writev_args *);
+int settimeofday(struct thread *, struct settimeofday_args *);
+int fchown(struct thread *, struct fchown_args *);
+int fchmod(struct thread *, struct fchmod_args *);
+int setreuid(struct thread *, struct setreuid_args *);
+int setregid(struct thread *, struct setregid_args *);
+int rename(struct thread *, struct rename_args *);
+int flock(struct thread *, struct flock_args *);
+int mkfifo(struct thread *, struct mkfifo_args *);
+int sendto(struct thread *, struct sendto_args *);
+int shutdown(struct thread *, struct shutdown_args *);
+int socketpair(struct thread *, struct socketpair_args *);
+int mkdir(struct thread *, struct mkdir_args *);
+int rmdir(struct thread *, struct rmdir_args *);
+int utimes(struct thread *, struct utimes_args *);
+int adjtime(struct thread *, struct adjtime_args *);
+int setsid(struct thread *, struct setsid_args *);
+int quotactl(struct thread *, struct quotactl_args *);
+int nfssvc(struct thread *, struct nfssvc_args *);
+int statfs(struct thread *, struct statfs_args *);
+int fstatfs(struct thread *, struct fstatfs_args *);
+int getfh(struct thread *, struct getfh_args *);
+int getdomainname(struct thread *, struct getdomainname_args *);
+int setdomainname(struct thread *, struct setdomainname_args *);
+int uname(struct thread *, struct uname_args *);
+int sysarch(struct thread *, struct sysarch_args *);
+int rtprio(struct thread *, struct rtprio_args *);
+int semsys(struct thread *, struct semsys_args *);
+int msgsys(struct thread *, struct msgsys_args *);
+int shmsys(struct thread *, struct shmsys_args *);
+int pread(struct thread *, struct pread_args *);
+int pwrite(struct thread *, struct pwrite_args *);
+int ntp_adjtime(struct thread *, struct ntp_adjtime_args *);
+int setgid(struct thread *, struct setgid_args *);
+int setegid(struct thread *, struct setegid_args *);
+int seteuid(struct thread *, struct seteuid_args *);
+int stat(struct thread *, struct stat_args *);
+int fstat(struct thread *, struct fstat_args *);
+int lstat(struct thread *, struct lstat_args *);
+int pathconf(struct thread *, struct pathconf_args *);
+int fpathconf(struct thread *, struct fpathconf_args *);
+int getrlimit(struct thread *, struct __getrlimit_args *);
+int setrlimit(struct thread *, struct __setrlimit_args *);
+int getdirentries(struct thread *, struct getdirentries_args *);
+int mmap(struct thread *, struct mmap_args *);
+int lseek(struct thread *, struct lseek_args *);
+int truncate(struct thread *, struct truncate_args *);
+int ftruncate(struct thread *, struct ftruncate_args *);
+int __sysctl(struct thread *, struct sysctl_args *);
+int mlock(struct thread *, struct mlock_args *);
+int munlock(struct thread *, struct munlock_args *);
+int undelete(struct thread *, struct undelete_args *);
+int futimes(struct thread *, struct futimes_args *);
+int getpgid(struct thread *, struct getpgid_args *);
+int poll(struct thread *, struct poll_args *);
+int lkmnosys(struct thread *, struct nosys_args *);
+int __semctl(struct thread *, struct __semctl_args *);
+int semget(struct thread *, struct semget_args *);
+int semop(struct thread *, struct semop_args *);
+int msgctl(struct thread *, struct msgctl_args *);
+int msgget(struct thread *, struct msgget_args *);
+int msgsnd(struct thread *, struct msgsnd_args *);
+int msgrcv(struct thread *, struct msgrcv_args *);
+int shmat(struct thread *, struct shmat_args *);
+int shmctl(struct thread *, struct shmctl_args *);
+int shmdt(struct thread *, struct shmdt_args *);
+int shmget(struct thread *, struct shmget_args *);
+int clock_gettime(struct thread *, struct clock_gettime_args *);
+int clock_settime(struct thread *, struct clock_settime_args *);
+int clock_getres(struct thread *, struct clock_getres_args *);
+int nanosleep(struct thread *, struct nanosleep_args *);
+int minherit(struct thread *, struct minherit_args *);
+int rfork(struct thread *, struct rfork_args *);
+int openbsd_poll(struct thread *, struct openbsd_poll_args *);
+int issetugid(struct thread *, struct issetugid_args *);
+int lchown(struct thread *, struct lchown_args *);
+int getdents(struct thread *, struct getdents_args *);
+int lchmod(struct thread *, struct lchmod_args *);
+int lutimes(struct thread *, struct lutimes_args *);
+int nstat(struct thread *, struct nstat_args *);
+int nfstat(struct thread *, struct nfstat_args *);
+int nlstat(struct thread *, struct nlstat_args *);
+int fhstatfs(struct thread *, struct fhstatfs_args *);
+int fhopen(struct thread *, struct fhopen_args *);
+int fhstat(struct thread *, struct fhstat_args *);
+int modnext(struct thread *, struct modnext_args *);
+int modstat(struct thread *, struct modstat_args *);
+int modfnext(struct thread *, struct modfnext_args *);
+int modfind(struct thread *, struct modfind_args *);
+int kldload(struct thread *, struct kldload_args *);
+int kldunload(struct thread *, struct kldunload_args *);
+int kldfind(struct thread *, struct kldfind_args *);
+int kldnext(struct thread *, struct kldnext_args *);
+int kldstat(struct thread *, struct kldstat_args *);
+int kldfirstmod(struct thread *, struct kldfirstmod_args *);
+int getsid(struct thread *, struct getsid_args *);
+int setresuid(struct thread *, struct setresuid_args *);
+int setresgid(struct thread *, struct setresgid_args *);
+int aio_return(struct thread *, struct aio_return_args *);
+int aio_suspend(struct thread *, struct aio_suspend_args *);
+int aio_cancel(struct thread *, struct aio_cancel_args *);
+int aio_error(struct thread *, struct aio_error_args *);
+int aio_read(struct thread *, struct aio_read_args *);
+int aio_write(struct thread *, struct aio_write_args *);
+int lio_listio(struct thread *, struct lio_listio_args *);
+int yield(struct thread *, struct yield_args *);
+int mlockall(struct thread *, struct mlockall_args *);
+int munlockall(struct thread *, struct munlockall_args *);
+int __getcwd(struct thread *, struct __getcwd_args *);
+int sched_setparam(struct thread *, struct sched_setparam_args *);
+int sched_getparam(struct thread *, struct sched_getparam_args *);
+int sched_setscheduler(struct thread *, struct sched_setscheduler_args *);
+int sched_getscheduler(struct thread *, struct sched_getscheduler_args *);
+int sched_yield(struct thread *, struct sched_yield_args *);
+int sched_get_priority_max(struct thread *, struct sched_get_priority_max_args *);
+int sched_get_priority_min(struct thread *, struct sched_get_priority_min_args *);
+int sched_rr_get_interval(struct thread *, struct sched_rr_get_interval_args *);
+int utrace(struct thread *, struct utrace_args *);
+int sendfile(struct thread *, struct sendfile_args *);
+int kldsym(struct thread *, struct kldsym_args *);
+int jail(struct thread *, struct jail_args *);
+int sigprocmask(struct thread *, struct sigprocmask_args *);
+int sigsuspend(struct thread *, struct sigsuspend_args *);
+int sigaction(struct thread *, struct sigaction_args *);
+int sigpending(struct thread *, struct sigpending_args *);
+int sigreturn(struct thread *, struct sigreturn_args *);
+int __acl_get_file(struct thread *, struct __acl_get_file_args *);
+int __acl_set_file(struct thread *, struct __acl_set_file_args *);
+int __acl_get_fd(struct thread *, struct __acl_get_fd_args *);
+int __acl_set_fd(struct thread *, struct __acl_set_fd_args *);
+int __acl_delete_file(struct thread *, struct __acl_delete_file_args *);
+int __acl_delete_fd(struct thread *, struct __acl_delete_fd_args *);
+int __acl_aclcheck_file(struct thread *, struct __acl_aclcheck_file_args *);
+int __acl_aclcheck_fd(struct thread *, struct __acl_aclcheck_fd_args *);
+int extattrctl(struct thread *, struct extattrctl_args *);
+int extattr_set_file(struct thread *, struct extattr_set_file_args *);
+int extattr_get_file(struct thread *, struct extattr_get_file_args *);
+int extattr_delete_file(struct thread *, struct extattr_delete_file_args *);
+int aio_waitcomplete(struct thread *, struct aio_waitcomplete_args *);
+int getresuid(struct thread *, struct getresuid_args *);
+int getresgid(struct thread *, struct getresgid_args *);
+int kqueue(struct thread *, struct kqueue_args *);
+int kevent(struct thread *, struct kevent_args *);
+int __cap_get_proc(struct thread *, struct __cap_get_proc_args *);
+int __cap_set_proc(struct thread *, struct __cap_set_proc_args *);
+int __cap_get_fd(struct thread *, struct __cap_get_fd_args *);
+int __cap_get_file(struct thread *, struct __cap_get_file_args *);
+int __cap_set_fd(struct thread *, struct __cap_set_fd_args *);
+int __cap_set_file(struct thread *, struct __cap_set_file_args *);
+int lkmressys(struct thread *, struct nosys_args *);
+int extattr_set_fd(struct thread *, struct extattr_set_fd_args *);
+int extattr_get_fd(struct thread *, struct extattr_get_fd_args *);
+int extattr_delete_fd(struct thread *, struct extattr_delete_fd_args *);
+int __setugid(struct thread *, struct __setugid_args *);
+int nfsclnt(struct thread *, struct nfsclnt_args *);
+int eaccess(struct thread *, struct eaccess_args *);
+int nmount(struct thread *, struct nmount_args *);
+int kse_exit(struct thread *, struct kse_exit_args *);
+int kse_wakeup(struct thread *, struct kse_wakeup_args *);
+int kse_new(struct thread *, struct kse_new_args *);
+int thread_wakeup(struct thread *, struct thread_wakeup_args *);
+int kse_yield(struct thread *, struct kse_yield_args *);
+
+#ifdef COMPAT_43
+
+struct ocreat_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char mode_l_[PADL_(int)]; int mode; char mode_r_[PADR_(int)];
+};
+struct olseek_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char offset_l_[PADL_(long)]; long offset; char offset_r_[PADR_(long)];
+ char whence_l_[PADL_(int)]; int whence; char whence_r_[PADR_(int)];
+};
+struct ostat_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
+};
+struct olstat_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char ub_l_[PADL_(struct ostat *)]; struct ostat * ub; char ub_r_[PADR_(struct ostat *)];
+};
+struct osigaction_args {
+ char signum_l_[PADL_(int)]; int signum; char signum_r_[PADR_(int)];
+ char nsa_l_[PADL_(struct osigaction *)]; struct osigaction * nsa; char nsa_r_[PADR_(struct osigaction *)];
+ char osa_l_[PADL_(struct osigaction *)]; struct osigaction * osa; char osa_r_[PADR_(struct osigaction *)];
+};
+struct osigprocmask_args {
+ char how_l_[PADL_(int)]; int how; char how_r_[PADR_(int)];
+ char mask_l_[PADL_(osigset_t)]; osigset_t mask; char mask_r_[PADR_(osigset_t)];
+};
+struct ofstat_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char sb_l_[PADL_(struct ostat *)]; struct ostat * sb; char sb_r_[PADR_(struct ostat *)];
+};
+struct getkerninfo_args {
+ char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
+ char where_l_[PADL_(char *)]; char * where; char where_r_[PADR_(char *)];
+ char size_l_[PADL_(size_t *)]; size_t * size; char size_r_[PADR_(size_t *)];
+ char arg_l_[PADL_(int)]; int arg; char arg_r_[PADR_(int)];
+};
+struct ommap_args {
+ char addr_l_[PADL_(void *)]; void * addr; char addr_r_[PADR_(void *)];
+ char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
+ char prot_l_[PADL_(int)]; int prot; char prot_r_[PADR_(int)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char pos_l_[PADL_(long)]; long pos; char pos_r_[PADR_(long)];
+};
+struct gethostname_args {
+ char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
+ char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
+};
+struct sethostname_args {
+ char hostname_l_[PADL_(char *)]; char * hostname; char hostname_r_[PADR_(char *)];
+ char len_l_[PADL_(u_int)]; u_int len; char len_r_[PADR_(u_int)];
+};
+struct osend_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char buf_l_[PADL_(caddr_t)]; caddr_t buf; char buf_r_[PADR_(caddr_t)];
+ char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct orecv_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char buf_l_[PADL_(caddr_t)]; caddr_t buf; char buf_r_[PADR_(caddr_t)];
+ char len_l_[PADL_(int)]; int len; char len_r_[PADR_(int)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct osigvec_args {
+ char signum_l_[PADL_(int)]; int signum; char signum_r_[PADR_(int)];
+ char nsv_l_[PADL_(struct sigvec *)]; struct sigvec * nsv; char nsv_r_[PADR_(struct sigvec *)];
+ char osv_l_[PADL_(struct sigvec *)]; struct sigvec * osv; char osv_r_[PADR_(struct sigvec *)];
+};
+struct osigblock_args {
+ char mask_l_[PADL_(int)]; int mask; char mask_r_[PADR_(int)];
+};
+struct osigsetmask_args {
+ char mask_l_[PADL_(int)]; int mask; char mask_r_[PADR_(int)];
+};
+struct osigsuspend_args {
+ char mask_l_[PADL_(osigset_t)]; osigset_t mask; char mask_r_[PADR_(osigset_t)];
+};
+struct osigstack_args {
+ char nss_l_[PADL_(struct sigstack *)]; struct sigstack * nss; char nss_r_[PADR_(struct sigstack *)];
+ char oss_l_[PADL_(struct sigstack *)]; struct sigstack * oss; char oss_r_[PADR_(struct sigstack *)];
+};
+struct orecvmsg_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char msg_l_[PADL_(struct omsghdr *)]; struct omsghdr * msg; char msg_r_[PADR_(struct omsghdr *)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct osendmsg_args {
+ char s_l_[PADL_(int)]; int s; char s_r_[PADR_(int)];
+ char msg_l_[PADL_(caddr_t)]; caddr_t msg; char msg_r_[PADR_(caddr_t)];
+ char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
+};
+struct otruncate_args {
+ char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
+ char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
+};
+struct oftruncate_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char length_l_[PADL_(long)]; long length; char length_r_[PADR_(long)];
+};
+struct ogetpeername_args {
+ char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
+ char asa_l_[PADL_(caddr_t)]; caddr_t asa; char asa_r_[PADR_(caddr_t)];
+ char alen_l_[PADL_(int *)]; int * alen; char alen_r_[PADR_(int *)];
+};
+struct osethostid_args {
+ char hostid_l_[PADL_(long)]; long hostid; char hostid_r_[PADR_(long)];
+};
+struct ogetrlimit_args {
+ char which_l_[PADL_(u_int)]; u_int which; char which_r_[PADR_(u_int)];
+ char rlp_l_[PADL_(struct orlimit *)]; struct orlimit * rlp; char rlp_r_[PADR_(struct orlimit *)];
+};
+struct osetrlimit_args {
+ char which_l_[PADL_(u_int)]; u_int which; char which_r_[PADR_(u_int)];
+ char rlp_l_[PADL_(struct orlimit *)]; struct orlimit * rlp; char rlp_r_[PADR_(struct orlimit *)];
+};
+struct okillpg_args {
+ char pgid_l_[PADL_(int)]; int pgid; char pgid_r_[PADR_(int)];
+ char signum_l_[PADL_(int)]; int signum; char signum_r_[PADR_(int)];
+};
+struct ogetdirentries_args {
+ char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+ char buf_l_[PADL_(char *)]; char * buf; char buf_r_[PADR_(char *)];
+ char count_l_[PADL_(u_int)]; u_int count; char count_r_[PADR_(u_int)];
+ char basep_l_[PADL_(long *)]; long * basep; char basep_r_[PADR_(long *)];
+};
+int ocreat(struct thread *, struct ocreat_args *);
+int olseek(struct thread *, struct olseek_args *);
+int ostat(struct thread *, struct ostat_args *);
+int olstat(struct thread *, struct olstat_args *);
+int osigaction(struct thread *, struct osigaction_args *);
+int osigprocmask(struct thread *, struct osigprocmask_args *);
+int osigpending(struct thread *, struct osigpending_args *);
+int ofstat(struct thread *, struct ofstat_args *);
+int ogetkerninfo(struct thread *, struct getkerninfo_args *);
+int ogetpagesize(struct thread *, struct getpagesize_args *);
+int ommap(struct thread *, struct ommap_args *);
+int owait(struct thread *, struct owait_args *);
+int ogethostname(struct thread *, struct gethostname_args *);
+int osethostname(struct thread *, struct sethostname_args *);
+int oaccept(struct thread *, struct accept_args *);
+int osend(struct thread *, struct osend_args *);
+int orecv(struct thread *, struct orecv_args *);
+int osigvec(struct thread *, struct osigvec_args *);
+int osigblock(struct thread *, struct osigblock_args *);
+int osigsetmask(struct thread *, struct osigsetmask_args *);
+int osigsuspend(struct thread *, struct osigsuspend_args *);
+int osigstack(struct thread *, struct osigstack_args *);
+int orecvmsg(struct thread *, struct orecvmsg_args *);
+int osendmsg(struct thread *, struct osendmsg_args *);
+int orecvfrom(struct thread *, struct recvfrom_args *);
+int otruncate(struct thread *, struct otruncate_args *);
+int oftruncate(struct thread *, struct oftruncate_args *);
+int ogetpeername(struct thread *, struct ogetpeername_args *);
+int ogethostid(struct thread *, struct ogethostid_args *);
+int osethostid(struct thread *, struct osethostid_args *);
+int ogetrlimit(struct thread *, struct ogetrlimit_args *);
+int osetrlimit(struct thread *, struct osetrlimit_args *);
+int okillpg(struct thread *, struct okillpg_args *);
+int oquota(struct thread *, struct oquota_args *);
+int ogetsockname(struct thread *, struct getsockname_args *);
+int ogetdirentries(struct thread *, struct ogetdirentries_args *);
+
+#endif /* COMPAT_43 */
+
+#undef PAD_
+#undef PADL_
+#undef PADR_
+
+#endif /* !_IA32_SYSPROTO_H_ */
diff --git a/sys/ia64/ia32/ia32_syscall.h b/sys/ia64/ia32/ia32_syscall.h
new file mode 100644
index 0000000..c9e74cf2
--- /dev/null
+++ b/sys/ia64/ia32/ia32_syscall.h
@@ -0,0 +1,306 @@
+/*
+ * System call numbers.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * created from FreeBSD
+ */
+
+#define IA32_SYS_syscall 0
+#define IA32_SYS_exit 1
+#define IA32_SYS_fork 2
+#define IA32_SYS_read 3
+#define IA32_SYS_write 4
+#define IA32_SYS_open 5
+#define IA32_SYS_close 6
+#define IA32_SYS_wait4 7
+ /* 8 is old creat */
+#define IA32_SYS_link 9
+#define IA32_SYS_unlink 10
+ /* 11 is obsolete execv */
+#define IA32_SYS_chdir 12
+#define IA32_SYS_fchdir 13
+#define IA32_SYS_mknod 14
+#define IA32_SYS_chmod 15
+#define IA32_SYS_chown 16
+#define IA32_SYS_break 17
+#define IA32_SYS_getfsstat 18
+ /* 19 is old lseek */
+#define IA32_SYS_getpid 20
+#define IA32_SYS_mount 21
+#define IA32_SYS_unmount 22
+#define IA32_SYS_setuid 23
+#define IA32_SYS_getuid 24
+#define IA32_SYS_geteuid 25
+#define IA32_SYS_ptrace 26
+#define IA32_SYS_recvmsg 27
+#define IA32_SYS_sendmsg 28
+#define IA32_SYS_recvfrom 29
+#define IA32_SYS_accept 30
+#define IA32_SYS_getpeername 31
+#define IA32_SYS_getsockname 32
+#define IA32_SYS_access 33
+#define IA32_SYS_chflags 34
+#define IA32_SYS_fchflags 35
+#define IA32_SYS_sync 36
+#define IA32_SYS_kill 37
+ /* 38 is old stat */
+#define IA32_SYS_getppid 39
+ /* 40 is old lstat */
+#define IA32_SYS_dup 41
+#define IA32_SYS_pipe 42
+#define IA32_SYS_getegid 43
+#define IA32_SYS_profil 44
+#define IA32_SYS_ktrace 45
+ /* 46 is old sigaction */
+#define IA32_SYS_getgid 47
+ /* 48 is old sigprocmask */
+#define IA32_SYS_getlogin 49
+#define IA32_SYS_setlogin 50
+#define IA32_SYS_acct 51
+ /* 52 is old sigpending */
+#define IA32_SYS_sigaltstack 53
+#define IA32_SYS_ioctl 54
+#define IA32_SYS_reboot 55
+#define IA32_SYS_revoke 56
+#define IA32_SYS_symlink 57
+#define IA32_SYS_readlink 58
+#define IA32_SYS_execve 59
+#define IA32_SYS_umask 60
+#define IA32_SYS_chroot 61
+ /* 62 is old fstat */
+ /* 63 is old getkerninfo */
+ /* 64 is old getpagesize */
+#define IA32_SYS_msync 65
+#define IA32_SYS_vfork 66
+ /* 67 is obsolete vread */
+ /* 68 is obsolete vwrite */
+#define IA32_SYS_sbrk 69
+#define IA32_SYS_sstk 70
+ /* 71 is old mmap */
+#define IA32_SYS_vadvise 72
+#define IA32_SYS_munmap 73
+#define IA32_SYS_mprotect 74
+#define IA32_SYS_madvise 75
+ /* 76 is obsolete vhangup */
+ /* 77 is obsolete vlimit */
+#define IA32_SYS_mincore 78
+#define IA32_SYS_getgroups 79
+#define IA32_SYS_setgroups 80
+#define IA32_SYS_getpgrp 81
+#define IA32_SYS_setpgid 82
+#define IA32_SYS_setitimer 83
+ /* 84 is old wait */
+#define IA32_SYS_swapon 85
+#define IA32_SYS_getitimer 86
+ /* 87 is old gethostname */
+ /* 88 is old sethostname */
+#define IA32_SYS_getdtablesize 89
+#define IA32_SYS_dup2 90
+#define IA32_SYS_fcntl 92
+#define IA32_SYS_select 93
+#define IA32_SYS_fsync 95
+#define IA32_SYS_setpriority 96
+#define IA32_SYS_socket 97
+#define IA32_SYS_connect 98
+ /* 99 is old accept */
+#define IA32_SYS_getpriority 100
+ /* 101 is old send */
+ /* 102 is old recv */
+#define IA32_SYS_osigreturn 103
+#define IA32_SYS_bind 104
+#define IA32_SYS_setsockopt 105
+#define IA32_SYS_listen 106
+ /* 107 is obsolete vtimes */
+ /* 108 is old sigvec */
+ /* 109 is old sigblock */
+ /* 110 is old sigsetmask */
+ /* 111 is old sigsuspend */
+ /* 112 is old sigstack */
+ /* 113 is old recvmsg */
+ /* 114 is old sendmsg */
+ /* 115 is obsolete vtrace */
+#define IA32_SYS_gettimeofday 116
+#define IA32_SYS_getrusage 117
+#define IA32_SYS_getsockopt 118
+#define IA32_SYS_readv 120
+#define IA32_SYS_writev 121
+#define IA32_SYS_settimeofday 122
+#define IA32_SYS_fchown 123
+#define IA32_SYS_fchmod 124
+ /* 125 is old recvfrom */
+#define IA32_SYS_setreuid 126
+#define IA32_SYS_setregid 127
+#define IA32_SYS_rename 128
+ /* 129 is old truncate */
+ /* 130 is old ftruncate */
+#define IA32_SYS_flock 131
+#define IA32_SYS_mkfifo 132
+#define IA32_SYS_sendto 133
+#define IA32_SYS_shutdown 134
+#define IA32_SYS_socketpair 135
+#define IA32_SYS_mkdir 136
+#define IA32_SYS_rmdir 137
+#define IA32_SYS_utimes 138
+ /* 139 is obsolete 4.2 sigreturn */
+#define IA32_SYS_adjtime 140
+ /* 141 is old getpeername */
+ /* 142 is old gethostid */
+ /* 143 is old sethostid */
+ /* 144 is old getrlimit */
+ /* 145 is old setrlimit */
+ /* 146 is old killpg */
+#define IA32_SYS_setsid 147
+#define IA32_SYS_quotactl 148
+ /* 149 is old quota */
+ /* 150 is old getsockname */
+#define IA32_SYS_nfssvc 155
+ /* 156 is old getdirentries */
+#define IA32_SYS_statfs 157
+#define IA32_SYS_fstatfs 158
+#define IA32_SYS_getfh 161
+#define IA32_SYS_getdomainname 162
+#define IA32_SYS_setdomainname 163
+#define IA32_SYS_uname 164
+#define IA32_SYS_sysarch 165
+#define IA32_SYS_rtprio 166
+#define IA32_SYS_semsys 169
+#define IA32_SYS_msgsys 170
+#define IA32_SYS_shmsys 171
+#define IA32_SYS_pread 173
+#define IA32_SYS_pwrite 174
+#define IA32_SYS_ntp_adjtime 176
+#define IA32_SYS_setgid 181
+#define IA32_SYS_setegid 182
+#define IA32_SYS_seteuid 183
+#define IA32_SYS_stat 188
+#define IA32_SYS_fstat 189
+#define IA32_SYS_lstat 190
+#define IA32_SYS_pathconf 191
+#define IA32_SYS_fpathconf 192
+#define IA32_SYS_getrlimit 194
+#define IA32_SYS_setrlimit 195
+#define IA32_SYS_getdirentries 196
+#define IA32_SYS_mmap 197
+#define IA32_SYS___syscall 198
+#define IA32_SYS_lseek 199
+#define IA32_SYS_truncate 200
+#define IA32_SYS_ftruncate 201
+#define IA32_SYS___sysctl 202
+#define IA32_SYS_mlock 203
+#define IA32_SYS_munlock 204
+#define IA32_SYS_undelete 205
+#define IA32_SYS_futimes 206
+#define IA32_SYS_getpgid 207
+#define IA32_SYS_poll 209
+#define IA32_SYS___semctl 220
+#define IA32_SYS_semget 221
+#define IA32_SYS_semop 222
+#define IA32_SYS_msgctl 224
+#define IA32_SYS_msgget 225
+#define IA32_SYS_msgsnd 226
+#define IA32_SYS_msgrcv 227
+#define IA32_SYS_shmat 228
+#define IA32_SYS_shmctl 229
+#define IA32_SYS_shmdt 230
+#define IA32_SYS_shmget 231
+#define IA32_SYS_clock_gettime 232
+#define IA32_SYS_clock_settime 233
+#define IA32_SYS_clock_getres 234
+#define IA32_SYS_nanosleep 240
+#define IA32_SYS_minherit 250
+#define IA32_SYS_rfork 251
+#define IA32_SYS_openbsd_poll 252
+#define IA32_SYS_issetugid 253
+#define IA32_SYS_lchown 254
+#define IA32_SYS_getdents 272
+#define IA32_SYS_lchmod 274
+#define IA32_SYS_netbsd_lchown 275
+#define IA32_SYS_lutimes 276
+#define IA32_SYS_netbsd_msync 277
+#define IA32_SYS_nstat 278
+#define IA32_SYS_nfstat 279
+#define IA32_SYS_nlstat 280
+#define IA32_SYS_fhstatfs 297
+#define IA32_SYS_fhopen 298
+#define IA32_SYS_fhstat 299
+#define IA32_SYS_modnext 300
+#define IA32_SYS_modstat 301
+#define IA32_SYS_modfnext 302
+#define IA32_SYS_modfind 303
+#define IA32_SYS_kldload 304
+#define IA32_SYS_kldunload 305
+#define IA32_SYS_kldfind 306
+#define IA32_SYS_kldnext 307
+#define IA32_SYS_kldstat 308
+#define IA32_SYS_kldfirstmod 309
+#define IA32_SYS_getsid 310
+#define IA32_SYS_setresuid 311
+#define IA32_SYS_setresgid 312
+ /* 313 is obsolete signanosleep */
+#define IA32_SYS_aio_return 314
+#define IA32_SYS_aio_suspend 315
+#define IA32_SYS_aio_cancel 316
+#define IA32_SYS_aio_error 317
+#define IA32_SYS_aio_read 318
+#define IA32_SYS_aio_write 319
+#define IA32_SYS_lio_listio 320
+#define IA32_SYS_yield 321
+ /* 322 is obsolete thr_sleep */
+ /* 323 is obsolete thr_wakeup */
+#define IA32_SYS_mlockall 324
+#define IA32_SYS_munlockall 325
+#define IA32_SYS___getcwd 326
+#define IA32_SYS_sched_setparam 327
+#define IA32_SYS_sched_getparam 328
+#define IA32_SYS_sched_setscheduler 329
+#define IA32_SYS_sched_getscheduler 330
+#define IA32_SYS_sched_yield 331
+#define IA32_SYS_sched_get_priority_max 332
+#define IA32_SYS_sched_get_priority_min 333
+#define IA32_SYS_sched_rr_get_interval 334
+#define IA32_SYS_utrace 335
+#define IA32_SYS_sendfile 336
+#define IA32_SYS_kldsym 337
+#define IA32_SYS_jail 338
+#define IA32_SYS_sigprocmask 340
+#define IA32_SYS_sigsuspend 341
+#define IA32_SYS_sigaction 342
+#define IA32_SYS_sigpending 343
+#define IA32_SYS_sigreturn 344
+#define IA32_SYS___acl_get_file 347
+#define IA32_SYS___acl_set_file 348
+#define IA32_SYS___acl_get_fd 349
+#define IA32_SYS___acl_set_fd 350
+#define IA32_SYS___acl_delete_file 351
+#define IA32_SYS___acl_delete_fd 352
+#define IA32_SYS___acl_aclcheck_file 353
+#define IA32_SYS___acl_aclcheck_fd 354
+#define IA32_SYS_extattrctl 355
+#define IA32_SYS_extattr_set_file 356
+#define IA32_SYS_extattr_get_file 357
+#define IA32_SYS_extattr_delete_file 358
+#define IA32_SYS_aio_waitcomplete 359
+#define IA32_SYS_getresuid 360
+#define IA32_SYS_getresgid 361
+#define IA32_SYS_kqueue 362
+#define IA32_SYS_kevent 363
+#define IA32_SYS___cap_get_proc 364
+#define IA32_SYS___cap_set_proc 365
+#define IA32_SYS___cap_get_fd 366
+#define IA32_SYS___cap_get_file 367
+#define IA32_SYS___cap_set_fd 368
+#define IA32_SYS___cap_set_file 369
+#define IA32_SYS_extattr_set_fd 371
+#define IA32_SYS_extattr_get_fd 372
+#define IA32_SYS_extattr_delete_fd 373
+#define IA32_SYS___setugid 374
+#define IA32_SYS_nfsclnt 375
+#define IA32_SYS_eaccess 376
+#define IA32_SYS_nmount 378
+#define IA32_SYS_kse_exit 379
+#define IA32_SYS_kse_wakeup 380
+#define IA32_SYS_kse_new 381
+#define IA32_SYS_thread_wakeup 382
+#define IA32_SYS_kse_yield 383
+#define IA32_SYS_MAXSYSCALL 390
diff --git a/sys/ia64/ia32/ia32_sysent.c b/sys/ia64/ia32/ia32_sysent.c
new file mode 100644
index 0000000..fa791350
--- /dev/null
+++ b/sys/ia64/ia32/ia32_sysent.c
@@ -0,0 +1,415 @@
+/*
+ * System call switch table.
+ *
+ * DO NOT EDIT-- this file is automatically generated.
+ * $FreeBSD$
+ * created from FreeBSD
+ */
+
+#include "opt_compat.h"
+
+#include <sys/param.h>
+#include <sys/sysent.h>
+#include <sys/sysproto.h>
+
+#define AS(name) (sizeof(struct name) / sizeof(register_t))
+
+#ifdef COMPAT_43
+#define compat(n, name) n, (sy_call_t *)__CONCAT(o,name)
+#else
+#define compat(n, name) 0, (sy_call_t *)nosys
+#endif
+
+/* The casts are bogus but will do for now. */
+struct sysent ia32_sysent[] = {
+ { 0, (sy_call_t *)nosys }, /* 0 = syscall */
+ { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit }, /* 1 = exit */
+ { SYF_MPSAFE | 0, (sy_call_t *)fork }, /* 2 = fork */
+ { SYF_MPSAFE | AS(read_args), (sy_call_t *)read }, /* 3 = read */
+ { SYF_MPSAFE | AS(write_args), (sy_call_t *)write }, /* 4 = write */
+ { AS(open_args), (sy_call_t *)open }, /* 5 = open */
+ { SYF_MPSAFE | AS(close_args), (sy_call_t *)close }, /* 6 = close */
+ { SYF_MPSAFE | AS(wait_args), (sy_call_t *)wait4 }, /* 7 = wait4 */
+ { compat(AS(ocreat_args),creat) }, /* 8 = old creat */
+ { AS(link_args), (sy_call_t *)link }, /* 9 = link */
+ { AS(unlink_args), (sy_call_t *)unlink }, /* 10 = unlink */
+ { 0, (sy_call_t *)nosys }, /* 11 = obsolete execv */
+ { AS(chdir_args), (sy_call_t *)chdir }, /* 12 = chdir */
+ { AS(fchdir_args), (sy_call_t *)fchdir }, /* 13 = fchdir */
+ { AS(mknod_args), (sy_call_t *)mknod }, /* 14 = mknod */
+ { AS(chmod_args), (sy_call_t *)chmod }, /* 15 = chmod */
+ { AS(chown_args), (sy_call_t *)chown }, /* 16 = chown */
+ { SYF_MPSAFE | AS(obreak_args), (sy_call_t *)obreak }, /* 17 = break */
+ { AS(getfsstat_args), (sy_call_t *)getfsstat }, /* 18 = getfsstat */
+ { compat(AS(olseek_args),lseek) }, /* 19 = old lseek */
+ { SYF_MPSAFE | 0, (sy_call_t *)getpid }, /* 20 = getpid */
+ { AS(mount_args), (sy_call_t *)mount }, /* 21 = mount */
+ { AS(unmount_args), (sy_call_t *)unmount }, /* 22 = unmount */
+ { SYF_MPSAFE | AS(setuid_args), (sy_call_t *)setuid }, /* 23 = setuid */
+ { SYF_MPSAFE | 0, (sy_call_t *)getuid }, /* 24 = getuid */
+ { SYF_MPSAFE | 0, (sy_call_t *)geteuid }, /* 25 = geteuid */
+ { AS(ptrace_args), (sy_call_t *)ptrace }, /* 26 = ptrace */
+ { SYF_MPSAFE | AS(recvmsg_args), (sy_call_t *)recvmsg }, /* 27 = recvmsg */
+ { SYF_MPSAFE | AS(sendmsg_args), (sy_call_t *)sendmsg }, /* 28 = sendmsg */
+ { SYF_MPSAFE | AS(recvfrom_args), (sy_call_t *)recvfrom }, /* 29 = recvfrom */
+ { SYF_MPSAFE | AS(accept_args), (sy_call_t *)accept }, /* 30 = accept */
+ { SYF_MPSAFE | AS(getpeername_args), (sy_call_t *)getpeername }, /* 31 = getpeername */
+ { SYF_MPSAFE | AS(getsockname_args), (sy_call_t *)getsockname }, /* 32 = getsockname */
+ { AS(access_args), (sy_call_t *)access }, /* 33 = access */
+ { AS(chflags_args), (sy_call_t *)chflags }, /* 34 = chflags */
+ { AS(fchflags_args), (sy_call_t *)fchflags }, /* 35 = fchflags */
+ { 0, (sy_call_t *)sync }, /* 36 = sync */
+ { SYF_MPSAFE | AS(kill_args), (sy_call_t *)kill }, /* 37 = kill */
+ { compat(AS(ostat_args),stat) }, /* 38 = old stat */
+ { SYF_MPSAFE | 0, (sy_call_t *)getppid }, /* 39 = getppid */
+ { compat(AS(olstat_args),lstat) }, /* 40 = old lstat */
+ { AS(dup_args), (sy_call_t *)dup }, /* 41 = dup */
+ { 0, (sy_call_t *)pipe }, /* 42 = pipe */
+ { SYF_MPSAFE | 0, (sy_call_t *)getegid }, /* 43 = getegid */
+ { SYF_MPSAFE | AS(profil_args), (sy_call_t *)profil }, /* 44 = profil */
+ { AS(ktrace_args), (sy_call_t *)ktrace }, /* 45 = ktrace */
+ { compat(SYF_MPSAFE | AS(osigaction_args),sigaction) }, /* 46 = old sigaction */
+ { SYF_MPSAFE | 0, (sy_call_t *)getgid }, /* 47 = getgid */
+ { compat(SYF_MPSAFE | AS(osigprocmask_args),sigprocmask) }, /* 48 = old sigprocmask */
+ { SYF_MPSAFE | AS(getlogin_args), (sy_call_t *)getlogin }, /* 49 = getlogin */
+ { SYF_MPSAFE | AS(setlogin_args), (sy_call_t *)setlogin }, /* 50 = setlogin */
+ { SYF_MPSAFE | AS(acct_args), (sy_call_t *)acct }, /* 51 = acct */
+ { compat(SYF_MPSAFE | 0,sigpending) }, /* 52 = old sigpending */
+ { SYF_MPSAFE | AS(sigaltstack_args), (sy_call_t *)sigaltstack }, /* 53 = sigaltstack */
+ { SYF_MPSAFE | AS(ioctl_args), (sy_call_t *)ioctl }, /* 54 = ioctl */
+ { SYF_MPSAFE | AS(reboot_args), (sy_call_t *)reboot }, /* 55 = reboot */
+ { AS(revoke_args), (sy_call_t *)revoke }, /* 56 = revoke */
+ { AS(symlink_args), (sy_call_t *)symlink }, /* 57 = symlink */
+ { AS(readlink_args), (sy_call_t *)readlink }, /* 58 = readlink */
+ { SYF_MPSAFE | AS(execve_args), (sy_call_t *)execve }, /* 59 = execve */
+ { SYF_MPSAFE | AS(umask_args), (sy_call_t *)umask }, /* 60 = umask */
+ { AS(chroot_args), (sy_call_t *)chroot }, /* 61 = chroot */
+ { compat(SYF_MPSAFE | AS(ofstat_args),fstat) }, /* 62 = old fstat */
+ { compat(SYF_MPSAFE | AS(getkerninfo_args),getkerninfo) }, /* 63 = old getkerninfo */
+ { compat(SYF_MPSAFE | 0,getpagesize) }, /* 64 = old getpagesize */
+ { AS(msync_args), (sy_call_t *)msync }, /* 65 = msync */
+ { SYF_MPSAFE | 0, (sy_call_t *)vfork }, /* 66 = vfork */
+ { 0, (sy_call_t *)nosys }, /* 67 = obsolete vread */
+ { 0, (sy_call_t *)nosys }, /* 68 = obsolete vwrite */
+ { SYF_MPSAFE | AS(sbrk_args), (sy_call_t *)sbrk }, /* 69 = sbrk */
+ { SYF_MPSAFE | AS(sstk_args), (sy_call_t *)sstk }, /* 70 = sstk */
+ { compat(SYF_MPSAFE | AS(ommap_args),mmap) }, /* 71 = old mmap */
+ { SYF_MPSAFE | AS(ovadvise_args), (sy_call_t *)ovadvise }, /* 72 = vadvise */
+ { SYF_MPSAFE | AS(munmap_args), (sy_call_t *)munmap }, /* 73 = munmap */
+ { SYF_MPSAFE | AS(mprotect_args), (sy_call_t *)mprotect }, /* 74 = mprotect */
+ { SYF_MPSAFE | AS(madvise_args), (sy_call_t *)madvise }, /* 75 = madvise */
+ { 0, (sy_call_t *)nosys }, /* 76 = obsolete vhangup */
+ { 0, (sy_call_t *)nosys }, /* 77 = obsolete vlimit */
+ { SYF_MPSAFE | AS(mincore_args), (sy_call_t *)mincore }, /* 78 = mincore */
+ { SYF_MPSAFE | AS(getgroups_args), (sy_call_t *)getgroups }, /* 79 = getgroups */
+ { SYF_MPSAFE | AS(setgroups_args), (sy_call_t *)setgroups }, /* 80 = setgroups */
+ { SYF_MPSAFE | 0, (sy_call_t *)getpgrp }, /* 81 = getpgrp */
+ { SYF_MPSAFE | AS(setpgid_args), (sy_call_t *)setpgid }, /* 82 = setpgid */
+ { SYF_MPSAFE | AS(setitimer_args), (sy_call_t *)setitimer }, /* 83 = setitimer */
+ { compat(SYF_MPSAFE | 0,wait) }, /* 84 = old wait */
+ { SYF_MPSAFE | AS(swapon_args), (sy_call_t *)swapon }, /* 85 = swapon */
+ { SYF_MPSAFE | AS(getitimer_args), (sy_call_t *)getitimer }, /* 86 = getitimer */
+ { compat(SYF_MPSAFE | AS(gethostname_args),gethostname) }, /* 87 = old gethostname */
+ { compat(SYF_MPSAFE | AS(sethostname_args),sethostname) }, /* 88 = old sethostname */
+ { SYF_MPSAFE | 0, (sy_call_t *)getdtablesize }, /* 89 = getdtablesize */
+ { SYF_MPSAFE | AS(dup2_args), (sy_call_t *)dup2 }, /* 90 = dup2 */
+ { 0, (sy_call_t *)nosys }, /* 91 = getdopt */
+ { SYF_MPSAFE | AS(fcntl_args), (sy_call_t *)fcntl }, /* 92 = fcntl */
+ { SYF_MPSAFE | AS(select_args), (sy_call_t *)select }, /* 93 = select */
+ { 0, (sy_call_t *)nosys }, /* 94 = setdopt */
+ { AS(fsync_args), (sy_call_t *)fsync }, /* 95 = fsync */
+ { SYF_MPSAFE | AS(setpriority_args), (sy_call_t *)setpriority }, /* 96 = setpriority */
+ { SYF_MPSAFE | AS(socket_args), (sy_call_t *)socket }, /* 97 = socket */
+ { SYF_MPSAFE | AS(connect_args), (sy_call_t *)connect }, /* 98 = connect */
+ { compat(SYF_MPSAFE | AS(accept_args),accept) }, /* 99 = old accept */
+ { SYF_MPSAFE | AS(getpriority_args), (sy_call_t *)getpriority }, /* 100 = getpriority */
+ { compat(SYF_MPSAFE | AS(osend_args),send) }, /* 101 = old send */
+ { compat(SYF_MPSAFE | AS(orecv_args),recv) }, /* 102 = old recv */
+ { AS(osigreturn_args), (sy_call_t *)osigreturn }, /* 103 = osigreturn */
+ { SYF_MPSAFE | AS(bind_args), (sy_call_t *)bind }, /* 104 = bind */
+ { SYF_MPSAFE | AS(setsockopt_args), (sy_call_t *)setsockopt }, /* 105 = setsockopt */
+ { SYF_MPSAFE | AS(listen_args), (sy_call_t *)listen }, /* 106 = listen */
+ { 0, (sy_call_t *)nosys }, /* 107 = obsolete vtimes */
+ { compat(SYF_MPSAFE | AS(osigvec_args),sigvec) }, /* 108 = old sigvec */
+ { compat(SYF_MPSAFE | AS(osigblock_args),sigblock) }, /* 109 = old sigblock */
+ { compat(SYF_MPSAFE | AS(osigsetmask_args),sigsetmask) }, /* 110 = old sigsetmask */
+ { compat(SYF_MPSAFE | AS(osigsuspend_args),sigsuspend) }, /* 111 = old sigsuspend */
+ { compat(SYF_MPSAFE | AS(osigstack_args),sigstack) }, /* 112 = old sigstack */
+ { compat(SYF_MPSAFE | AS(orecvmsg_args),recvmsg) }, /* 113 = old recvmsg */
+ { compat(SYF_MPSAFE | AS(osendmsg_args),sendmsg) }, /* 114 = old sendmsg */
+ { 0, (sy_call_t *)nosys }, /* 115 = obsolete vtrace */
+ { SYF_MPSAFE | AS(gettimeofday_args), (sy_call_t *)gettimeofday }, /* 116 = gettimeofday */
+ { SYF_MPSAFE | AS(getrusage_args), (sy_call_t *)getrusage }, /* 117 = getrusage */
+ { SYF_MPSAFE | AS(getsockopt_args), (sy_call_t *)getsockopt }, /* 118 = getsockopt */
+ { 0, (sy_call_t *)nosys }, /* 119 = resuba */
+ { SYF_MPSAFE | AS(readv_args), (sy_call_t *)readv }, /* 120 = readv */
+ { SYF_MPSAFE | AS(writev_args), (sy_call_t *)writev }, /* 121 = writev */
+ { SYF_MPSAFE | AS(settimeofday_args), (sy_call_t *)settimeofday }, /* 122 = settimeofday */
+ { AS(fchown_args), (sy_call_t *)fchown }, /* 123 = fchown */
+ { AS(fchmod_args), (sy_call_t *)fchmod }, /* 124 = fchmod */
+ { compat(SYF_MPSAFE | AS(recvfrom_args),recvfrom) }, /* 125 = old recvfrom */
+ { SYF_MPSAFE | AS(setreuid_args), (sy_call_t *)setreuid }, /* 126 = setreuid */
+ { SYF_MPSAFE | AS(setregid_args), (sy_call_t *)setregid }, /* 127 = setregid */
+ { AS(rename_args), (sy_call_t *)rename }, /* 128 = rename */
+ { compat(AS(otruncate_args),truncate) }, /* 129 = old truncate */
+ { compat(AS(oftruncate_args),ftruncate) }, /* 130 = old ftruncate */
+ { SYF_MPSAFE | AS(flock_args), (sy_call_t *)flock }, /* 131 = flock */
+ { AS(mkfifo_args), (sy_call_t *)mkfifo }, /* 132 = mkfifo */
+ { SYF_MPSAFE | AS(sendto_args), (sy_call_t *)sendto }, /* 133 = sendto */
+ { SYF_MPSAFE | AS(shutdown_args), (sy_call_t *)shutdown }, /* 134 = shutdown */
+ { SYF_MPSAFE | AS(socketpair_args), (sy_call_t *)socketpair }, /* 135 = socketpair */
+ { AS(mkdir_args), (sy_call_t *)mkdir }, /* 136 = mkdir */
+ { AS(rmdir_args), (sy_call_t *)rmdir }, /* 137 = rmdir */
+ { AS(utimes_args), (sy_call_t *)utimes }, /* 138 = utimes */
+ { 0, (sy_call_t *)nosys }, /* 139 = obsolete 4.2 sigreturn */
+ { SYF_MPSAFE | AS(adjtime_args), (sy_call_t *)adjtime }, /* 140 = adjtime */
+ { compat(SYF_MPSAFE | AS(ogetpeername_args),getpeername) }, /* 141 = old getpeername */
+ { compat(SYF_MPSAFE | 0,gethostid) }, /* 142 = old gethostid */
+ { compat(SYF_MPSAFE | AS(osethostid_args),sethostid) }, /* 143 = old sethostid */
+ { compat(SYF_MPSAFE | AS(ogetrlimit_args),getrlimit) }, /* 144 = old getrlimit */
+ { compat(SYF_MPSAFE | AS(osetrlimit_args),setrlimit) }, /* 145 = old setrlimit */
+ { compat(SYF_MPSAFE | AS(okillpg_args),killpg) }, /* 146 = old killpg */
+ { SYF_MPSAFE | 0, (sy_call_t *)setsid }, /* 147 = setsid */
+ { AS(quotactl_args), (sy_call_t *)quotactl }, /* 148 = quotactl */
+ { compat(SYF_MPSAFE | 0,quota) }, /* 149 = old quota */
+ { compat(SYF_MPSAFE | AS(getsockname_args),getsockname) }, /* 150 = old getsockname */
+ { 0, (sy_call_t *)nosys }, /* 151 = sem_lock */
+ { 0, (sy_call_t *)nosys }, /* 152 = sem_wakeup */
+ { 0, (sy_call_t *)nosys }, /* 153 = asyncdaemon */
+ { 0, (sy_call_t *)nosys }, /* 154 = nosys */
+ { SYF_MPSAFE | AS(nfssvc_args), (sy_call_t *)nosys }, /* 155 = nfssvc */
+ { compat(AS(ogetdirentries_args),getdirentries) }, /* 156 = old getdirentries */
+ { AS(statfs_args), (sy_call_t *)statfs }, /* 157 = statfs */
+ { AS(fstatfs_args), (sy_call_t *)fstatfs }, /* 158 = fstatfs */
+ { 0, (sy_call_t *)nosys }, /* 159 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 160 = nosys */
+ { AS(getfh_args), (sy_call_t *)getfh }, /* 161 = getfh */
+ { SYF_MPSAFE | AS(getdomainname_args), (sy_call_t *)getdomainname }, /* 162 = getdomainname */
+ { SYF_MPSAFE | AS(setdomainname_args), (sy_call_t *)setdomainname }, /* 163 = setdomainname */
+ { SYF_MPSAFE | AS(uname_args), (sy_call_t *)uname }, /* 164 = uname */
+ { AS(sysarch_args), (sy_call_t *)sysarch }, /* 165 = sysarch */
+ { SYF_MPSAFE | AS(rtprio_args), (sy_call_t *)rtprio }, /* 166 = rtprio */
+ { 0, (sy_call_t *)nosys }, /* 167 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 168 = nosys */
+ { SYF_MPSAFE | AS(semsys_args), (sy_call_t *)lkmressys }, /* 169 = semsys */
+ { SYF_MPSAFE | AS(msgsys_args), (sy_call_t *)lkmressys }, /* 170 = msgsys */
+ { SYF_MPSAFE | AS(shmsys_args), (sy_call_t *)lkmressys }, /* 171 = shmsys */
+ { 0, (sy_call_t *)nosys }, /* 172 = nosys */
+ { SYF_MPSAFE | AS(pread_args), (sy_call_t *)pread }, /* 173 = pread */
+ { SYF_MPSAFE | AS(pwrite_args), (sy_call_t *)pwrite }, /* 174 = pwrite */
+ { 0, (sy_call_t *)nosys }, /* 175 = nosys */
+ { SYF_MPSAFE | AS(ntp_adjtime_args), (sy_call_t *)ntp_adjtime }, /* 176 = ntp_adjtime */
+ { 0, (sy_call_t *)nosys }, /* 177 = sfork */
+ { 0, (sy_call_t *)nosys }, /* 178 = getdescriptor */
+ { 0, (sy_call_t *)nosys }, /* 179 = setdescriptor */
+ { 0, (sy_call_t *)nosys }, /* 180 = nosys */
+ { SYF_MPSAFE | AS(setgid_args), (sy_call_t *)setgid }, /* 181 = setgid */
+ { SYF_MPSAFE | AS(setegid_args), (sy_call_t *)setegid }, /* 182 = setegid */
+ { SYF_MPSAFE | AS(seteuid_args), (sy_call_t *)seteuid }, /* 183 = seteuid */
+ { 0, (sy_call_t *)nosys }, /* 184 = lfs_bmapv */
+ { 0, (sy_call_t *)nosys }, /* 185 = lfs_markv */
+ { 0, (sy_call_t *)nosys }, /* 186 = lfs_segclean */
+ { 0, (sy_call_t *)nosys }, /* 187 = lfs_segwait */
+ { AS(stat_args), (sy_call_t *)stat }, /* 188 = stat */
+ { SYF_MPSAFE | AS(fstat_args), (sy_call_t *)fstat }, /* 189 = fstat */
+ { AS(lstat_args), (sy_call_t *)lstat }, /* 190 = lstat */
+ { AS(pathconf_args), (sy_call_t *)pathconf }, /* 191 = pathconf */
+ { SYF_MPSAFE | AS(fpathconf_args), (sy_call_t *)fpathconf }, /* 192 = fpathconf */
+ { 0, (sy_call_t *)nosys }, /* 193 = nosys */
+ { SYF_MPSAFE | AS(__getrlimit_args), (sy_call_t *)getrlimit }, /* 194 = getrlimit */
+ { SYF_MPSAFE | AS(__setrlimit_args), (sy_call_t *)setrlimit }, /* 195 = setrlimit */
+ { AS(getdirentries_args), (sy_call_t *)getdirentries }, /* 196 = getdirentries */
+ { SYF_MPSAFE | AS(mmap_args), (sy_call_t *)mmap }, /* 197 = mmap */
+ { 0, (sy_call_t *)nosys }, /* 198 = __syscall */
+ { AS(lseek_args), (sy_call_t *)lseek }, /* 199 = lseek */
+ { AS(truncate_args), (sy_call_t *)truncate }, /* 200 = truncate */
+ { AS(ftruncate_args), (sy_call_t *)ftruncate }, /* 201 = ftruncate */
+ { SYF_MPSAFE | AS(sysctl_args), (sy_call_t *)__sysctl }, /* 202 = __sysctl */
+ { SYF_MPSAFE | AS(mlock_args), (sy_call_t *)mlock }, /* 203 = mlock */
+ { SYF_MPSAFE | AS(munlock_args), (sy_call_t *)munlock }, /* 204 = munlock */
+ { AS(undelete_args), (sy_call_t *)undelete }, /* 205 = undelete */
+ { AS(futimes_args), (sy_call_t *)futimes }, /* 206 = futimes */
+ { SYF_MPSAFE | AS(getpgid_args), (sy_call_t *)getpgid }, /* 207 = getpgid */
+ { 0, (sy_call_t *)nosys }, /* 208 = newreboot */
+ { SYF_MPSAFE | AS(poll_args), (sy_call_t *)poll }, /* 209 = poll */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 210 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 211 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 212 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 213 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 214 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 215 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 216 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 217 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 218 = lkmnosys */
+ { AS(nosys_args), (sy_call_t *)lkmnosys }, /* 219 = lkmnosys */
+ { SYF_MPSAFE | AS(__semctl_args), (sy_call_t *)lkmressys }, /* 220 = __semctl */
+ { SYF_MPSAFE | AS(semget_args), (sy_call_t *)lkmressys }, /* 221 = semget */
+ { SYF_MPSAFE | AS(semop_args), (sy_call_t *)lkmressys }, /* 222 = semop */
+ { 0, (sy_call_t *)nosys }, /* 223 = semconfig */
+ { SYF_MPSAFE | AS(msgctl_args), (sy_call_t *)lkmressys }, /* 224 = msgctl */
+ { SYF_MPSAFE | AS(msgget_args), (sy_call_t *)lkmressys }, /* 225 = msgget */
+ { SYF_MPSAFE | AS(msgsnd_args), (sy_call_t *)lkmressys }, /* 226 = msgsnd */
+ { SYF_MPSAFE | AS(msgrcv_args), (sy_call_t *)lkmressys }, /* 227 = msgrcv */
+ { SYF_MPSAFE | AS(shmat_args), (sy_call_t *)lkmressys }, /* 228 = shmat */
+ { SYF_MPSAFE | AS(shmctl_args), (sy_call_t *)lkmressys }, /* 229 = shmctl */
+ { SYF_MPSAFE | AS(shmdt_args), (sy_call_t *)lkmressys }, /* 230 = shmdt */
+ { SYF_MPSAFE | AS(shmget_args), (sy_call_t *)lkmressys }, /* 231 = shmget */
+ { SYF_MPSAFE | AS(clock_gettime_args), (sy_call_t *)clock_gettime }, /* 232 = clock_gettime */
+ { SYF_MPSAFE | AS(clock_settime_args), (sy_call_t *)clock_settime }, /* 233 = clock_settime */
+ { SYF_MPSAFE | AS(clock_getres_args), (sy_call_t *)clock_getres }, /* 234 = clock_getres */
+ { 0, (sy_call_t *)nosys }, /* 235 = timer_create */
+ { 0, (sy_call_t *)nosys }, /* 236 = timer_delete */
+ { 0, (sy_call_t *)nosys }, /* 237 = timer_settime */
+ { 0, (sy_call_t *)nosys }, /* 238 = timer_gettime */
+ { 0, (sy_call_t *)nosys }, /* 239 = timer_getoverrun */
+ { SYF_MPSAFE | AS(nanosleep_args), (sy_call_t *)nanosleep }, /* 240 = nanosleep */
+ { 0, (sy_call_t *)nosys }, /* 241 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 242 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 243 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 244 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 245 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 246 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 247 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 248 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 249 = nosys */
+ { SYF_MPSAFE | AS(minherit_args), (sy_call_t *)minherit }, /* 250 = minherit */
+ { SYF_MPSAFE | AS(rfork_args), (sy_call_t *)rfork }, /* 251 = rfork */
+ { SYF_MPSAFE | AS(openbsd_poll_args), (sy_call_t *)openbsd_poll }, /* 252 = openbsd_poll */
+ { 0, (sy_call_t *)issetugid }, /* 253 = issetugid */
+ { AS(lchown_args), (sy_call_t *)lchown }, /* 254 = lchown */
+ { 0, (sy_call_t *)nosys }, /* 255 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 256 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 257 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 258 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 259 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 260 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 261 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 262 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 263 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 264 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 265 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 266 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 267 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 268 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 269 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 270 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 271 = nosys */
+ { AS(getdents_args), (sy_call_t *)getdents }, /* 272 = getdents */
+ { 0, (sy_call_t *)nosys }, /* 273 = nosys */
+ { AS(lchmod_args), (sy_call_t *)lchmod }, /* 274 = lchmod */
+ { AS(lchown_args), (sy_call_t *)lchown }, /* 275 = netbsd_lchown */
+ { AS(lutimes_args), (sy_call_t *)lutimes }, /* 276 = lutimes */
+ { SYF_MPSAFE | AS(msync_args), (sy_call_t *)msync }, /* 277 = netbsd_msync */
+ { AS(nstat_args), (sy_call_t *)nstat }, /* 278 = nstat */
+ { SYF_MPSAFE | AS(nfstat_args), (sy_call_t *)nfstat }, /* 279 = nfstat */
+ { AS(nlstat_args), (sy_call_t *)nlstat }, /* 280 = nlstat */
+ { 0, (sy_call_t *)nosys }, /* 281 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 282 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 283 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 284 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 285 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 286 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 287 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 288 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 289 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 290 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 291 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 292 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 293 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 294 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 295 = nosys */
+ { 0, (sy_call_t *)nosys }, /* 296 = nosys */
+ { AS(fhstatfs_args), (sy_call_t *)fhstatfs }, /* 297 = fhstatfs */
+ { AS(fhopen_args), (sy_call_t *)fhopen }, /* 298 = fhopen */
+ { AS(fhstat_args), (sy_call_t *)fhstat }, /* 299 = fhstat */
+ { SYF_MPSAFE | AS(modnext_args), (sy_call_t *)modnext }, /* 300 = modnext */
+ { SYF_MPSAFE | AS(modstat_args), (sy_call_t *)modstat }, /* 301 = modstat */
+ { SYF_MPSAFE | AS(modfnext_args), (sy_call_t *)modfnext }, /* 302 = modfnext */
+ { SYF_MPSAFE | AS(modfind_args), (sy_call_t *)modfind }, /* 303 = modfind */
+ { SYF_MPSAFE | AS(kldload_args), (sy_call_t *)kldload }, /* 304 = kldload */
+ { SYF_MPSAFE | AS(kldunload_args), (sy_call_t *)kldunload }, /* 305 = kldunload */
+ { SYF_MPSAFE | AS(kldfind_args), (sy_call_t *)kldfind }, /* 306 = kldfind */
+ { SYF_MPSAFE | AS(kldnext_args), (sy_call_t *)kldnext }, /* 307 = kldnext */
+ { SYF_MPSAFE | AS(kldstat_args), (sy_call_t *)kldstat }, /* 308 = kldstat */
+ { SYF_MPSAFE | AS(kldfirstmod_args), (sy_call_t *)kldfirstmod }, /* 309 = kldfirstmod */
+ { SYF_MPSAFE | AS(getsid_args), (sy_call_t *)getsid }, /* 310 = getsid */
+ { SYF_MPSAFE | AS(setresuid_args), (sy_call_t *)setresuid }, /* 311 = setresuid */
+ { SYF_MPSAFE | AS(setresgid_args), (sy_call_t *)setresgid }, /* 312 = setresgid */
+ { 0, (sy_call_t *)nosys }, /* 313 = obsolete signanosleep */
+ { AS(aio_return_args), (sy_call_t *)lkmressys }, /* 314 = aio_return */
+ { AS(aio_suspend_args), (sy_call_t *)lkmressys }, /* 315 = aio_suspend */
+ { AS(aio_cancel_args), (sy_call_t *)lkmressys }, /* 316 = aio_cancel */
+ { AS(aio_error_args), (sy_call_t *)lkmressys }, /* 317 = aio_error */
+ { AS(aio_read_args), (sy_call_t *)lkmressys }, /* 318 = aio_read */
+ { AS(aio_write_args), (sy_call_t *)lkmressys }, /* 319 = aio_write */
+ { AS(lio_listio_args), (sy_call_t *)lkmressys }, /* 320 = lio_listio */
+ { SYF_MPSAFE | 0, (sy_call_t *)yield }, /* 321 = yield */
+ { 0, (sy_call_t *)nosys }, /* 322 = obsolete thr_sleep */
+ { 0, (sy_call_t *)nosys }, /* 323 = obsolete thr_wakeup */
+ { SYF_MPSAFE | AS(mlockall_args), (sy_call_t *)mlockall }, /* 324 = mlockall */
+ { SYF_MPSAFE | 0, (sy_call_t *)munlockall }, /* 325 = munlockall */
+ { AS(__getcwd_args), (sy_call_t *)__getcwd }, /* 326 = __getcwd */
+ { SYF_MPSAFE | AS(sched_setparam_args), (sy_call_t *)sched_setparam }, /* 327 = sched_setparam */
+ { SYF_MPSAFE | AS(sched_getparam_args), (sy_call_t *)sched_getparam }, /* 328 = sched_getparam */
+ { SYF_MPSAFE | AS(sched_setscheduler_args), (sy_call_t *)sched_setscheduler }, /* 329 = sched_setscheduler */
+ { SYF_MPSAFE | AS(sched_getscheduler_args), (sy_call_t *)sched_getscheduler }, /* 330 = sched_getscheduler */
+ { SYF_MPSAFE | 0, (sy_call_t *)sched_yield }, /* 331 = sched_yield */
+ { SYF_MPSAFE | AS(sched_get_priority_max_args), (sy_call_t *)sched_get_priority_max }, /* 332 = sched_get_priority_max */
+ { SYF_MPSAFE | AS(sched_get_priority_min_args), (sy_call_t *)sched_get_priority_min }, /* 333 = sched_get_priority_min */
+ { SYF_MPSAFE | AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval }, /* 334 = sched_rr_get_interval */
+ { AS(utrace_args), (sy_call_t *)utrace }, /* 335 = utrace */
+ { SYF_MPSAFE | AS(sendfile_args), (sy_call_t *)sendfile }, /* 336 = sendfile */
+ { AS(kldsym_args), (sy_call_t *)kldsym }, /* 337 = kldsym */
+ { SYF_MPSAFE | AS(jail_args), (sy_call_t *)jail }, /* 338 = jail */
+ { 0, (sy_call_t *)nosys }, /* 339 = pioctl */
+ { SYF_MPSAFE | AS(sigprocmask_args), (sy_call_t *)sigprocmask }, /* 340 = sigprocmask */
+ { SYF_MPSAFE | AS(sigsuspend_args), (sy_call_t *)sigsuspend }, /* 341 = sigsuspend */
+ { SYF_MPSAFE | AS(sigaction_args), (sy_call_t *)sigaction }, /* 342 = sigaction */
+ { SYF_MPSAFE | AS(sigpending_args), (sy_call_t *)sigpending }, /* 343 = sigpending */
+ { AS(sigreturn_args), (sy_call_t *)sigreturn }, /* 344 = sigreturn */
+ { 0, (sy_call_t *)nosys }, /* 345 = sigtimedwait */
+ { 0, (sy_call_t *)nosys }, /* 346 = sigwaitinfo */
+ { SYF_MPSAFE | AS(__acl_get_file_args), (sy_call_t *)__acl_get_file }, /* 347 = __acl_get_file */
+ { SYF_MPSAFE | AS(__acl_set_file_args), (sy_call_t *)__acl_set_file }, /* 348 = __acl_set_file */
+ { SYF_MPSAFE | AS(__acl_get_fd_args), (sy_call_t *)__acl_get_fd }, /* 349 = __acl_get_fd */
+ { SYF_MPSAFE | AS(__acl_set_fd_args), (sy_call_t *)__acl_set_fd }, /* 350 = __acl_set_fd */
+ { SYF_MPSAFE | AS(__acl_delete_file_args), (sy_call_t *)__acl_delete_file }, /* 351 = __acl_delete_file */
+ { SYF_MPSAFE | AS(__acl_delete_fd_args), (sy_call_t *)__acl_delete_fd }, /* 352 = __acl_delete_fd */
+ { SYF_MPSAFE | AS(__acl_aclcheck_file_args), (sy_call_t *)__acl_aclcheck_file }, /* 353 = __acl_aclcheck_file */
+ { SYF_MPSAFE | AS(__acl_aclcheck_fd_args), (sy_call_t *)__acl_aclcheck_fd }, /* 354 = __acl_aclcheck_fd */
+ { AS(extattrctl_args), (sy_call_t *)extattrctl }, /* 355 = extattrctl */
+ { AS(extattr_set_file_args), (sy_call_t *)extattr_set_file }, /* 356 = extattr_set_file */
+ { AS(extattr_get_file_args), (sy_call_t *)extattr_get_file }, /* 357 = extattr_get_file */
+ { AS(extattr_delete_file_args), (sy_call_t *)extattr_delete_file }, /* 358 = extattr_delete_file */
+ { AS(aio_waitcomplete_args), (sy_call_t *)lkmressys }, /* 359 = aio_waitcomplete */
+ { SYF_MPSAFE | AS(getresuid_args), (sy_call_t *)getresuid }, /* 360 = getresuid */
+ { SYF_MPSAFE | AS(getresgid_args), (sy_call_t *)getresgid }, /* 361 = getresgid */
+ { SYF_MPSAFE | 0, (sy_call_t *)kqueue }, /* 362 = kqueue */
+ { SYF_MPSAFE | AS(kevent_args), (sy_call_t *)kevent }, /* 363 = kevent */
+ { AS(__cap_get_proc_args), (sy_call_t *)__cap_get_proc }, /* 364 = __cap_get_proc */
+ { AS(__cap_set_proc_args), (sy_call_t *)__cap_set_proc }, /* 365 = __cap_set_proc */
+ { AS(__cap_get_fd_args), (sy_call_t *)__cap_get_fd }, /* 366 = __cap_get_fd */
+ { AS(__cap_get_file_args), (sy_call_t *)__cap_get_file }, /* 367 = __cap_get_file */
+ { AS(__cap_set_fd_args), (sy_call_t *)__cap_set_fd }, /* 368 = __cap_set_fd */
+ { AS(__cap_set_file_args), (sy_call_t *)__cap_set_file }, /* 369 = __cap_set_file */
+ { AS(nosys_args), (sy_call_t *)lkmressys }, /* 370 = lkmressys */
+ { AS(extattr_set_fd_args), (sy_call_t *)extattr_set_fd }, /* 371 = extattr_set_fd */
+ { AS(extattr_get_fd_args), (sy_call_t *)extattr_get_fd }, /* 372 = extattr_get_fd */
+ { AS(extattr_delete_fd_args), (sy_call_t *)extattr_delete_fd }, /* 373 = extattr_delete_fd */
+ { SYF_MPSAFE | AS(__setugid_args), (sy_call_t *)__setugid }, /* 374 = __setugid */
+ { AS(nfsclnt_args), (sy_call_t *)nosys }, /* 375 = nfsclnt */
+ { AS(eaccess_args), (sy_call_t *)eaccess }, /* 376 = eaccess */
+ { 0, (sy_call_t *)nosys }, /* 377 = afs_syscall */
+ { AS(nmount_args), (sy_call_t *)nmount }, /* 378 = nmount */
+ { 0, (sy_call_t *)kse_exit }, /* 379 = kse_exit */
+ { 0, (sy_call_t *)kse_wakeup }, /* 380 = kse_wakeup */
+ { AS(kse_new_args), (sy_call_t *)kse_new }, /* 381 = kse_new */
+ { AS(thread_wakeup_args), (sy_call_t *)thread_wakeup }, /* 382 = thread_wakeup */
+ { 0, (sy_call_t *)kse_yield }, /* 383 = kse_yield */
+ { 0, (sy_call_t *)nosys }, /* 384 = __mac_get_proc */
+ { 0, (sy_call_t *)nosys }, /* 385 = __mac_set_proc */
+ { 0, (sy_call_t *)nosys }, /* 386 = __mac_get_fd */
+ { 0, (sy_call_t *)nosys }, /* 387 = __mac_get_file */
+ { 0, (sy_call_t *)nosys }, /* 388 = __mac_set_fd */
+ { 0, (sy_call_t *)nosys }, /* 389 = __mac_set_file */
+};
diff --git a/sys/ia64/ia32/imgact_ia32.c b/sys/ia64/ia32/imgact_ia32.c
new file mode 100644
index 0000000..24ab656
--- /dev/null
+++ b/sys/ia64/ia32/imgact_ia32.c
@@ -0,0 +1,1445 @@
+/*-
+ * Copyright (c) 2000 David O'Brien
+ * Copyright (c) 1995-1996 Søren Schmidt
+ * Copyright (c) 1996 Peter Wemm
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software withough specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/param.h>
+#include <sys/exec.h>
+#include <sys/fcntl.h>
+#include <sys/imgact.h>
+#include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/malloc.h>
+#include <sys/mutex.h>
+#include <sys/mman.h>
+#include <sys/namei.h>
+#include <sys/pioctl.h>
+#include <sys/proc.h>
+#include <sys/procfs.h>
+#include <sys/resourcevar.h>
+#include <sys/systm.h>
+#include <sys/signalvar.h>
+#include <sys/stat.h>
+#include <sys/sx.h>
+#include <sys/syscall.h>
+#include <sys/sysctl.h>
+#include <sys/sysent.h>
+#include <sys/vnode.h>
+
+#include <vm/vm.h>
+#include <vm/vm_kern.h>
+#include <vm/vm_param.h>
+#include <vm/pmap.h>
+#include <vm/vm_map.h>
+#include <vm/vm_object.h>
+#include <vm/vm_extern.h>
+
+#include <ia64/ia32/imgact_ia32.h>
+#include <i386/include/psl.h>
+#include <i386/include/segments.h>
+#include <i386/include/specialreg.h>
+#include <machine/md_var.h>
+
+#define OLD_EI_BRAND 8
+
+__ElfType(Brandinfo);
+__ElfType(Auxargs);
+
+#define IA32_USRSTACK (3L*1024*1024*1024)
+#define IA32_PS_STRINGS (IA32_USRSTACK - sizeof(struct ia32_ps_strings))
+
+extern int suhword(void *p, u_int32_t v);
+
+static int elf32_check_header(const Elf32_Ehdr *hdr);
+static int elf32_freebsd_fixup(register_t **stack_base,
+ struct image_params *imgp);
+static int elf32_load_file(struct proc *p, const char *file, u_long *addr,
+ u_long *entry);
+static int elf32_load_section(struct proc *p,
+ struct vmspace *vmspace, struct vnode *vp,
+ vm_offset_t offset, caddr_t vmaddr, size_t memsz, size_t filsz,
+ vm_prot_t prot);
+static int exec_elf32_imgact(struct image_params *imgp);
+static int elf32_coredump(struct thread *td, struct vnode *vp, off_t limit);
+static register_t *elf32_copyout_strings(struct image_params *imgp);
+static void elf32_setregs(struct thread *td, u_long entry, u_long stack,
+ u_long ps_strings);
+
+static int elf32_trace = 0;
+SYSCTL_INT(_debug, OID_AUTO, elf32_trace, CTLFLAG_RW, &elf32_trace, 0, "");
+
+extern struct sysent ia32_sysent[];
+
+static char ia32_sigcode[] = {
+ 0xff, 0x54, 0x24, 0x10, /* call *SIGF_HANDLER(%esp) */
+ 0x8d, 0x44, 0x24, 0x14, /* lea SIGF_UC(%esp),%eax */
+ 0x50, /* pushl %eax */
+ 0xf7, 0x40, 0x54, 0x00, 0x00, 0x02, 0x02, /* testl $PSL_VM,UC_EFLAGS(%eax) */
+ 0x75, 0x03, /* jne 9f */
+ 0x8e, 0x68, 0x14, /* movl UC_GS(%eax),%gs */
+ 0xb8, 0x57, 0x01, 0x00, 0x00, /* 9: movl $SYS_sigreturn,%eax */
+ 0x50, /* pushl %eax */
+ 0xcd, 0x80, /* int $0x80 */
+ 0xeb, 0xfe, /* 0: jmp 0b */
+ 0, 0, 0, 0
+};
+static int ia32_szsigcode = sizeof(ia32_sigcode) & ~3;
+
+struct sysentvec elf32_freebsd_sysvec = {
+ SYS_MAXSYSCALL,
+ ia32_sysent,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ elf32_freebsd_fixup,
+ sendsig,
+ ia32_sigcode,
+ &ia32_szsigcode,
+ 0,
+ "FreeBSD ELF",
+ elf32_coredump,
+ NULL,
+ MINSIGSTKSZ,
+ elf32_copyout_strings,
+ elf32_setregs
+};
+
+static Elf32_Brandinfo freebsd_brand_info = {
+ ELFOSABI_FREEBSD,
+ "FreeBSD",
+ "",
+ "/usr/libexec/ld-elf.so.1",
+ &elf32_freebsd_sysvec
+ };
+static Elf32_Brandinfo *elf32_brand_list[MAX_BRANDS] = {
+ &freebsd_brand_info,
+ NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL
+ };
+
+#if 0
+
+int
+elf32_insert_brand_entry(Elf32_Brandinfo *entry)
+{
+ int i;
+
+ for (i=1; i<MAX_BRANDS; i++) {
+ if (elf32_brand_list[i] == NULL) {
+ elf32_brand_list[i] = entry;
+ break;
+ }
+ }
+ if (i == MAX_BRANDS)
+ return -1;
+ return 0;
+}
+
+int
+elf32_remove_brand_entry(Elf32_Brandinfo *entry)
+{
+ int i;
+
+ for (i=1; i<MAX_BRANDS; i++) {
+ if (elf32_brand_list[i] == entry) {
+ elf32_brand_list[i] = NULL;
+ break;
+ }
+ }
+ if (i == MAX_BRANDS)
+ return -1;
+ return 0;
+}
+
+int
+elf32_brand_inuse(Elf32_Brandinfo *entry)
+{
+ struct proc *p;
+ int rval = FALSE;
+
+ sx_slock(&allproc_lock);
+ LIST_FOREACH(p, &allproc, p_list) {
+ if (p->p_sysent == entry->sysvec) {
+ rval = TRUE;
+ break;
+ }
+ }
+ sx_sunlock(&allproc_lock);
+
+ return (rval);
+}
+
+#endif
+
+static int
+elf32_check_header(const Elf32_Ehdr *hdr)
+{
+ if (!IS_ELF(*hdr) ||
+ hdr->e_ident[EI_CLASS] != ELF_TARG_CLASS ||
+ hdr->e_ident[EI_DATA] != ELF_TARG_DATA ||
+ hdr->e_ident[EI_VERSION] != EV_CURRENT)
+ return ENOEXEC;
+
+ if (!ELF_MACHINE_OK(hdr->e_machine))
+ return ENOEXEC;
+
+ if (hdr->e_version != ELF_TARG_VER)
+ return ENOEXEC;
+
+ return 0;
+}
+
+#define PAGE4K_SHIFT 12
+#define PAGE4K_MASK ((1 << PAGE4K_SHIFT)-1)
+#define round_page4k(x) (((x) + PAGE4K_MASK) & ~(PAGE4K_MASK))
+#define trunc_page4k(x) ((x) & ~(PAGE4K_MASK))
+
+static int
+elf32_map_partial(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
+ vm_offset_t start, vm_offset_t end, vm_prot_t prot,
+ vm_prot_t max)
+{
+ int error, rv;
+ vm_offset_t off;
+ vm_offset_t data_buf = 0;
+
+ /*
+ * Create the page if it doesn't exist yet. Ignore errors.
+ */
+ vm_map_lock(map);
+ vm_map_insert(map, NULL, 0, trunc_page(start), round_page(end),
+ max, max, 0);
+ vm_map_unlock(map);
+
+ /*
+ * Find the page from the underlying object.
+ */
+ if (object) {
+ vm_object_reference(object);
+ rv = vm_map_find(exec_map,
+ object,
+ trunc_page(offset),
+ &data_buf,
+ PAGE_SIZE,
+ TRUE,
+ VM_PROT_READ,
+ VM_PROT_ALL,
+ MAP_COPY_ON_WRITE | MAP_PREFAULT_PARTIAL);
+ if (rv != KERN_SUCCESS) {
+ vm_object_deallocate(object);
+ return rv;
+ }
+
+ off = offset - trunc_page(offset);
+ error = copyout((caddr_t)data_buf+off, (caddr_t)start, end - start);
+ vm_map_remove(exec_map, data_buf, data_buf + PAGE_SIZE);
+ if (error) {
+ return KERN_FAILURE;
+ }
+ }
+
+ return KERN_SUCCESS;
+}
+
+static int
+elf32_map_insert(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
+ vm_offset_t start, vm_offset_t end, vm_prot_t prot,
+ vm_prot_t max, int cow)
+{
+ int rv;
+
+ if (start != trunc_page(start)) {
+ rv = elf32_map_partial(map, object, offset,
+ start, round_page(start), prot, max);
+ if (rv)
+ return rv;
+ start = round_page(start);
+ offset = round_page(offset);
+ }
+ if (end != round_page(end)) {
+ rv = elf32_map_partial(map, object, offset,
+ trunc_page(end), end, prot, max);
+ if (rv)
+ return rv;
+ end = trunc_page(end);
+ }
+ if (end > start) {
+ vm_map_lock(map);
+ rv = vm_map_insert(map, object, offset, start, end,
+ prot, max, cow);
+ vm_map_unlock(map);
+ return rv;
+ } else {
+ return KERN_SUCCESS;
+ }
+}
+
+static int
+elf32_load_section(struct proc *p, struct vmspace *vmspace, struct vnode *vp, vm_offset_t offset, caddr_t vmaddr, size_t memsz, size_t filsz, vm_prot_t prot)
+{
+ size_t map_len;
+ vm_offset_t map_addr;
+ int error, rv;
+ size_t copy_len;
+ vm_object_t object;
+ vm_offset_t file_addr;
+ vm_offset_t data_buf = 0;
+
+ GIANT_REQUIRED;
+
+ VOP_GETVOBJECT(vp, &object);
+ error = 0;
+
+ /*
+ * It's necessary to fail if the filsz + offset taken from the
+ * header is greater than the actual file pager object's size.
+ * If we were to allow this, then the vm_map_find() below would
+ * walk right off the end of the file object and into the ether.
+ *
+ * While I'm here, might as well check for something else that
+ * is invalid: filsz cannot be greater than memsz.
+ */
+ if ((off_t)filsz + offset > object->un_pager.vnp.vnp_size ||
+ filsz > memsz) {
+ uprintf("elf32_load_section: truncated ELF file\n");
+ return (ENOEXEC);
+ }
+
+ map_addr = trunc_page4k((vm_offset_t)vmaddr);
+ file_addr = trunc_page4k(offset);
+
+ /*
+ * We have two choices. We can either clear the data in the last page
+ * of an oversized mapping, or we can start the anon mapping a page
+ * early and copy the initialized data into that first page. We
+ * choose the second..
+ */
+ if (memsz > filsz)
+ map_len = trunc_page4k(offset+filsz) - file_addr;
+ else
+ map_len = round_page4k(offset+filsz) - file_addr;
+
+ if (map_len != 0) {
+ vm_object_reference(object);
+ rv = elf32_map_insert(&vmspace->vm_map,
+ object,
+ file_addr, /* file offset */
+ map_addr, /* virtual start */
+ map_addr + map_len,/* virtual end */
+ prot,
+ VM_PROT_ALL,
+ MAP_COPY_ON_WRITE | MAP_PREFAULT);
+ if (rv != KERN_SUCCESS) {
+ vm_object_deallocate(object);
+ return EINVAL;
+ }
+
+ /* we can stop now if we've covered it all */
+ if (memsz == filsz) {
+ return 0;
+ }
+ }
+
+
+ /*
+ * We have to get the remaining bit of the file into the first part
+ * of the oversized map segment. This is normally because the .data
+ * segment in the file is extended to provide bss. It's a neat idea
+ * to try and save a page, but it's a pain in the behind to implement.
+ */
+ copy_len = (offset + filsz) - trunc_page4k(offset + filsz);
+ map_addr = trunc_page4k((vm_offset_t)vmaddr + filsz);
+ map_len = round_page4k((vm_offset_t)vmaddr + memsz) - map_addr;
+
+ /* This had damn well better be true! */
+ if (map_len != 0) {
+ rv = elf32_map_insert(&vmspace->vm_map, NULL, 0,
+ map_addr, map_addr + map_len,
+ VM_PROT_ALL, VM_PROT_ALL, 0);
+ if (rv != KERN_SUCCESS) {
+ return EINVAL;
+ }
+ }
+
+ if (copy_len != 0) {
+ vm_offset_t off;
+ vm_object_reference(object);
+ rv = vm_map_find(exec_map,
+ object,
+ trunc_page(offset + filsz),
+ &data_buf,
+ PAGE_SIZE,
+ TRUE,
+ VM_PROT_READ,
+ VM_PROT_ALL,
+ MAP_COPY_ON_WRITE | MAP_PREFAULT_PARTIAL);
+ if (rv != KERN_SUCCESS) {
+ vm_object_deallocate(object);
+ return EINVAL;
+ }
+
+ /* send the page fragment to user space */
+ off = trunc_page4k(offset + filsz) - trunc_page(offset + filsz);
+ error = copyout((caddr_t)data_buf+off, (caddr_t)map_addr, copy_len);
+ vm_map_remove(exec_map, data_buf, data_buf + PAGE_SIZE);
+ if (error) {
+ return (error);
+ }
+ }
+
+ /*
+ * set it to the specified protection
+ */
+ vm_map_protect(&vmspace->vm_map, map_addr, map_addr + map_len, prot,
+ FALSE);
+
+ return error;
+}
+
+/*
+ * Load the file "file" into memory. It may be either a shared object
+ * or an executable.
+ *
+ * The "addr" reference parameter is in/out. On entry, it specifies
+ * the address where a shared object should be loaded. If the file is
+ * an executable, this value is ignored. On exit, "addr" specifies
+ * where the file was actually loaded.
+ *
+ * The "entry" reference parameter is out only. On exit, it specifies
+ * the entry point for the loaded file.
+ */
+static int
+elf32_load_file(struct proc *p, const char *file, u_long *addr, u_long *entry)
+{
+ struct {
+ struct nameidata nd;
+ struct vattr attr;
+ struct image_params image_params;
+ } *tempdata;
+ const Elf32_Ehdr *hdr = NULL;
+ const Elf32_Phdr *phdr = NULL;
+ struct nameidata *nd;
+ struct vmspace *vmspace = p->p_vmspace;
+ struct vattr *attr;
+ struct image_params *imgp;
+ vm_prot_t prot;
+ u_long rbase;
+ u_long base_addr = 0;
+ int error, i, numsegs;
+
+ if (curthread->td_proc != p)
+ panic("elf32_load_file - thread"); /* XXXKSE DIAGNOSTIC */
+
+ tempdata = malloc(sizeof(*tempdata), M_TEMP, M_WAITOK);
+ nd = &tempdata->nd;
+ attr = &tempdata->attr;
+ imgp = &tempdata->image_params;
+
+ /*
+ * Initialize part of the common data
+ */
+ imgp->proc = p;
+ imgp->uap = NULL;
+ imgp->attr = attr;
+ imgp->firstpage = NULL;
+ imgp->image_header = (char *)kmem_alloc_wait(exec_map, PAGE_SIZE);
+
+ if (imgp->image_header == NULL) {
+ nd->ni_vp = NULL;
+ error = ENOMEM;
+ goto fail;
+ }
+
+ /* XXXKSE */
+ NDINIT(nd, LOOKUP, LOCKLEAF|FOLLOW, UIO_SYSSPACE, file, curthread);
+
+ if ((error = namei(nd)) != 0) {
+ nd->ni_vp = NULL;
+ goto fail;
+ }
+ NDFREE(nd, NDF_ONLY_PNBUF);
+ imgp->vp = nd->ni_vp;
+
+ /*
+ * Check permissions, modes, uid, etc on the file, and "open" it.
+ */
+ error = exec_check_permissions(imgp);
+ if (error) {
+ VOP_UNLOCK(nd->ni_vp, 0, curthread); /* XXXKSE */
+ goto fail;
+ }
+
+ error = exec_map_first_page(imgp);
+ /*
+ * Also make certain that the interpreter stays the same, so set
+ * its VTEXT flag, too.
+ */
+ if (error == 0)
+ nd->ni_vp->v_flag |= VTEXT;
+ VOP_UNLOCK(nd->ni_vp, 0, curthread); /* XXXKSE */
+ if (error)
+ goto fail;
+
+ hdr = (const Elf32_Ehdr *)imgp->image_header;
+ if ((error = elf32_check_header(hdr)) != 0)
+ goto fail;
+ if (hdr->e_type == ET_DYN)
+ rbase = *addr;
+ else if (hdr->e_type == ET_EXEC)
+ rbase = 0;
+ else {
+ error = ENOEXEC;
+ goto fail;
+ }
+
+ /* Only support headers that fit within first page for now */
+ if ((hdr->e_phoff > PAGE_SIZE) ||
+ (hdr->e_phoff + hdr->e_phentsize * hdr->e_phnum) > PAGE_SIZE) {
+ error = ENOEXEC;
+ goto fail;
+ }
+
+ phdr = (const Elf32_Phdr *)(imgp->image_header + hdr->e_phoff);
+
+ for (i = 0, numsegs = 0; i < hdr->e_phnum; i++) {
+ if (phdr[i].p_type == PT_LOAD) { /* Loadable segment */
+ prot = 0;
+ if (phdr[i].p_flags & PF_X)
+ prot |= VM_PROT_EXECUTE;
+ if (phdr[i].p_flags & PF_W)
+ prot |= VM_PROT_WRITE;
+ if (phdr[i].p_flags & PF_R)
+ prot |= VM_PROT_READ;
+
+ if ((error = elf32_load_section(p, vmspace, nd->ni_vp,
+ phdr[i].p_offset,
+ (caddr_t)(uintptr_t)phdr[i].p_vaddr +
+ rbase,
+ phdr[i].p_memsz,
+ phdr[i].p_filesz, prot)) != 0)
+ goto fail;
+ /*
+ * Establish the base address if this is the
+ * first segment.
+ */
+ if (numsegs == 0)
+ base_addr = trunc_page(phdr[i].p_vaddr + rbase);
+ numsegs++;
+ }
+ }
+ *addr = base_addr;
+ *entry=(unsigned long)hdr->e_entry + rbase;
+
+fail:
+ if (imgp->firstpage)
+ exec_unmap_first_page(imgp);
+ if (imgp->image_header)
+ kmem_free_wakeup(exec_map, (vm_offset_t)imgp->image_header,
+ PAGE_SIZE);
+ if (nd->ni_vp)
+ vrele(nd->ni_vp);
+
+ free(tempdata, M_TEMP);
+
+ return error;
+}
+
+/*
+ * non static, as it can be overridden by start_init()
+ */
+#ifdef __ia64__
+int fallback_elf32_brand = ELFOSABI_FREEBSD;
+#else
+int fallback_elf32_brand = -1;
+#endif
+SYSCTL_INT(_kern, OID_AUTO, fallback_elf32_brand, CTLFLAG_RW,
+ &fallback_elf32_brand, -1,
+ "ELF brand of last resort");
+
+static int
+exec_elf32_imgact(struct image_params *imgp)
+{
+ const Elf32_Ehdr *hdr = (const Elf32_Ehdr *) imgp->image_header;
+ const Elf32_Phdr *phdr;
+ Elf32_Auxargs *elf32_auxargs = NULL;
+ struct vmspace *vmspace;
+ vm_prot_t prot;
+ u_long text_size = 0, data_size = 0;
+ u_long text_addr = 0, data_addr = 0;
+ u_long addr, entry = 0, proghdr = 0;
+ int error, i;
+ const char *interp = NULL;
+ Elf32_Brandinfo *brand_info;
+ char *path;
+
+ GIANT_REQUIRED;
+
+ /*
+ * Do we have a valid ELF header ?
+ */
+ if (elf32_check_header(hdr) != 0 || hdr->e_type != ET_EXEC)
+ return -1;
+
+ /*
+ * From here on down, we return an errno, not -1, as we've
+ * detected an ELF file.
+ */
+
+ if ((hdr->e_phoff > PAGE_SIZE) ||
+ (hdr->e_phoff + hdr->e_phentsize * hdr->e_phnum) > PAGE_SIZE) {
+ /* Only support headers in first page for now */
+ return ENOEXEC;
+ }
+ phdr = (const Elf32_Phdr*)(imgp->image_header + hdr->e_phoff);
+
+ /*
+ * From this point on, we may have resources that need to be freed.
+ */
+
+ /*
+ * Yeah, I'm paranoid. There is every reason in the world to get
+ * VTEXT now since from here on out, there are places we can have
+ * a context switch. Better safe than sorry; I really don't want
+ * the file to change while it's being loaded.
+ */
+ mtx_lock(&imgp->vp->v_interlock);
+ imgp->vp->v_flag |= VTEXT;
+ mtx_unlock(&imgp->vp->v_interlock);
+
+ if ((error = exec_extract_strings(imgp)) != 0)
+ goto fail;
+
+ exec_new_vmspace(imgp, IA32_USRSTACK);
+
+ vmspace = imgp->proc->p_vmspace;
+
+ for (i = 0; i < hdr->e_phnum; i++) {
+ switch(phdr[i].p_type) {
+
+ case PT_LOAD: /* Loadable segment */
+ prot = 0;
+ if (phdr[i].p_flags & PF_X)
+ prot |= VM_PROT_EXECUTE;
+ if (phdr[i].p_flags & PF_W)
+ prot |= VM_PROT_WRITE;
+ if (phdr[i].p_flags & PF_R)
+ prot |= VM_PROT_READ;
+
+ if ((error = elf32_load_section(imgp->proc,
+ vmspace, imgp->vp,
+ phdr[i].p_offset,
+ (caddr_t)(uintptr_t)phdr[i].p_vaddr,
+ phdr[i].p_memsz,
+ phdr[i].p_filesz, prot)) != 0)
+ goto fail;
+
+ /*
+ * Is this .text or .data ??
+ *
+ * We only handle one each of those yet XXX
+ */
+ if (hdr->e_entry >= phdr[i].p_vaddr &&
+ hdr->e_entry <(phdr[i].p_vaddr+phdr[i].p_memsz)) {
+ text_addr = trunc_page(phdr[i].p_vaddr);
+ text_size = round_page(phdr[i].p_memsz +
+ phdr[i].p_vaddr -
+ text_addr);
+ entry = (u_long)hdr->e_entry;
+ } else {
+ data_addr = trunc_page(phdr[i].p_vaddr);
+ data_size = round_page(phdr[i].p_memsz +
+ phdr[i].p_vaddr -
+ data_addr);
+ }
+ break;
+ case PT_INTERP: /* Path to interpreter */
+ if (phdr[i].p_filesz > MAXPATHLEN ||
+ phdr[i].p_offset + phdr[i].p_filesz > PAGE_SIZE) {
+ error = ENOEXEC;
+ goto fail;
+ }
+ interp = imgp->image_header + phdr[i].p_offset;
+ break;
+ case PT_PHDR: /* Program header table info */
+ proghdr = phdr[i].p_vaddr;
+ break;
+ default:
+ break;
+ }
+ }
+
+ vmspace->vm_tsize = text_size >> PAGE_SHIFT;
+ vmspace->vm_taddr = (caddr_t)(uintptr_t)text_addr;
+ vmspace->vm_dsize = data_size >> PAGE_SHIFT;
+ vmspace->vm_daddr = (caddr_t)(uintptr_t)data_addr;
+
+ addr = ELF_RTLD_ADDR(vmspace);
+
+ imgp->entry_addr = entry;
+
+ brand_info = NULL;
+
+ /* We support three types of branding -- (1) the ELF EI_OSABI field
+ * that SCO added to the ELF spec, (2) FreeBSD 3.x's traditional string
+ * branding w/in the ELF header, and (3) path of the `interp_path'
+ * field. We should also look for an ".note.ABI-tag" ELF section now
+ * in all Linux ELF binaries, FreeBSD 4.1+, and some NetBSD ones.
+ */
+
+ /* If the executable has a brand, search for it in the brand list. */
+ if (brand_info == NULL) {
+ for (i = 0; i < MAX_BRANDS; i++) {
+ Elf32_Brandinfo *bi = elf32_brand_list[i];
+
+ if (bi != NULL &&
+ (hdr->e_ident[EI_OSABI] == bi->brand
+ || 0 ==
+ strncmp((const char *)&hdr->e_ident[OLD_EI_BRAND],
+ bi->compat_3_brand, strlen(bi->compat_3_brand)))) {
+ brand_info = bi;
+ break;
+ }
+ }
+ }
+
+ /* Lacking a known brand, search for a recognized interpreter. */
+ if (brand_info == NULL && interp != NULL) {
+ for (i = 0; i < MAX_BRANDS; i++) {
+ Elf32_Brandinfo *bi = elf32_brand_list[i];
+
+ if (bi != NULL &&
+ strcmp(interp, bi->interp_path) == 0) {
+ brand_info = bi;
+ break;
+ }
+ }
+ }
+
+ /* Lacking a recognized interpreter, try the default brand */
+ if (brand_info == NULL) {
+ for (i = 0; i < MAX_BRANDS; i++) {
+ Elf32_Brandinfo *bi = elf32_brand_list[i];
+
+ if (bi != NULL && fallback_elf32_brand == bi->brand) {
+ brand_info = bi;
+ break;
+ }
+ }
+ }
+
+ if (brand_info == NULL) {
+ uprintf("ELF binary type \"%u\" not known.\n",
+ hdr->e_ident[EI_OSABI]);
+ error = ENOEXEC;
+ goto fail;
+ }
+
+ imgp->proc->p_sysent = brand_info->sysvec;
+ if (interp != NULL) {
+ path = malloc(MAXPATHLEN, M_TEMP, M_WAITOK);
+ snprintf(path, MAXPATHLEN, "%s%s",
+ brand_info->emul_path, interp);
+ if ((error = elf32_load_file(imgp->proc, path, &addr,
+ &imgp->entry_addr)) != 0) {
+ if ((error = elf32_load_file(imgp->proc, interp, &addr,
+ &imgp->entry_addr)) != 0) {
+ uprintf("ELF interpreter %s not found\n", path);
+ free(path, M_TEMP);
+ goto fail;
+ }
+ }
+ free(path, M_TEMP);
+ }
+
+ /*
+ * Construct auxargs table (used by the fixup routine)
+ */
+ elf32_auxargs = malloc(sizeof(Elf32_Auxargs), M_TEMP, M_WAITOK);
+ elf32_auxargs->execfd = -1;
+ elf32_auxargs->phdr = proghdr;
+ elf32_auxargs->phent = hdr->e_phentsize;
+ elf32_auxargs->phnum = hdr->e_phnum;
+ elf32_auxargs->pagesz = PAGE_SIZE;
+ elf32_auxargs->base = addr;
+ elf32_auxargs->flags = 0;
+ elf32_auxargs->entry = entry;
+ elf32_auxargs->trace = elf32_trace;
+
+ imgp->auxargs = elf32_auxargs;
+ imgp->interpreted = 0;
+
+fail:
+ return error;
+}
+
+#define AUXARGS32_ENTRY(pos, id, val) {suhword(pos++, id); suhword(pos++, val);}
+
+static int
+elf32_freebsd_fixup(register_t **stack_base, struct image_params *imgp)
+{
+ Elf32_Auxargs *args = (Elf32_Auxargs *)imgp->auxargs;
+ u_int32_t *pos;
+
+ pos = *(u_int32_t **)stack_base + (imgp->argc + imgp->envc + 2);
+
+ if (args->trace) {
+ AUXARGS32_ENTRY(pos, AT_DEBUG, 1);
+ }
+ if (args->execfd != -1) {
+ AUXARGS32_ENTRY(pos, AT_EXECFD, args->execfd);
+ }
+ AUXARGS32_ENTRY(pos, AT_PHDR, args->phdr);
+ AUXARGS32_ENTRY(pos, AT_PHENT, args->phent);
+ AUXARGS32_ENTRY(pos, AT_PHNUM, args->phnum);
+ AUXARGS32_ENTRY(pos, AT_PAGESZ, args->pagesz);
+ AUXARGS32_ENTRY(pos, AT_FLAGS, args->flags);
+ AUXARGS32_ENTRY(pos, AT_ENTRY, args->entry);
+ AUXARGS32_ENTRY(pos, AT_BASE, args->base);
+ AUXARGS32_ENTRY(pos, AT_NULL, 0);
+
+ free(imgp->auxargs, M_TEMP);
+ imgp->auxargs = NULL;
+
+ (*(u_int32_t **)stack_base)--;
+ suhword(*stack_base, (long) imgp->argc);
+ return 0;
+}
+
+/*
+ * Code for generating ELF core dumps.
+ */
+
+typedef void (*segment_callback)(vm_map_entry_t, void *);
+
+/* Closure for cb_put_phdr(). */
+struct phdr_closure {
+ Elf32_Phdr *phdr; /* Program header to fill in */
+ Elf32_Off offset; /* Offset of segment in core file */
+};
+
+/* Closure for cb_size_segment(). */
+struct sseg_closure {
+ int count; /* Count of writable segments. */
+ size_t size; /* Total size of all writable segments. */
+};
+
+static void cb_put_phdr(vm_map_entry_t, void *);
+static void cb_size_segment(vm_map_entry_t, void *);
+static void each_writable_segment(struct proc *, segment_callback, void *);
+static int elf32_corehdr(struct thread *, struct vnode *, struct ucred *,
+ int, void *, size_t);
+static void elf32_puthdr(struct proc *, void *, size_t *,
+ const prstatus_t *, const prfpregset_t *, const prpsinfo_t *, int);
+static void elf32_putnote(void *, size_t *, const char *, int,
+ const void *, size_t);
+
+extern int osreldate;
+
+static int
+elf32_coredump(td, vp, limit)
+ struct thread *td;
+ register struct vnode *vp;
+ off_t limit;
+{
+ register struct proc *p = td->td_proc;
+ register struct ucred *cred = td->td_ucred;
+ int error = 0;
+ struct sseg_closure seginfo;
+ void *hdr;
+ size_t hdrsize;
+
+ /* Size the program segments. */
+ seginfo.count = 0;
+ seginfo.size = 0;
+ each_writable_segment(p, cb_size_segment, &seginfo);
+
+ /*
+ * Calculate the size of the core file header area by making
+ * a dry run of generating it. Nothing is written, but the
+ * size is calculated.
+ */
+ hdrsize = 0;
+ elf32_puthdr((struct proc *)NULL, (void *)NULL, &hdrsize,
+ (const prstatus_t *)NULL, (const prfpregset_t *)NULL,
+ (const prpsinfo_t *)NULL, seginfo.count);
+
+ if (hdrsize + seginfo.size >= limit)
+ return (EFAULT);
+
+ /*
+ * Allocate memory for building the header, fill it up,
+ * and write it out.
+ */
+ hdr = malloc(hdrsize, M_TEMP, M_WAITOK);
+ if (hdr == NULL) {
+ return EINVAL;
+ }
+ error = elf32_corehdr(td, vp, cred, seginfo.count, hdr, hdrsize);
+
+ /* Write the contents of all of the writable segments. */
+ if (error == 0) {
+ Elf32_Phdr *php;
+ off_t offset;
+ int i;
+
+ php = (Elf32_Phdr *)((char *)hdr + sizeof(Elf32_Ehdr)) + 1;
+ offset = hdrsize;
+ for (i = 0; i < seginfo.count; i++) {
+ error = vn_rdwr_inchunks(UIO_WRITE, vp,
+ (caddr_t)(uintptr_t)php->p_vaddr,
+ php->p_filesz, offset, UIO_USERSPACE,
+ IO_UNIT | IO_DIRECT, cred, (int *)NULL, curthread); /* XXXKSE */
+ if (error != 0)
+ break;
+ offset += php->p_filesz;
+ php++;
+ }
+ }
+ free(hdr, M_TEMP);
+
+ return error;
+}
+
+/*
+ * A callback for each_writable_segment() to write out the segment's
+ * program header entry.
+ */
+static void
+cb_put_phdr(entry, closure)
+ vm_map_entry_t entry;
+ void *closure;
+{
+ struct phdr_closure *phc = (struct phdr_closure *)closure;
+ Elf32_Phdr *phdr = phc->phdr;
+
+ phc->offset = round_page(phc->offset);
+
+ phdr->p_type = PT_LOAD;
+ phdr->p_offset = phc->offset;
+ phdr->p_vaddr = entry->start;
+ phdr->p_paddr = 0;
+ phdr->p_filesz = phdr->p_memsz = entry->end - entry->start;
+ phdr->p_align = PAGE_SIZE;
+ phdr->p_flags = 0;
+ if (entry->protection & VM_PROT_READ)
+ phdr->p_flags |= PF_R;
+ if (entry->protection & VM_PROT_WRITE)
+ phdr->p_flags |= PF_W;
+ if (entry->protection & VM_PROT_EXECUTE)
+ phdr->p_flags |= PF_X;
+
+ phc->offset += phdr->p_filesz;
+ phc->phdr++;
+}
+
+/*
+ * A callback for each_writable_segment() to gather information about
+ * the number of segments and their total size.
+ */
+static void
+cb_size_segment(entry, closure)
+ vm_map_entry_t entry;
+ void *closure;
+{
+ struct sseg_closure *ssc = (struct sseg_closure *)closure;
+
+ ssc->count++;
+ ssc->size += entry->end - entry->start;
+}
+
+/*
+ * For each writable segment in the process's memory map, call the given
+ * function with a pointer to the map entry and some arbitrary
+ * caller-supplied data.
+ */
+static void
+each_writable_segment(p, func, closure)
+ struct proc *p;
+ segment_callback func;
+ void *closure;
+{
+ vm_map_t map = &p->p_vmspace->vm_map;
+ vm_map_entry_t entry;
+
+ for (entry = map->header.next; entry != &map->header;
+ entry = entry->next) {
+ vm_object_t obj;
+
+ if ((entry->eflags & MAP_ENTRY_IS_SUB_MAP) ||
+ (entry->protection & (VM_PROT_READ|VM_PROT_WRITE)) !=
+ (VM_PROT_READ|VM_PROT_WRITE))
+ continue;
+
+ /*
+ ** Dont include memory segment in the coredump if
+ ** MAP_NOCORE is set in mmap(2) or MADV_NOCORE in
+ ** madvise(2).
+ */
+ if (entry->eflags & MAP_ENTRY_NOCOREDUMP)
+ continue;
+
+ if ((obj = entry->object.vm_object) == NULL)
+ continue;
+
+ /* Find the deepest backing object. */
+ while (obj->backing_object != NULL)
+ obj = obj->backing_object;
+
+ /* Ignore memory-mapped devices and such things. */
+ if (obj->type != OBJT_DEFAULT &&
+ obj->type != OBJT_SWAP &&
+ obj->type != OBJT_VNODE)
+ continue;
+
+ (*func)(entry, closure);
+ }
+}
+
+/*
+ * Write the core file header to the file, including padding up to
+ * the page boundary.
+ */
+static int
+elf32_corehdr(td, vp, cred, numsegs, hdr, hdrsize)
+ struct thread *td;
+ struct vnode *vp;
+ struct ucred *cred;
+ int numsegs;
+ size_t hdrsize;
+ void *hdr;
+{
+ struct {
+ prstatus_t status;
+ prfpregset_t fpregset;
+ prpsinfo_t psinfo;
+ } *tempdata;
+ struct proc *p = td->td_proc;
+ size_t off;
+ prstatus_t *status;
+ prfpregset_t *fpregset;
+ prpsinfo_t *psinfo;
+
+ tempdata = malloc(sizeof(*tempdata), M_TEMP, M_ZERO | M_WAITOK);
+ status = &tempdata->status;
+ fpregset = &tempdata->fpregset;
+ psinfo = &tempdata->psinfo;
+
+ /* Gather the information for the header. */
+ status->pr_version = PRSTATUS_VERSION;
+ status->pr_statussz = sizeof(prstatus_t);
+ status->pr_gregsetsz = sizeof(gregset_t);
+ status->pr_fpregsetsz = sizeof(fpregset_t);
+ status->pr_osreldate = osreldate;
+ status->pr_cursig = p->p_sig;
+ status->pr_pid = p->p_pid;
+ fill_regs(td, &status->pr_reg);
+
+ fill_fpregs(td, fpregset);
+
+ psinfo->pr_version = PRPSINFO_VERSION;
+ psinfo->pr_psinfosz = sizeof(prpsinfo_t);
+ strncpy(psinfo->pr_fname, p->p_comm, sizeof(psinfo->pr_fname) - 1);
+
+ /* XXX - We don't fill in the command line arguments properly yet. */
+ strncpy(psinfo->pr_psargs, p->p_comm, PRARGSZ);
+
+ /* Fill in the header. */
+ bzero(hdr, hdrsize);
+ off = 0;
+ elf32_puthdr(p, hdr, &off, status, fpregset, psinfo, numsegs);
+
+ free(tempdata, M_TEMP);
+
+ /* Write it to the core file. */
+ return vn_rdwr_inchunks(UIO_WRITE, vp, hdr, hdrsize, (off_t)0,
+ UIO_SYSSPACE, IO_UNIT | IO_DIRECT, cred, NULL, td); /* XXXKSE */
+}
+
+static void
+elf32_puthdr(struct proc *p, void *dst, size_t *off, const prstatus_t *status,
+ const prfpregset_t *fpregset, const prpsinfo_t *psinfo, int numsegs)
+{
+ size_t ehoff;
+ size_t phoff;
+ size_t noteoff;
+ size_t notesz;
+
+ ehoff = *off;
+ *off += sizeof(Elf32_Ehdr);
+
+ phoff = *off;
+ *off += (numsegs + 1) * sizeof(Elf32_Phdr);
+
+ noteoff = *off;
+ elf32_putnote(dst, off, "FreeBSD", NT_PRSTATUS, status,
+ sizeof *status);
+ elf32_putnote(dst, off, "FreeBSD", NT_FPREGSET, fpregset,
+ sizeof *fpregset);
+ elf32_putnote(dst, off, "FreeBSD", NT_PRPSINFO, psinfo,
+ sizeof *psinfo);
+ notesz = *off - noteoff;
+
+ /* Align up to a page boundary for the program segments. */
+ *off = round_page(*off);
+
+ if (dst != NULL) {
+ Elf32_Ehdr *ehdr;
+ Elf32_Phdr *phdr;
+ struct phdr_closure phc;
+
+ /*
+ * Fill in the ELF header.
+ */
+ ehdr = (Elf32_Ehdr *)((char *)dst + ehoff);
+ ehdr->e_ident[EI_MAG0] = ELFMAG0;
+ ehdr->e_ident[EI_MAG1] = ELFMAG1;
+ ehdr->e_ident[EI_MAG2] = ELFMAG2;
+ ehdr->e_ident[EI_MAG3] = ELFMAG3;
+ ehdr->e_ident[EI_CLASS] = ELF_CLASS;
+ ehdr->e_ident[EI_DATA] = ELF_DATA;
+ ehdr->e_ident[EI_VERSION] = EV_CURRENT;
+ ehdr->e_ident[EI_OSABI] = ELFOSABI_FREEBSD;
+ ehdr->e_ident[EI_ABIVERSION] = 0;
+ ehdr->e_ident[EI_PAD] = 0;
+ ehdr->e_type = ET_CORE;
+ ehdr->e_machine = ELF_ARCH;
+ ehdr->e_version = EV_CURRENT;
+ ehdr->e_entry = 0;
+ ehdr->e_phoff = phoff;
+ ehdr->e_flags = 0;
+ ehdr->e_ehsize = sizeof(Elf32_Ehdr);
+ ehdr->e_phentsize = sizeof(Elf32_Phdr);
+ ehdr->e_phnum = numsegs + 1;
+ ehdr->e_shentsize = sizeof(Elf32_Shdr);
+ ehdr->e_shnum = 0;
+ ehdr->e_shstrndx = SHN_UNDEF;
+
+ /*
+ * Fill in the program header entries.
+ */
+ phdr = (Elf32_Phdr *)((char *)dst + phoff);
+
+ /* The note segement. */
+ phdr->p_type = PT_NOTE;
+ phdr->p_offset = noteoff;
+ phdr->p_vaddr = 0;
+ phdr->p_paddr = 0;
+ phdr->p_filesz = notesz;
+ phdr->p_memsz = 0;
+ phdr->p_flags = 0;
+ phdr->p_align = 0;
+ phdr++;
+
+ /* All the writable segments from the program. */
+ phc.phdr = phdr;
+ phc.offset = *off;
+ each_writable_segment(p, cb_put_phdr, &phc);
+ }
+}
+
+static void
+elf32_putnote(void *dst, size_t *off, const char *name, int type,
+ const void *desc, size_t descsz)
+{
+ Elf_Note note;
+
+ note.n_namesz = strlen(name) + 1;
+ note.n_descsz = descsz;
+ note.n_type = type;
+ if (dst != NULL)
+ bcopy(&note, (char *)dst + *off, sizeof note);
+ *off += sizeof note;
+ if (dst != NULL)
+ bcopy(name, (char *)dst + *off, note.n_namesz);
+ *off += roundup2(note.n_namesz, sizeof(Elf32_Size));
+ if (dst != NULL)
+ bcopy(desc, (char *)dst + *off, note.n_descsz);
+ *off += roundup2(note.n_descsz, sizeof(Elf32_Size));
+}
+
+struct ia32_ps_strings {
+ u_int32_t ps_argvstr; /* first of 0 or more argument strings */
+ int ps_nargvstr; /* the number of argument strings */
+ u_int32_t ps_envstr; /* first of 0 or more environment strings */
+ int ps_nenvstr; /* the number of environment strings */
+};
+
+static register_t *
+elf32_copyout_strings(struct image_params *imgp)
+{
+ int argc, envc;
+ u_int32_t *vectp;
+ char *stringp, *destp;
+ u_int32_t *stack_base;
+ struct ia32_ps_strings *arginfo;
+ int szsigcode;
+
+ /*
+ * Calculate string base and vector table pointers.
+ * Also deal with signal trampoline code for this exec type.
+ */
+ arginfo = (struct ia32_ps_strings *)IA32_PS_STRINGS;
+ szsigcode = *(imgp->proc->p_sysent->sv_szsigcode);
+ destp = (caddr_t)arginfo - szsigcode - SPARE_USRSPACE -
+ roundup((ARG_MAX - imgp->stringspace), sizeof(char *));
+
+ /*
+ * install sigcode
+ */
+ if (szsigcode)
+ copyout(imgp->proc->p_sysent->sv_sigcode,
+ ((caddr_t)arginfo - szsigcode), szsigcode);
+
+ /*
+ * If we have a valid auxargs ptr, prepare some room
+ * on the stack.
+ */
+ if (imgp->auxargs) {
+ /*
+ * 'AT_COUNT*2' is size for the ELF Auxargs data. This is for
+ * lower compatibility.
+ */
+ imgp->auxarg_size = (imgp->auxarg_size) ? imgp->auxarg_size
+ : (AT_COUNT * 2);
+ /*
+ * The '+ 2' is for the null pointers at the end of each of
+ * the arg and env vector sets,and imgp->auxarg_size is room
+ * for argument of Runtime loader.
+ */
+ vectp = (u_int32_t *) (destp - (imgp->argc + imgp->envc + 2 +
+ imgp->auxarg_size) * sizeof(u_int32_t));
+
+ } else
+ /*
+ * The '+ 2' is for the null pointers at the end of each of
+ * the arg and env vector sets
+ */
+ vectp = (u_int32_t *)
+ (destp - (imgp->argc + imgp->envc + 2) * sizeof(u_int32_t));
+
+ /*
+ * vectp also becomes our initial stack base
+ */
+ stack_base = vectp;
+
+ stringp = imgp->stringbase;
+ argc = imgp->argc;
+ envc = imgp->envc;
+
+ /*
+ * Copy out strings - arguments and environment.
+ */
+ copyout(stringp, destp, ARG_MAX - imgp->stringspace);
+
+ /*
+ * Fill in "ps_strings" struct for ps, w, etc.
+ */
+ suhword(&arginfo->ps_argvstr, (u_int32_t)(intptr_t)vectp);
+ suhword(&arginfo->ps_nargvstr, argc);
+
+ /*
+ * Fill in argument portion of vector table.
+ */
+ for (; argc > 0; --argc) {
+ suhword(vectp++, (u_int32_t)(intptr_t)destp);
+ while (*stringp++ != 0)
+ destp++;
+ destp++;
+ }
+
+ /* a null vector table pointer separates the argp's from the envp's */
+ suhword(vectp++, 0);
+
+ suhword(&arginfo->ps_envstr, (u_int32_t)(intptr_t)vectp);
+ suhword(&arginfo->ps_nenvstr, envc);
+
+ /*
+ * Fill in environment portion of vector table.
+ */
+ for (; envc > 0; --envc) {
+ suhword(vectp++, (u_int32_t)(intptr_t)destp);
+ while (*stringp++ != 0)
+ destp++;
+ destp++;
+ }
+
+ /* end of vector table is a null pointer */
+ suhword(vectp, 0);
+
+ return ((register_t *)stack_base);
+}
+
+static void
+elf32_setregs(struct thread *td, u_long entry, u_long stack,
+ u_long ps_strings)
+{
+ struct trapframe *frame = td->td_frame;
+ vm_offset_t gdt, ldt;
+ u_int64_t codesel, datasel, ldtsel;
+ u_int64_t codeseg, dataseg, gdtseg, ldtseg;
+ struct segment_descriptor desc;
+ struct vmspace *vmspace = td->td_proc->p_vmspace;
+
+ /*
+ * Make sure that we restore the entire trapframe after an
+ * execve.
+ */
+ frame->tf_flags &= ~FRAME_SYSCALL;
+
+ bzero(frame->tf_r, sizeof(frame->tf_r));
+ bzero(frame->tf_f, sizeof(frame->tf_f));
+
+ frame->tf_cr_iip = entry;
+ frame->tf_cr_ipsr = (IA64_PSR_IC
+ | IA64_PSR_I
+ | IA64_PSR_IT
+ | IA64_PSR_DT
+ | IA64_PSR_RT
+ | IA64_PSR_IS
+ | IA64_PSR_BN
+ | IA64_PSR_CPL_USER);
+ frame->tf_r[FRAME_R12] = stack;
+
+ codesel = LSEL(LUCODE_SEL, SEL_UPL);
+ datasel = LSEL(LUDATA_SEL, SEL_UPL);
+ ldtsel = GSEL(GLDT_SEL, SEL_UPL);
+
+#if 1
+ frame->tf_r[FRAME_R16] = (datasel << 48) | (datasel << 32)
+ | (datasel << 16) | datasel;
+ frame->tf_r[FRAME_R17] = (ldtsel << 32) | (datasel << 16) | codesel;
+#else
+ frame->tf_r[FRAME_R16] = datasel;
+ frame->tf_r[FRAME_R17] = codesel;
+ frame->tf_r[FRAME_R18] = datasel;
+ frame->tf_r[FRAME_R19] = datasel;
+ frame->tf_r[FRAME_R20] = datasel;
+ frame->tf_r[FRAME_R21] = datasel;
+ frame->tf_r[FRAME_R22] = ldtsel;
+#endif
+
+ /*
+ * Build the GDT and LDT.
+ */
+ gdt = IA32_USRSTACK;
+ vm_map_find(&vmspace->vm_map, 0, 0,
+ &gdt, PAGE_SIZE, 0,
+ VM_PROT_ALL, VM_PROT_ALL, 0);
+ ldt = gdt + 4096;
+
+ desc.sd_lolimit = 8*NLDT-1;
+ desc.sd_lobase = ldt & 0xffffff;
+ desc.sd_type = SDT_SYSLDT;
+ desc.sd_dpl = SEL_UPL;
+ desc.sd_p = 1;
+ desc.sd_hilimit = 0;
+ desc.sd_def32 = 0;
+ desc.sd_gran = 0;
+ desc.sd_hibase = ldt >> 24;
+ copyout(&desc, (caddr_t) gdt + 8*GLDT_SEL, sizeof(desc));
+
+ desc.sd_lolimit = ((IA32_USRSTACK >> 12) - 1) & 0xffff;
+ desc.sd_lobase = 0;
+ desc.sd_type = SDT_MEMERA;
+ desc.sd_dpl = SEL_UPL;
+ desc.sd_p = 1;
+ desc.sd_hilimit = ((IA32_USRSTACK >> 12) - 1) >> 16;
+ desc.sd_def32 = 1;
+ desc.sd_gran = 1;
+ desc.sd_hibase = 0;
+ copyout(&desc, (caddr_t) ldt + 8*LUCODE_SEL, sizeof(desc));
+ desc.sd_type = SDT_MEMRWA;
+ copyout(&desc, (caddr_t) ldt + 8*LUDATA_SEL, sizeof(desc));
+
+ codeseg = 0 /* base */
+ + (((IA32_USRSTACK >> 12) - 1) << 32) /* limit */
+ + ((long)SDT_MEMERA << 52)
+ + ((long)SEL_UPL << 57)
+ + (1L << 59) /* present */
+ + (1L << 62) /* 32 bits */
+ + (1L << 63); /* page granularity */
+ dataseg = 0 /* base */
+ + (((IA32_USRSTACK >> 12) - 1) << 32) /* limit */
+ + ((long)SDT_MEMRWA << 52)
+ + ((long)SEL_UPL << 57)
+ + (1L << 59) /* present */
+ + (1L << 62) /* 32 bits */
+ + (1L << 63); /* page granularity */
+ ia64_set_csd(codeseg);
+ ia64_set_ssd(dataseg);
+ frame->tf_r[FRAME_R24] = dataseg; /* ESD */
+ frame->tf_r[FRAME_R27] = dataseg; /* DSD */
+ frame->tf_r[FRAME_R28] = dataseg; /* FSD */
+ frame->tf_r[FRAME_R29] = dataseg; /* GSD */
+
+ gdtseg = gdt /* base */
+ + ((8L*NGDT - 1) << 32) /* limit */
+ + ((long)SDT_SYSNULL << 52)
+ + ((long)SEL_UPL << 57)
+ + (1L << 59) /* present */
+ + (0L << 62) /* 16 bits */
+ + (0L << 63); /* byte granularity */
+ ldtseg = ldt /* base */
+ + ((8L*NLDT - 1) << 32) /* limit */
+ + ((long)SDT_SYSLDT << 52)
+ + ((long)SEL_UPL << 57)
+ + (1L << 59) /* present */
+ + (0L << 62) /* 16 bits */
+ + (0L << 63); /* byte granularity */
+ frame->tf_r[FRAME_R30] = ldtseg; /* LDTD */
+ frame->tf_r[FRAME_R31] = gdtseg; /* GDTD */
+
+ ia64_set_eflag(PSL_USER);
+
+ /* PS_STRINGS value for BSD/OS binaries. It is 0 for non-BSD/OS. */
+ frame->tf_r[FRAME_R11] = ps_strings;
+
+ /*
+ * Set ia32 control registers.
+ */
+ ia64_set_cflg((CR0_PE | CR0_PG)
+ | ((long)(CR4_XMM | CR4_FXSR) << 32));
+
+ /*
+ * XXX - Linux emulator
+ * Make sure sure edx is 0x0 on entry. Linux binaries depend
+ * on it.
+ */
+ td->td_retval[1] = 0;
+}
+
+/*
+ * Tell kern_execve.c about it, with a little help from the linker.
+ */
+static struct execsw elf32_execsw = {exec_elf32_imgact, "ELF32"};
+EXEC_SET(elf32, elf32_execsw);
diff --git a/sys/ia64/ia32/imgact_ia32.h b/sys/ia64/ia32/imgact_ia32.h
new file mode 100644
index 0000000..8d14182
--- /dev/null
+++ b/sys/ia64/ia32/imgact_ia32.h
@@ -0,0 +1,112 @@
+/*-
+ * Copyright (c) 1995-1996 Søren Schmidt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer
+ * in this position and unchanged.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software withough specific prior written permission
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _IA64_IA32_IMGACT_ELF_H_
+#define _IA64_IA32_IMGACT_ELF_H_
+
+#include <i386/include/elf.h>
+
+#ifdef _KERNEL
+
+#define AUXARGS_ENTRY(pos, id, val) {suword(pos++, id); suword(pos++, val);}
+
+#if ELF_TARG_CLASS == ELFCLASS32
+
+/*
+ * Structure used to pass infomation from the loader to the
+ * stack fixup routine.
+ */
+typedef struct {
+ Elf32_Sword execfd;
+ Elf32_Word phdr;
+ Elf32_Word phent;
+ Elf32_Word phnum;
+ Elf32_Word pagesz;
+ Elf32_Word base;
+ Elf32_Word flags;
+ Elf32_Word entry;
+ Elf32_Word trace;
+} Elf32_Auxargs;
+
+typedef struct {
+ int brand;
+ const char *compat_3_brand; /* pre Binutils 2.10 method (FBSD 3) */
+ const char *emul_path;
+ const char *interp_path;
+ struct sysentvec *sysvec;
+} Elf32_Brandinfo;
+
+#define MAX_BRANDS 8
+
+int elf_brand_inuse(Elf32_Brandinfo *entry);
+int elf_insert_brand_entry(Elf32_Brandinfo *entry);
+int elf_remove_brand_entry(Elf32_Brandinfo *entry);
+
+#else /* !(ELF_TARG_CLASS == ELFCLASS32) */
+
+/*
+ * Structure used to pass infomation from the loader to the
+ * stack fixup routine.
+ */
+typedef struct {
+ Elf64_Sword execfd;
+ Elf64_Addr phdr;
+ Elf64_Word phent;
+ Elf64_Word phnum;
+ Elf64_Word pagesz;
+ Elf64_Addr base;
+ Elf64_Word flags;
+ Elf64_Addr entry;
+ Elf64_Word trace;
+} Elf64_Auxargs;
+
+typedef struct {
+ int brand;
+ const char *compat_3_brand; /* pre Binutils 2.10 method (FBSD 3) */
+ const char *emul_path;
+ const char *interp_path;
+ struct sysentvec *sysvec;
+} Elf64_Brandinfo;
+
+#define MAX_BRANDS 8
+
+int elf_brand_inuse(Elf64_Brandinfo *entry);
+int elf_insert_brand_entry(Elf64_Brandinfo *entry);
+int elf_remove_brand_entry(Elf64_Brandinfo *entry);
+
+#endif /* ELF_TARG_CLASS == ELFCLASS32 */
+
+struct thread;
+
+int elf_coredump(struct thread *, struct vnode *, off_t);
+
+#endif /* _KERNEL */
+
+#endif /* !_IA64_IA32_IMGACT_ELF_H_ */
diff --git a/sys/ia64/ia32/syscalls.conf b/sys/ia64/ia32/syscalls.conf
new file mode 100644
index 0000000..16d94ea
--- /dev/null
+++ b/sys/ia64/ia32/syscalls.conf
@@ -0,0 +1,12 @@
+# $FreeBSD$
+sysnames="/dev/null"
+sysproto="ia32_proto.h"
+sysproto_h=_IA32_SYSPROTO_H_
+syshdr="ia32_syscall.h"
+syssw="ia32_sysent.c"
+sysmk="/dev/null"
+syshide="/dev/null"
+syscallprefix="IA32_SYS_"
+switchname="ia32_sysent"
+namesname="ia32_syscallnames"
+sysvec="\n"
diff --git a/sys/ia64/ia32/syscalls.master b/sys/ia64/ia32/syscalls.master
new file mode 100644
index 0000000..347196a
--- /dev/null
+++ b/sys/ia64/ia32/syscalls.master
@@ -0,0 +1,562 @@
+ $FreeBSD$
+; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94
+; from: src/sys/kern/syscalls.master 1.107
+;
+; System call name/number master file.
+; Processed to created init_sysent.c, syscalls.c and syscall.h.
+
+; Columns: number [M]type nargs namespc name alt{name,tag,rtyp}/comments
+; number system call number, must be in order
+; type one of [M]STD, [M]OBSOL, [M]UNIMPL, [M]COMPAT, [M]CPT_NOA,
+; [M]LIBCOMPAT, [M]NODEF, [M]NOARGS, [M]NOPROTO, [M]NOIMPL,
+; [M]NOSTD
+; namespc one of POSIX, BSD, NOHIDE
+; name psuedo-prototype of syscall routine
+; If one of the following alts is different, then all appear:
+; altname name of system call if different
+; alttag name of args struct tag if different from [o]`name'"_args"
+; altrtyp return type if not int (bogus - syscalls always return int)
+; for UNIMPL/OBSOL, name continues with comments
+
+; types:
+; [M] e.g. like MSTD -- means the system call is MP-safe. If no
+; M prefix is used, the syscall wrapper will obtain the Giant
+; lock for the syscall.
+; STD always included
+; COMPAT included on COMPAT #ifdef
+; LIBCOMPAT included on COMPAT #ifdef, and placed in syscall.h
+; OBSOL obsolete, not included in system, only specifies name
+; UNIMPL not implemented, placeholder only
+; NOSTD implemented but as a lkm that can be statically
+; compiled in sysent entry will be filled with lkmsys
+; so the SYSCALL_MODULE macro works
+
+; #ifdef's, etc. may be included, and are copied to the output files.
+
+#include <sys/param.h>
+#include <sys/sysent.h>
+#include <sys/sysproto.h>
+
+; Reserved/unimplemented system calls in the range 0-150 inclusive
+; are reserved for use in future Berkeley releases.
+; Additional system calls implemented in vendor and other
+; redistributions should be placed in the reserved range at the end
+; of the current calls.
+
+0 STD NOHIDE { int nosys(void); } syscall nosys_args int
+1 MSTD NOHIDE { void sys_exit(int rval); } exit sys_exit_args void
+2 MSTD POSIX { int fork(void); }
+3 MSTD POSIX { ssize_t read(int fd, void *buf, size_t nbyte); }
+4 MSTD POSIX { ssize_t write(int fd, const void *buf, size_t nbyte); }
+5 STD POSIX { int open(char *path, int flags, int mode); }
+; XXX should be { int open(const char *path, int flags, ...); }
+; but we're not ready for `const' or varargs.
+; XXX man page says `mode_t mode'.
+6 MSTD POSIX { int close(int fd); }
+7 MSTD BSD { int wait4(int pid, int *status, int options, \
+ struct rusage *rusage); } wait4 wait_args int
+8 COMPAT BSD { int creat(char *path, int mode); }
+9 STD POSIX { int link(char *path, char *link); }
+10 STD POSIX { int unlink(char *path); }
+11 OBSOL NOHIDE execv
+12 STD POSIX { int chdir(char *path); }
+13 STD BSD { int fchdir(int fd); }
+14 STD POSIX { int mknod(char *path, int mode, int dev); }
+15 STD POSIX { int chmod(char *path, int mode); }
+16 STD POSIX { int chown(char *path, int uid, int gid); }
+17 MSTD BSD { int obreak(char *nsize); } break obreak_args int
+18 STD BSD { int getfsstat(struct statfs *buf, long bufsize, \
+ int flags); }
+19 COMPAT POSIX { long lseek(int fd, long offset, int whence); }
+20 MSTD POSIX { pid_t getpid(void); }
+21 STD BSD { int mount(char *type, char *path, int flags, \
+ caddr_t data); }
+; XXX `path' should have type `const char *' but we're not ready for that.
+22 STD BSD { int unmount(char *path, int flags); }
+23 MSTD POSIX { int setuid(uid_t uid); }
+24 MSTD POSIX { uid_t getuid(void); }
+25 MSTD POSIX { uid_t geteuid(void); }
+26 STD BSD { int ptrace(int req, pid_t pid, caddr_t addr, \
+ int data); }
+27 MSTD BSD { int recvmsg(int s, struct msghdr *msg, int flags); }
+28 MSTD BSD { int sendmsg(int s, caddr_t msg, int flags); }
+29 MSTD BSD { int recvfrom(int s, caddr_t buf, size_t len, \
+ int flags, caddr_t from, int *fromlenaddr); }
+30 MSTD BSD { int accept(int s, caddr_t name, int *anamelen); }
+31 MSTD BSD { int getpeername(int fdes, caddr_t asa, int *alen); }
+32 MSTD BSD { int getsockname(int fdes, caddr_t asa, int *alen); }
+33 STD POSIX { int access(char *path, int flags); }
+34 STD BSD { int chflags(char *path, int flags); }
+35 STD BSD { int fchflags(int fd, int flags); }
+36 STD BSD { int sync(void); }
+37 MSTD POSIX { int kill(int pid, int signum); }
+38 COMPAT POSIX { int stat(char *path, struct ostat *ub); }
+39 MSTD POSIX { pid_t getppid(void); }
+40 COMPAT POSIX { int lstat(char *path, struct ostat *ub); }
+41 STD POSIX { int dup(u_int fd); }
+42 STD POSIX { int pipe(void); }
+43 MSTD POSIX { gid_t getegid(void); }
+44 MSTD BSD { int profil(caddr_t samples, size_t size, \
+ size_t offset, u_int scale); }
+45 STD BSD { int ktrace(const char *fname, int ops, int facs, \
+ int pid); }
+46 MCOMPAT POSIX { int sigaction(int signum, struct osigaction *nsa, \
+ struct osigaction *osa); }
+47 MSTD POSIX { gid_t getgid(void); }
+48 MCOMPAT POSIX { int sigprocmask(int how, osigset_t mask); }
+; XXX note nonstandard (bogus) calling convention - the libc stub passes
+; us the mask, not a pointer to it, and we return the old mask as the
+; (int) return value.
+49 MSTD BSD { int getlogin(char *namebuf, u_int namelen); }
+50 MSTD BSD { int setlogin(char *namebuf); }
+51 MSTD BSD { int acct(char *path); }
+52 MCOMPAT POSIX { int sigpending(void); }
+53 MSTD BSD { int sigaltstack(stack_t *ss, stack_t *oss); }
+54 MSTD POSIX { int ioctl(int fd, u_long com, caddr_t data); }
+55 MSTD BSD { int reboot(int opt); }
+56 STD POSIX { int revoke(char *path); }
+57 STD POSIX { int symlink(char *path, char *link); }
+58 STD POSIX { int readlink(char *path, char *buf, int count); }
+59 MSTD POSIX { int execve(char *fname, char **argv, char **envv); }
+60 MSTD POSIX { int umask(int newmask); } umask umask_args int
+61 STD BSD { int chroot(char *path); }
+62 MCOMPAT POSIX { int fstat(int fd, struct ostat *sb); }
+63 MCOMPAT BSD { int getkerninfo(int op, char *where, size_t *size, \
+ int arg); } getkerninfo getkerninfo_args int
+64 MCOMPAT BSD { int getpagesize(void); } \
+ getpagesize getpagesize_args int
+65 STD BSD { int msync(void *addr, size_t len, int flags); }
+66 MSTD BSD { int vfork(void); }
+67 OBSOL NOHIDE vread
+68 OBSOL NOHIDE vwrite
+69 MSTD BSD { int sbrk(int incr); }
+70 MSTD BSD { int sstk(int incr); }
+71 MCOMPAT BSD { int mmap(void *addr, int len, int prot, \
+ int flags, int fd, long pos); }
+72 MSTD BSD { int ovadvise(int anom); } vadvise ovadvise_args int
+73 MSTD BSD { int munmap(void *addr, size_t len); }
+74 MSTD BSD { int mprotect(const void *addr, size_t len, int prot); }
+75 MSTD BSD { int madvise(void *addr, size_t len, int behav); }
+76 OBSOL NOHIDE vhangup
+77 OBSOL NOHIDE vlimit
+78 MSTD BSD { int mincore(const void *addr, size_t len, \
+ char *vec); }
+79 MSTD POSIX { int getgroups(u_int gidsetsize, gid_t *gidset); }
+80 MSTD POSIX { int setgroups(u_int gidsetsize, gid_t *gidset); }
+81 MSTD POSIX { int getpgrp(void); }
+82 MSTD POSIX { int setpgid(int pid, int pgid); }
+83 MSTD BSD { int setitimer(u_int which, struct itimerval *itv, \
+ struct itimerval *oitv); }
+84 MCOMPAT BSD { int wait(void); }
+85 MSTD BSD { int swapon(char *name); }
+86 MSTD BSD { int getitimer(u_int which, struct itimerval *itv); }
+87 MCOMPAT BSD { int gethostname(char *hostname, u_int len); } \
+ gethostname gethostname_args int
+88 MCOMPAT BSD { int sethostname(char *hostname, u_int len); } \
+ sethostname sethostname_args int
+89 MSTD BSD { int getdtablesize(void); }
+90 MSTD POSIX { int dup2(u_int from, u_int to); }
+91 UNIMPL BSD getdopt
+92 MSTD POSIX { int fcntl(int fd, int cmd, long arg); }
+; XXX should be { int fcntl(int fd, int cmd, ...); }
+; but we're not ready for varargs.
+; XXX man page says `int arg' too.
+93 MSTD BSD { int select(int nd, fd_set *in, fd_set *ou, \
+ fd_set *ex, struct timeval *tv); }
+94 UNIMPL BSD setdopt
+95 STD POSIX { int fsync(int fd); }
+96 MSTD BSD { int setpriority(int which, int who, int prio); }
+97 MSTD BSD { int socket(int domain, int type, int protocol); }
+98 MSTD BSD { int connect(int s, caddr_t name, int namelen); }
+99 MCPT_NOA BSD { int accept(int s, caddr_t name, int *anamelen); } \
+ accept accept_args int
+100 MSTD BSD { int getpriority(int which, int who); }
+101 MCOMPAT BSD { int send(int s, caddr_t buf, int len, int flags); }
+102 MCOMPAT BSD { int recv(int s, caddr_t buf, int len, int flags); }
+103 STD BSD { int osigreturn(struct osigcontext *sigcntxp); }
+104 MSTD BSD { int bind(int s, caddr_t name, int namelen); }
+105 MSTD BSD { int setsockopt(int s, int level, int name, \
+ caddr_t val, int valsize); }
+106 MSTD BSD { int listen(int s, int backlog); }
+107 OBSOL NOHIDE vtimes
+108 MCOMPAT BSD { int sigvec(int signum, struct sigvec *nsv, \
+ struct sigvec *osv); }
+109 MCOMPAT BSD { int sigblock(int mask); }
+110 MCOMPAT BSD { int sigsetmask(int mask); }
+111 MCOMPAT POSIX { int sigsuspend(osigset_t mask); }
+; XXX note nonstandard (bogus) calling convention - the libc stub passes
+; us the mask, not a pointer to it.
+112 MCOMPAT BSD { int sigstack(struct sigstack *nss, \
+ struct sigstack *oss); }
+113 MCOMPAT BSD { int recvmsg(int s, struct omsghdr *msg, int flags); }
+114 MCOMPAT BSD { int sendmsg(int s, caddr_t msg, int flags); }
+115 OBSOL NOHIDE vtrace
+116 MSTD BSD { int gettimeofday(struct timeval *tp, \
+ struct timezone *tzp); }
+117 MSTD BSD { int getrusage(int who, struct rusage *rusage); }
+118 MSTD BSD { int getsockopt(int s, int level, int name, \
+ caddr_t val, int *avalsize); }
+119 UNIMPL NOHIDE resuba (BSD/OS 2.x)
+120 MSTD BSD { int readv(int fd, struct iovec *iovp, u_int iovcnt); }
+121 MSTD BSD { int writev(int fd, struct iovec *iovp, \
+ u_int iovcnt); }
+122 MSTD BSD { int settimeofday(struct timeval *tv, \
+ struct timezone *tzp); }
+123 STD BSD { int fchown(int fd, int uid, int gid); }
+124 STD BSD { int fchmod(int fd, int mode); }
+125 MCPT_NOA BSD { int recvfrom(int s, caddr_t buf, size_t len, \
+ int flags, caddr_t from, int *fromlenaddr); } \
+ recvfrom recvfrom_args int
+126 MSTD BSD { int setreuid(int ruid, int euid); }
+127 MSTD BSD { int setregid(int rgid, int egid); }
+128 STD POSIX { int rename(char *from, char *to); }
+129 COMPAT BSD { int truncate(char *path, long length); }
+130 COMPAT BSD { int ftruncate(int fd, long length); }
+131 MSTD BSD { int flock(int fd, int how); }
+132 STD POSIX { int mkfifo(char *path, int mode); }
+133 MSTD BSD { int sendto(int s, caddr_t buf, size_t len, \
+ int flags, caddr_t to, int tolen); }
+134 MSTD BSD { int shutdown(int s, int how); }
+135 MSTD BSD { int socketpair(int domain, int type, int protocol, \
+ int *rsv); }
+136 STD POSIX { int mkdir(char *path, int mode); }
+137 STD POSIX { int rmdir(char *path); }
+138 STD BSD { int utimes(char *path, struct timeval *tptr); }
+139 OBSOL NOHIDE 4.2 sigreturn
+140 MSTD BSD { int adjtime(struct timeval *delta, \
+ struct timeval *olddelta); }
+141 MCOMPAT BSD { int getpeername(int fdes, caddr_t asa, int *alen); }
+142 MCOMPAT BSD { long gethostid(void); }
+143 MCOMPAT BSD { int sethostid(long hostid); }
+144 MCOMPAT BSD { int getrlimit(u_int which, struct orlimit *rlp); }
+145 MCOMPAT BSD { int setrlimit(u_int which, struct orlimit *rlp); }
+146 MCOMPAT BSD { int killpg(int pgid, int signum); }
+147 MSTD POSIX { int setsid(void); }
+148 STD BSD { int quotactl(char *path, int cmd, int uid, \
+ caddr_t arg); }
+149 MCOMPAT BSD { int quota(void); }
+150 MCPT_NOA BSD { int getsockname(int fdec, caddr_t asa, int *alen); }\
+ getsockname getsockname_args int
+
+; Syscalls 151-180 inclusive are reserved for vendor-specific
+; system calls. (This includes various calls added for compatibity
+; with other Unix variants.)
+; Some of these calls are now supported by BSD...
+151 UNIMPL NOHIDE sem_lock (BSD/OS 2.x)
+152 UNIMPL NOHIDE sem_wakeup (BSD/OS 2.x)
+153 UNIMPL NOHIDE asyncdaemon (BSD/OS 2.x)
+154 UNIMPL NOHIDE nosys
+; 155 is initialized by the NFS code, if present.
+155 MNOIMPL BSD { int nfssvc(int flag, caddr_t argp); }
+156 COMPAT BSD { int getdirentries(int fd, char *buf, u_int count, \
+ long *basep); }
+157 STD BSD { int statfs(char *path, struct statfs *buf); }
+158 STD BSD { int fstatfs(int fd, struct statfs *buf); }
+159 UNIMPL NOHIDE nosys
+160 UNIMPL NOHIDE nosys
+161 STD BSD { int getfh(char *fname, struct fhandle *fhp); }
+162 MSTD BSD { int getdomainname(char *domainname, int len); }
+163 MSTD BSD { int setdomainname(char *domainname, int len); }
+164 MSTD BSD { int uname(struct utsname *name); }
+165 STD BSD { int sysarch(int op, char *parms); }
+166 MSTD BSD { int rtprio(int function, pid_t pid, \
+ struct rtprio *rtp); }
+167 UNIMPL NOHIDE nosys
+168 UNIMPL NOHIDE nosys
+; 169 is initialized by the SYSVSEM code if present or loaded
+169 MNOSTD BSD { int semsys(int which, int a2, int a3, int a4, \
+ int a5); }
+; 169 is initialized by the SYSVMSG code if present or loaded
+; XXX should be { int semsys(int which, ...); }
+170 MNOSTD BSD { int msgsys(int which, int a2, int a3, int a4, \
+ int a5, int a6); }
+; 169 is initialized by the SYSVSHM code if present or loaded
+; XXX should be { int msgsys(int which, ...); }
+171 MNOSTD BSD { int shmsys(int which, int a2, int a3, int a4); }
+; XXX should be { int shmsys(int which, ...); }
+172 UNIMPL NOHIDE nosys
+173 MSTD POSIX { ssize_t pread(int fd, void *buf, size_t nbyte, \
+ int pad, off_t offset); }
+174 MSTD POSIX { ssize_t pwrite(int fd, const void *buf, \
+ size_t nbyte, int pad, off_t offset); }
+175 UNIMPL NOHIDE nosys
+176 MSTD BSD { int ntp_adjtime(struct timex *tp); }
+177 UNIMPL NOHIDE sfork (BSD/OS 2.x)
+178 UNIMPL NOHIDE getdescriptor (BSD/OS 2.x)
+179 UNIMPL NOHIDE setdescriptor (BSD/OS 2.x)
+180 UNIMPL NOHIDE nosys
+
+; Syscalls 181-199 are used by/reserved for BSD
+181 MSTD POSIX { int setgid(gid_t gid); }
+182 MSTD BSD { int setegid(gid_t egid); }
+183 MSTD BSD { int seteuid(uid_t euid); }
+184 UNIMPL BSD lfs_bmapv
+185 UNIMPL BSD lfs_markv
+186 UNIMPL BSD lfs_segclean
+187 UNIMPL BSD lfs_segwait
+188 STD POSIX { int stat(char *path, struct stat *ub); }
+189 MSTD POSIX { int fstat(int fd, struct stat *sb); }
+190 STD POSIX { int lstat(char *path, struct stat *ub); }
+191 STD POSIX { int pathconf(char *path, int name); }
+192 MSTD POSIX { int fpathconf(int fd, int name); }
+193 UNIMPL NOHIDE nosys
+194 MSTD BSD { int getrlimit(u_int which, \
+ struct rlimit *rlp); } \
+ getrlimit __getrlimit_args int
+195 MSTD BSD { int setrlimit(u_int which, \
+ struct rlimit *rlp); } \
+ setrlimit __setrlimit_args int
+196 STD BSD { int getdirentries(int fd, char *buf, u_int count, \
+ long *basep); }
+197 MSTD BSD { caddr_t mmap(caddr_t addr, size_t len, int prot, \
+ int flags, int fd, int pad, off_t pos); }
+198 STD NOHIDE { int nosys(void); } __syscall __syscall_args int
+199 STD POSIX { off_t lseek(int fd, int pad, off_t offset, \
+ int whence); }
+200 STD BSD { int truncate(char *path, int pad, off_t length); }
+201 STD BSD { int ftruncate(int fd, int pad, off_t length); }
+202 MSTD BSD { int __sysctl(int *name, u_int namelen, void *old, \
+ size_t *oldlenp, void *new, size_t newlen); } \
+ __sysctl sysctl_args int
+; properly, __sysctl should be a NOHIDE, but making an exception
+; here allows to avoid one in libc/sys/Makefile.inc.
+203 MSTD BSD { int mlock(const void *addr, size_t len); }
+204 MSTD BSD { int munlock(const void *addr, size_t len); }
+205 STD BSD { int undelete(char *path); }
+206 STD BSD { int futimes(int fd, struct timeval *tptr); }
+207 MSTD BSD { int getpgid(pid_t pid); }
+208 UNIMPL NOHIDE newreboot (NetBSD)
+209 MSTD BSD { int poll(struct pollfd *fds, u_int nfds, \
+ int timeout); }
+
+;
+; The following are reserved for loadable syscalls
+;
+210 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+211 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+212 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+213 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+214 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+215 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+216 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+217 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+218 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+219 NODEF NOHIDE lkmnosys lkmnosys nosys_args int
+
+;
+; The following were introduced with NetBSD/4.4Lite-2
+; They are initialized by thier respective modules/sysinits
+220 MNOSTD BSD { int __semctl(int semid, int semnum, int cmd, \
+ union semun *arg); }
+221 MNOSTD BSD { int semget(key_t key, int nsems, int semflg); }
+222 MNOSTD BSD { int semop(int semid, struct sembuf *sops, \
+ u_int nsops); }
+223 UNIMPL NOHIDE semconfig
+224 MNOSTD BSD { int msgctl(int msqid, int cmd, \
+ struct msqid_ds *buf); }
+225 MNOSTD BSD { int msgget(key_t key, int msgflg); }
+226 MNOSTD BSD { int msgsnd(int msqid, void *msgp, size_t msgsz, \
+ int msgflg); }
+227 MNOSTD BSD { int msgrcv(int msqid, void *msgp, size_t msgsz, \
+ long msgtyp, int msgflg); }
+228 MNOSTD BSD { int shmat(int shmid, void *shmaddr, int shmflg); }
+229 MNOSTD BSD { int shmctl(int shmid, int cmd, \
+ struct shmid_ds *buf); }
+230 MNOSTD BSD { int shmdt(void *shmaddr); }
+231 MNOSTD BSD { int shmget(key_t key, int size, int shmflg); }
+;
+232 MSTD POSIX { int clock_gettime(clockid_t clock_id, \
+ struct timespec *tp); }
+233 MSTD POSIX { int clock_settime(clockid_t clock_id, \
+ const struct timespec *tp); }
+234 MSTD POSIX { int clock_getres(clockid_t clock_id, \
+ struct timespec *tp); }
+235 UNIMPL NOHIDE timer_create
+236 UNIMPL NOHIDE timer_delete
+237 UNIMPL NOHIDE timer_settime
+238 UNIMPL NOHIDE timer_gettime
+239 UNIMPL NOHIDE timer_getoverrun
+240 MSTD POSIX { int nanosleep(const struct timespec *rqtp, \
+ struct timespec *rmtp); }
+241 UNIMPL NOHIDE nosys
+242 UNIMPL NOHIDE nosys
+243 UNIMPL NOHIDE nosys
+244 UNIMPL NOHIDE nosys
+245 UNIMPL NOHIDE nosys
+246 UNIMPL NOHIDE nosys
+247 UNIMPL NOHIDE nosys
+248 UNIMPL NOHIDE nosys
+249 UNIMPL NOHIDE nosys
+; syscall numbers initially used in OpenBSD
+250 MSTD BSD { int minherit(void *addr, size_t len, int inherit); }
+251 MSTD BSD { int rfork(int flags); }
+252 MSTD BSD { int openbsd_poll(struct pollfd *fds, u_int nfds, \
+ int timeout); }
+253 STD BSD { int issetugid(void); }
+254 STD BSD { int lchown(char *path, int uid, int gid); }
+255 UNIMPL NOHIDE nosys
+256 UNIMPL NOHIDE nosys
+257 UNIMPL NOHIDE nosys
+258 UNIMPL NOHIDE nosys
+259 UNIMPL NOHIDE nosys
+260 UNIMPL NOHIDE nosys
+261 UNIMPL NOHIDE nosys
+262 UNIMPL NOHIDE nosys
+263 UNIMPL NOHIDE nosys
+264 UNIMPL NOHIDE nosys
+265 UNIMPL NOHIDE nosys
+266 UNIMPL NOHIDE nosys
+267 UNIMPL NOHIDE nosys
+268 UNIMPL NOHIDE nosys
+269 UNIMPL NOHIDE nosys
+270 UNIMPL NOHIDE nosys
+271 UNIMPL NOHIDE nosys
+272 STD BSD { int getdents(int fd, char *buf, size_t count); }
+273 UNIMPL NOHIDE nosys
+274 STD BSD { int lchmod(char *path, mode_t mode); }
+275 NOPROTO BSD { int lchown(char *path, uid_t uid, gid_t gid); } netbsd_lchown lchown_args int
+276 STD BSD { int lutimes(char *path, struct timeval *tptr); }
+277 MNOPROTO BSD { int msync(void *addr, size_t len, int flags); } netbsd_msync msync_args int
+278 STD BSD { int nstat(char *path, struct nstat *ub); }
+279 MSTD BSD { int nfstat(int fd, struct nstat *sb); }
+280 STD BSD { int nlstat(char *path, struct nstat *ub); }
+281 UNIMPL NOHIDE nosys
+282 UNIMPL NOHIDE nosys
+283 UNIMPL NOHIDE nosys
+284 UNIMPL NOHIDE nosys
+285 UNIMPL NOHIDE nosys
+286 UNIMPL NOHIDE nosys
+287 UNIMPL NOHIDE nosys
+288 UNIMPL NOHIDE nosys
+289 UNIMPL NOHIDE nosys
+290 UNIMPL NOHIDE nosys
+291 UNIMPL NOHIDE nosys
+292 UNIMPL NOHIDE nosys
+293 UNIMPL NOHIDE nosys
+294 UNIMPL NOHIDE nosys
+295 UNIMPL NOHIDE nosys
+296 UNIMPL NOHIDE nosys
+; XXX 297 is 300 in NetBSD
+297 STD BSD { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }
+298 STD BSD { int fhopen(const struct fhandle *u_fhp, int flags); }
+299 STD BSD { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }
+; syscall numbers for FreeBSD
+300 MSTD BSD { int modnext(int modid); }
+301 MSTD BSD { int modstat(int modid, struct module_stat* stat); }
+302 MSTD BSD { int modfnext(int modid); }
+303 MSTD BSD { int modfind(const char *name); }
+304 MSTD BSD { int kldload(const char *file); }
+305 MSTD BSD { int kldunload(int fileid); }
+306 MSTD BSD { int kldfind(const char *file); }
+307 MSTD BSD { int kldnext(int fileid); }
+308 MSTD BSD { int kldstat(int fileid, struct kld_file_stat* stat); }
+309 MSTD BSD { int kldfirstmod(int fileid); }
+310 MSTD BSD { int getsid(pid_t pid); }
+311 MSTD BSD { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }
+312 MSTD BSD { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }
+313 OBSOL NOHIDE signanosleep
+314 NOSTD BSD { int aio_return(struct aiocb *aiocbp); }
+315 NOSTD BSD { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }
+316 NOSTD BSD { int aio_cancel(int fd, struct aiocb *aiocbp); }
+317 NOSTD BSD { int aio_error(struct aiocb *aiocbp); }
+318 NOSTD BSD { int aio_read(struct aiocb *aiocbp); }
+319 NOSTD BSD { int aio_write(struct aiocb *aiocbp); }
+320 NOSTD BSD { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }
+321 MSTD BSD { int yield(void); }
+322 OBSOL NOHIDE thr_sleep
+323 OBSOL NOHIDE thr_wakeup
+324 MSTD BSD { int mlockall(int how); }
+325 MSTD BSD { int munlockall(void); }
+326 STD BSD { int __getcwd(u_char *buf, u_int buflen); }
+
+327 MSTD POSIX { int sched_setparam (pid_t pid, const struct sched_param *param); }
+328 MSTD POSIX { int sched_getparam (pid_t pid, struct sched_param *param); }
+
+329 MSTD POSIX { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }
+330 MSTD POSIX { int sched_getscheduler (pid_t pid); }
+
+331 MSTD POSIX { int sched_yield (void); }
+332 MSTD POSIX { int sched_get_priority_max (int policy); }
+333 MSTD POSIX { int sched_get_priority_min (int policy); }
+334 MSTD POSIX { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }
+335 STD BSD { int utrace(const void *addr, size_t len); }
+336 MSTD BSD { int sendfile(int fd, int s, off_t offset, size_t nbytes, \
+ struct sf_hdtr *hdtr, off_t *sbytes, int flags); }
+337 STD BSD { int kldsym(int fileid, int cmd, void *data); }
+338 MSTD BSD { int jail(struct jail *jail); }
+339 UNIMPL BSD pioctl
+340 MSTD POSIX { int sigprocmask(int how, const sigset_t *set, \
+ sigset_t *oset); }
+341 MSTD POSIX { int sigsuspend(const sigset_t *sigmask); }
+342 MSTD POSIX { int sigaction(int sig, const struct sigaction *act, \
+ struct sigaction *oact); }
+343 MSTD POSIX { int sigpending(sigset_t *set); }
+344 STD BSD { int sigreturn(const struct __ucontext *sigcntxp); }
+345 UNIMPL NOHIDE sigtimedwait
+346 UNIMPL NOHIDE sigwaitinfo
+347 MSTD BSD { int __acl_get_file(const char *path, \
+ acl_type_t type, struct acl *aclp); }
+348 MSTD BSD { int __acl_set_file(const char *path, \
+ acl_type_t type, struct acl *aclp); }
+349 MSTD BSD { int __acl_get_fd(int filedes, acl_type_t type, \
+ struct acl *aclp); }
+350 MSTD BSD { int __acl_set_fd(int filedes, acl_type_t type, \
+ struct acl *aclp); }
+351 MSTD BSD { int __acl_delete_file(const char *path, \
+ acl_type_t type); }
+352 MSTD BSD { int __acl_delete_fd(int filedes, acl_type_t type); }
+353 MSTD BSD { int __acl_aclcheck_file(const char *path, \
+ acl_type_t type, struct acl *aclp); }
+354 MSTD BSD { int __acl_aclcheck_fd(int filedes, acl_type_t type, \
+ struct acl *aclp); }
+355 STD BSD { int extattrctl(const char *path, int cmd, \
+ const char *filename, int attrnamespace, \
+ const char *attrname); }
+356 STD BSD { int extattr_set_file(const char *path, \
+ int attrnamespace, const char *attrname, \
+ void *data, size_t nbytes); }
+357 STD BSD { ssize_t extattr_get_file(const char *path, \
+ int attrnamespace, const char *attrname, \
+ void *data, size_t nbytes); }
+358 STD BSD { int extattr_delete_file(const char *path, \
+ int attrnamespace, const char *attrname); }
+359 NOSTD BSD { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }
+360 MSTD BSD { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }
+361 MSTD BSD { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }
+362 MSTD BSD { int kqueue(void); }
+363 MSTD BSD { int kevent(int fd, \
+ const struct kevent *changelist, int nchanges, \
+ struct kevent *eventlist, int nevents, \
+ const struct timespec *timeout); }
+364 STD BSD { int __cap_get_proc(struct cap *cap_p); }
+365 STD BSD { int __cap_set_proc(struct cap *cap_p); }
+366 STD BSD { int __cap_get_fd(int fd, struct cap *cap_p); }
+367 STD BSD { int __cap_get_file(const char *path_p, struct cap *cap_p); }
+368 STD BSD { int __cap_set_fd(int fd, struct cap *cap_p); }
+369 STD BSD { int __cap_set_file(const char *path_p, struct cap *cap_p); }
+370 NODEF NOHIDE lkmressys lkmressys nosys_args int
+371 STD BSD { int extattr_set_fd(int fd, int attrnamespace, \
+ const char *attrname, void *data, \
+ size_t nbytes); }
+372 STD BSD { ssize_t extattr_get_fd(int fd, int attrnamespace, \
+ const char *attrname, void *data, size_t nbytes); }
+373 STD BSD { int extattr_delete_fd(int fd, int attrnamespace, \
+ const char *attrname); }
+374 MSTD BSD { int __setugid(int flag); }
+375 NOIMPL BSD { int nfsclnt(int flag, caddr_t argp); }
+376 STD BSD { int eaccess(char *path, int flags); }
+377 UNIMPL BSD afs_syscall
+378 STD BSD { int nmount(struct iovec *iovp, unsigned int iovcnt, \
+ int flags); }
+379 STD BSD { int kse_exit(void); }
+380 STD BSD { int kse_wakeup(void); }
+381 STD BSD { int kse_new(struct kse_mailbox * mbx, \
+ int new_grp_flag); }
+382 STD BSD { int thread_wakeup(struct thread_mailbox *tmbx); }
+383 STD BSD { int kse_yield(void); }
+384 UNIMPL BSD __mac_get_proc
+385 UNIMPL BSD __mac_set_proc
+386 UNIMPL BSD __mac_get_fd
+387 UNIMPL BSD __mac_get_file
+388 UNIMPL BSD __mac_set_fd
+389 UNIMPL BSD __mac_set_file
OpenPOWER on IntegriCloud