aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/mips
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/mips')
-rw-r--r--sysdeps/unix/sysv/linux/mips/Dist3
-rw-r--r--sysdeps/unix/sysv/linux/mips/Makefile10
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/endian.h12
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/fcntl.h100
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h71
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/ipc.h85
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/shm.h92
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/sigaction.h62
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/signum.h30
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/socket.h178
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/stat.h97
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/statfs.h44
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/termios.h260
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/time.h54
-rw-r--r--sysdeps/unix/sysv/linux/mips/clone.S125
-rw-r--r--sysdeps/unix/sysv/linux/mips/entry.h1
-rw-r--r--sysdeps/unix/sysv/linux/mips/fpregdef.h1
-rw-r--r--sysdeps/unix/sysv/linux/mips/fxstat.c80
-rw-r--r--sysdeps/unix/sysv/linux/mips/kernel_sigaction.h22
-rw-r--r--sysdeps/unix/sysv/linux/mips/kernel_stat.h28
-rw-r--r--sysdeps/unix/sysv/linux/mips/kernel_termios.h20
-rw-r--r--sysdeps/unix/sysv/linux/mips/lxstat.h80
-rw-r--r--sysdeps/unix/sysv/linux/mips/regdef.h1
-rw-r--r--sysdeps/unix/sysv/linux/mips/sgidef.h28
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/acct.h66
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/asm.h28
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/cachectl.h42
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/fpregdef.h27
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/procfs.h109
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/regdef.h29
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/syscall.h1187
-rw-r--r--sysdeps/unix/sysv/linux/mips/sys/sysmips.h36
-rw-r--r--sysdeps/unix/sysv/linux/mips/syscalls.list46
-rw-r--r--sysdeps/unix/sysv/linux/mips/ustat.c35
-rw-r--r--sysdeps/unix/sysv/linux/mips/xmknod.c47
-rw-r--r--sysdeps/unix/sysv/linux/mips/xstat.c80
36 files changed, 3216 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/mips/Dist b/sysdeps/unix/sysv/linux/mips/Dist
new file mode 100644
index 0000000000..a205c94f95
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/Dist
@@ -0,0 +1,3 @@
+clone.S
+kernel_sigaction.h
+kernel_stat.h
diff --git a/sysdeps/unix/sysv/linux/mips/Makefile b/sysdeps/unix/sysv/linux/mips/Makefile
new file mode 100644
index 0000000000..e6240ea9a4
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/Makefile
@@ -0,0 +1,10 @@
+ifeq ($(subdir),signal)
+#sysdep_routines += sigsuspend
+endif
+
+ifeq ($(subdir),misc)
+sysdep_routines += cachectl cacheflush sysmips
+
+headers += regdef.h fpregdef.h sys/asm.h sys/cachectl.h sys/fpregdef.h \
+ sys/regdef.h sys/sysmips.h
+endif
diff --git a/sysdeps/unix/sysv/linux/mips/bits/endian.h b/sysdeps/unix/sysv/linux/mips/bits/endian.h
new file mode 100644
index 0000000000..9f60758f36
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/endian.h
@@ -0,0 +1,12 @@
+/* The MIPS architecture has selectable endianness.
+ Linux/MIPS exists in two both little and big endian flavours and we
+ want to be able to share the installed headerfiles between both,
+ so we define __BYTE_ORDER based on GCC's predefines. */
+
+#ifdef __MIPSEB__
+#define __BYTE_ORDER __BIG_ENDIAN
+#else
+#ifdef __MIPSEL__
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#endif
+#endif
diff --git a/sysdeps/unix/sysv/linux/mips/bits/fcntl.h b/sysdeps/unix/sysv/linux/mips/bits/fcntl.h
new file mode 100644
index 0000000000..2586140fdc
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/fcntl.h
@@ -0,0 +1,100 @@
+/* O_*, F_*, FD_* bit values for Linux.
+ Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _FCNTL_H
+#error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
+#include <sys/types.h>
+
+
+/* In GNU, read and write are bits (unlike BSD). */
+#ifdef __USE_GNU
+#define O_READ O_RDONLY /* Open for reading. */
+#define O_WRITE O_WRONLY /* Open for writing. */
+#endif
+/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ located on an ext2 file system */
+#define O_ACCMODE 0x0003
+#define O_RDONLY 0x0000
+#define O_WRONLY 0x0001
+#define O_RDWR 0x0002
+#define O_APPEND 0x0008
+#define O_SYNC 0x0010
+#define O_NONBLOCK 0x0080
+#define O_CREAT 0x0100 /* not fcntl */
+#define O_TRUNC 0x0200 /* not fcntl */
+#define O_EXCL 0x0400 /* not fcntl */
+#define O_NOCTTY 0x0800 /* not fcntl */
+#define O_FSYNC O_SYNC
+#define O_ASYNC 020000
+
+#define O_NDELAY O_NONBLOCK
+
+#define F_DUPFD 0 /* dup */
+#define F_GETFD 1 /* get f_flags */
+#define F_SETFD 2 /* set f_flags */
+#define F_GETFL 3 /* more flags (cloexec) */
+#define F_SETFL 4
+#define F_GETLK 14
+#define F_SETLK 6
+#define F_SETLKW 7
+
+#define F_SETOWN 24 /* for sockets. */
+#define F_GETOWN 23 /* for sockets. */
+
+/* for F_[GET|SET]FL */
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK 0
+#define F_WRLCK 1
+#define F_UNLCK 2
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK 4 /* or 3 */
+#define F_SHLCK 8 /* or 4 */
+
+/* operations for bsd flock(), also used by the kernel implementation */
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* or'd with one of the above to prevent XXXXXXXXXXXXXXXXXX
+ blocking */
+#define LOCK_UN 8 /* remove lock */
+
+typedef struct flock {
+ short l_type;
+ short l_whence;
+ __off_t l_start;
+ __off_t l_len;
+ long l_sysid; /* XXX */
+ __pid_t l_pid;
+ long pad[4]; /* XXX */
+} flock_t;
+
+
+/* Define some more compatibility macros to be backward compatible with
+ BSD systems which did not managed to hide these kernel macros. */
+#ifdef __USE_BSD
+#define FAPPEND O_APPEND
+#define FFSYNC O_FSYNC
+#define FASYNC O_ASYNC
+#define FNONBLOCK O_NONBLOCK
+#define FNDELAY O_NDELAY
+#endif /* Use BSD. */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h b/sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h
new file mode 100644
index 0000000000..486022e6d9
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/ioctl-types.h
@@ -0,0 +1,71 @@
+/* Structure types for pre-termios terminal ioctls. Linux/MIPS version.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * Never include this file directly; use <sys/ioctl.h> instead.
+ */
+
+#ifndef _BITS_IOCTL_TYPES_H
+#define _BITS_IOCTL_TYPES_H 1
+
+/* Get definition of constants for use with `ioctl'. */
+#include <asm/ioctls.h>
+
+struct winsize
+ {
+ unsigned short ws_row;
+ unsigned short ws_col;
+ unsigned short ws_xpixel;
+ unsigned short ws_ypixel;
+ };
+
+#define NCC 8
+struct termio
+ {
+ unsigned short c_iflag; /* input mode flags */
+ unsigned short c_oflag; /* output mode flags */
+ unsigned short c_cflag; /* control mode flags */
+ unsigned short c_lflag; /* local mode flags */
+ char c_line; /* line discipline */
+ /* Yes, this is really NCCS. */
+ unsigned char c_cc[32 /* NCCS */]; /* control characters */
+ };
+
+/* modem lines */
+#define TIOCM_LE 0x001 /* line enable */
+#define TIOCM_DTR 0x002 /* data terminal ready */
+#define TIOCM_RTS 0x004 /* request to send */
+#define TIOCM_ST 0x010 /* secondary transmit */
+#define TIOCM_SR 0x020 /* secondary receive */
+#define TIOCM_CTS 0x040 /* clear to send */
+#define TIOCM_CAR 0x100 /* carrier detect */
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RNG 0x200 /* ring */
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_DSR 0x400 /* data set ready */
+
+/* line disciplines */
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+
+#endif /* bits/ioctl-types.h */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/ipc.h b/sysdeps/unix/sysv/linux/mips/bits/ipc.h
new file mode 100644
index 0000000000..c5a3cd0049
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/ipc.h
@@ -0,0 +1,85 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_IPC_BUF_H
+
+#define _SYS_IPC_BUF_H 1
+#include <features.h>
+
+#include <sys/types.h>
+
+/* Mode bits for `msgget', `semget', and `shmget'. */
+#define IPC_CREAT 01000 /* Create key if key does not exist. */
+#define IPC_EXCL 02000 /* Fail if key exists. */
+#define IPC_NOWAIT 04000 /* Return error on wait. */
+
+/* Control commands for `msgctl', `semctl', and `shmctl'. */
+#define IPC_RMID 0 /* Remove identifier. */
+#define IPC_SET 1 /* Set `ipc_perm' options. */
+#define IPC_STAT 2 /* Get `ipc_perm' options. */
+#define IPC_INFO 3 /* See ipcs. */
+
+
+__BEGIN_DECLS
+
+/* Special key values. */
+#define IPC_PRIVATE ((__key_t) 0) /* Private key. */
+
+
+/* Data structure used to pass permission information to IPC operations. */
+struct ipc_perm
+ {
+ __key_t __key; /* Key. */
+ long uid; /* Owner's user ID. */
+ long gid; /* Owner's group ID. */
+ long cuid; /* Creator's user ID. */
+ long cgid; /* Creator's group ID. */
+ unsigned long mode; /* Read/write permission. */
+ unsigned short int __seq; /* Sequence number. */
+ };
+
+
+/* Kludge to work around Linux' restriction of only up to five
+ arguments to a system call. */
+struct ipc_kludge
+ {
+ void *msgp;
+ long int msgtyp;
+ };
+
+/* The actual system call: all functions are multiplexed by this. */
+extern int __ipc __P ((int __call, int __first, int __second, int __third,
+ void *__ptr));
+
+/* The codes for the functions to use the multiplexer `__ipc'. */
+#define IPCOP_semop 1
+#define IPCOP_semget 2
+#define IPCOP_semctl 3
+#define IPCOP_msgsnd 11
+#define IPCOP_msgrcv 12
+#define IPCOP_msgget 13
+#define IPCOP_msgctl 14
+#define IPCOP_shmat 21
+#define IPCOP_shmdt 22
+#define IPCOP_shmget 23
+#define IPCOP_shmctl 24
+
+__END_DECLS
+
+#endif /* bits/ipc_buf.h */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/shm.h b/sysdeps/unix/sysv/linux/mips/bits/shm.h
new file mode 100644
index 0000000000..9d4b20bb53
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/shm.h
@@ -0,0 +1,92 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_SHM_BUF_H
+
+#define _SYS_SHM_BUF_H 1
+#include <features.h>
+
+#include <sys/types.h>
+
+/* Permission flag for shmget. */
+#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
+#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */
+
+/* Flags for `shmat'. */
+#define SHM_RDONLY 010000 /* attach read-only else read-write */
+#define SHM_RND 020000 /* round attach address to SHMLBA */
+#define SHM_REMAP 040000 /* take-over region on attach */
+
+/* Commands for `shmctl'. */
+#define SHM_LOCK 11 /* lock segment (root only) */
+#define SHM_UNLOCK 12 /* unlock segment (root only) */
+
+
+__BEGIN_DECLS
+
+/* Data structure describing a set of semaphores. */
+struct shmid_ds
+{
+ struct ipc_perm shm_perm; /* operation permission struct */
+ int shm_segsz; /* size of segment in bytes */
+ __time_t shm_atime; /* time of last shmat() */
+ __time_t shm_dtime; /* time of last shmdt() */
+ __time_t shm_ctime; /* time of last change by shmctl() */
+ long shm_cpid; /* pid of creator */
+ long shm_lpid; /* pid of last shmop */
+ unsigned short int shm_nattch; /* number of current attaches */
+ unsigned short int __shm_npages; /* size of segment (pages) */
+ unsigned long int *__shm_pages; /* array of ptrs to frames -> SHMMAX */
+ struct vm_area_struct *__attaches; /* descriptors for attaches */
+};
+
+#ifdef __USE_MISC
+
+/* ipcs ctl commands */
+#define SHM_STAT 13
+#define SHM_INFO 14
+
+/* shm_mode upper byte flags */
+#define SHM_DEST 01000 /* segment will be destroyed on last detach */
+#define SHM_LOCKED 02000 /* segment will not be swapped */
+
+struct shminfo
+{
+ int shmmax;
+ int shmmin;
+ int shmmni;
+ int shmseg;
+ int shmall;
+};
+
+struct shm_info
+{
+ int used_ids;
+ ulong shm_tot; /* total allocated shm */
+ ulong shm_rss; /* total resident shm */
+ ulong shm_swp; /* total swapped shm */
+ ulong swap_attempts;
+ ulong swap_successes;
+};
+
+#endif /* __USE_MISC */
+
+__END_DECLS
+
+#endif /* bits/shm_buf.h */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/sigaction.h b/sysdeps/unix/sysv/linux/mips/bits/sigaction.h
new file mode 100644
index 0000000000..66c58cc540
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/sigaction.h
@@ -0,0 +1,62 @@
+/* The proper definitions for Linux/MIPS's sigaction.
+ Copyright (C) 1993, 1994, 1995, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* Structure describing the action to be taken when a signal arrives. */
+struct sigaction
+ {
+ /* Special flags. */
+ unsigned int sa_flags;
+
+ /* Signal handler. */
+ __sighandler_t sa_handler;
+
+ /* Additional set of signals to be blocked. */
+ __sigset_t sa_mask;
+
+ /* The ABI says here are two unused ints following. */
+ /* Restore handler. */
+ void (*sa_restorer) __P ((void));
+
+#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+ int sa_resv[1];
+#endif
+ };
+
+/* Bits in `sa_flags'. */
+#define SA_NOCLDSTOP 1 /* Don't send SIGCHLD when children stop. */
+#ifdef __USE_MISC
+#define SA_STACK 0x08000000 /* Use signal stack by using `sa_restorer'. */
+#define SA_RESTART 0x10000000 /* Don't restart syscall on signal return. */
+#define SA_INTERRUPT 0x20000000 /* Historical no-op. */
+#define SA_NODEFER 0x40000000 /* Don't automatically block the signal when
+ its handler is being executed. */
+#define SA_RESETHAND 0x80000000 /* Reset to SIG_DFL on entry to handler. */
+
+/* Some aliases for the SA_ constants. */
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
+#endif
+
+/* Values for the HOW argument to `sigprocmask'. */
+#define SIG_NOP 0 /* 0 is unused to catch errors */
+#define SIG_BLOCK 1 /* Block signals. */
+#define SIG_UNBLOCK 2 /* Unblock signals. */
+#define SIG_SETMASK 3 /* Set the set of blocked signals. */
+#define SIG_SETMASK32 256 /* Goodie from SGI for BSD compatibility:
+ set only the low 32 bit of the sigset. */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/signum.h b/sysdeps/unix/sysv/linux/mips/bits/signum.h
new file mode 100644
index 0000000000..5254a2b420
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/signum.h
@@ -0,0 +1,30 @@
+/* Signal number definitions. Linux version.
+ Copyright (C) 1995, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifdef _SIGNAL_H
+
+/* Take these architecture specific stuff from the kernel header files. */
+#define __need_fake_sigfuns
+#define __need_signums
+#include <asm/signal.h>
+
+#endif /* <signal.h> included. */
+
+#define __need__nsig
+#include <asm/signal.h>
diff --git a/sysdeps/unix/sysv/linux/mips/bits/socket.h b/sysdeps/unix/sysv/linux/mips/bits/socket.h
new file mode 100644
index 0000000000..15f420fc9c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/socket.h
@@ -0,0 +1,178 @@
+/* System-specific socket constants and types. Linux version.
+ Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_SOCKET_H
+#error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
+#endif
+
+
+#include <features.h>
+
+#define __need_size_t
+#define __need_NULL
+#include <stddef.h>
+
+
+__BEGIN_DECLS
+
+/* Supported address families. */
+#define PF_UNSPEC 0
+#define PF_UNIX 1 /* Unix domain sockets */
+#define PF_LOCAL 1 /* POSIX name for AF_UNIX */
+#define PF_FILE PF_LOCAL /* POSIX name for PF_LOCAL. */
+#define PF_INET 2 /* Internet IP Protocol */
+#define PF_AX25 3 /* Amateur Radio AX.25 */
+#define PF_IPX 4 /* Novell IPX */
+#define PF_APPLETALK 5 /* Appletalk DDP */
+#define PF_NETROM 6 /* Amateur Radio NET/ROM */
+#define PF_BRIDGE 7 /* Multiprotocol bridge */
+#define PF_AAL5 8 /* Reserved for Werner's ATM */
+#define PF_X25 9 /* Reserved for X.25 project */
+#define PF_INET6 10 /* IP version 6 */
+#define PF_ROSE 11 /* Amateur Radio X.25 PLP */
+#define PF_DECNET 12 /* Reserved for DECnet project */
+#define PF_NETBEUI 13 /* Reserved for 802.2LLC project*/
+#define PF_MAX 32 /* For now.. */
+
+/* Protocol families, same as address families. */
+#define AF_UNSPEC PF_UNSPEC
+#define AF_UNIX PF_UNIX
+#define AF_LOCAL PF_LOCAL
+#define AF_FILE PF_FILE
+#define AF_INET PF_INET
+#define AF_AX25 PF_AX25
+#define AF_IPX PF_IPX
+#define AF_APPLETALK PF_APPLETALK
+#define AF_NETROM PF_NETROM
+#define AF_BRIDGE PF_BRIDGE
+#define AF_AAL5 PF_AAL5
+#define AF_X25 PF_X25
+#define AF_INET6 PF_INET6
+#define AF_ROSE PF_ROSE
+#define AF_DECNET PF_DECNET
+#define AF_NETBEUI PF_NETBEUI
+
+#define AF_MAX PF_MAX
+
+/* Raw IP packet level. */
+#define SOL_RAW 255
+
+/* Maximum queue length specifiable by listen. */
+#define SOMAXCONN 128
+
+/* Get the definition of the macro to define the common sockaddr members. */
+#include <bits/sockaddr.h>
+
+/* Structure describing a generic socket address. */
+struct sockaddr
+ {
+ __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
+ char sa_data[14]; /* Address data. */
+ };
+
+
+/* Bits in the FLAGS argument to `send', `recv', et al. */
+enum
+ {
+ MSG_OOB = 0x01, /* Process out-of-band data. */
+ MSG_PEEK = 0x02, /* Peek at incoming messages. */
+ MSG_DONTROUTE = 0x04, /* Don't use local routing. */
+ MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
+ MSG_PROXY = 0x10 /* Supply or ask second address. */
+ };
+
+
+/* Structure describing messages sent by
+ `sendmsg' and received by `recvmsg'. */
+struct msghdr
+ {
+ __ptr_t msg_name; /* Address to send to/receive from. */
+ int msg_namelen; /* Length of address data. */
+ /* XXX Should be type `size_t' according to POSIX.1g. */
+
+ struct iovec *msg_iov; /* Vector of data to send/receive into. */
+ int msg_iovlen; /* Number of elements in the vector. */
+ /* XXX Should be type `size_t' according to POSIX.1g. */
+
+ __ptr_t msg_control; /* Ancillary data (eg BSD filedesc passing). */
+ int msg_controllen; /* Ancillary data buffer length. */
+ /* XXX Should be type `size_t' according to POSIX.1g. */
+ int msg_flags; /* Flags on received message. */
+ };
+
+/* Structure used for storage of ancillary data object information. */
+struct cmsghdr
+ {
+ int cmsg_len; /* Length of data in cmsg_data plus length
+ of cmsghdr structure. */
+ /* XXX Should be type `size_t' according to POSIX.1g. */
+ int cmsg_level; /* Originating protocol. */
+ int cmsg_type; /* Protocol specific type. */
+#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2
+ unsigned char __cmsg_data[0]; /* Ancillary data. */
+#endif
+ };
+
+/* Ancillary data object manipulation macros. */
+#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2
+# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
+#else
+# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
+#endif
+#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
+#define CMSG_FIRSTHDR(mhdr) \
+ ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
+ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
+
+
+#ifndef _EXTERN_INLINE
+# define _EXTERN_INLINE extern __inline
+#endif
+extern struct cmsghdr *__cmsg_nxthdr __P ((struct msghdr *__mhdr,
+ struct cmsghdr *__cmsg));
+_EXTERN_INLINE struct cmsghdr *
+__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)
+{
+ unsigned char *__p;
+
+ if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
+ /* The kernel header does this so there may be a reason. */
+ return NULL;
+
+ __p = (((unsigned char *) __cmsg)
+ + ((__cmsg->cmsg_len + sizeof (long int) - 1) & ~sizeof (long int)));
+ if (__p >= (unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)
+ /* No more entries. */
+ return NULL;
+ return (struct cmsghdr *) __p;
+}
+
+
+/* Get socket manipulation related informations from kernel headers. */
+#include <asm/socket.h>
+
+
+/* Structure used to manipulate the SO_LINGER option. */
+struct linger
+ {
+ int l_onoff; /* Nonzero to linger on close. */
+ int l_linger; /* Time to linger. */
+ };
+
+__END_DECLS
diff --git a/sysdeps/unix/sysv/linux/mips/bits/stat.h b/sysdeps/unix/sysv/linux/mips/bits/stat.h
new file mode 100644
index 0000000000..a797b34c38
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/stat.h
@@ -0,0 +1,97 @@
+/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * Never include this file directly; use <sys/stat.h> instead.
+ */
+
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H 1
+
+/* Versions of the `struct stat' data structure. */
+#define _STAT_VER_LINUX_OLD 1
+#define _STAT_VER_SVR4 2
+#define _STAT_VER_LINUX 3
+#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */
+
+/* Versions of the `xmknod' interface. */
+#define _MKNOD_VER_LINUX 1
+#define _MKNOD_VER_SVR4 2
+#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */
+
+/* Structure describing file characteristics. */
+struct stat
+ {
+ unsigned long int st_dev;
+ long int st_pad1[3];
+ __ino_t st_ino; /* File serial number. */
+ __mode_t st_mode; /* File mode. */
+ __nlink_t st_nlink; /* Link count. */
+ __uid_t st_uid; /* User ID of the file's owner. */
+ __gid_t st_gid; /* Group ID of the file's group.*/
+ unsigned long int st_rdev; /* Device number, if device. */
+ long int st_pad2[2];
+ __off_t st_size; /* Size of file, in bytes. */
+ /* SVR4 added this extra long to allow for expansion of off_t. */
+ long int st_pad3;
+ /*
+ * Actually this should be timestruc_t st_atime, st_mtime and
+ * st_ctime but we don't have it under Linux.
+ */
+ __time_t st_atime; /* Time of last access. */
+ long int __reserved0;
+ __time_t st_mtime; /* Time of last modification. */
+ long int __reserved1;
+ __time_t st_ctime; /* Time of last status change. */
+ long int __reserved2;
+ long int st_blksize; /* Optimal block size for I/O. */
+#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */
+ long int st_blocks; /* Number of 512-byte blocks allocated. */
+ char st_fstype[16]; /* Filesystem type name */
+ long int st_pad4[8];
+ /* Linux specific fields */
+ unsigned int st_flags;
+ unsigned int st_gen;
+ };
+
+
+/* Encoding of the file mode. */
+
+#define __S_IFMT 0170000 /* These bits determine file type. */
+
+/* File types. */
+#define __S_IFDIR 0040000 /* Directory. */
+#define __S_IFCHR 0020000 /* Character device. */
+#define __S_IFBLK 0060000 /* Block device. */
+#define __S_IFREG 0100000 /* Regular file. */
+#define __S_IFIFO 0010000 /* FIFO. */
+
+/* These don't actually exist on System V, but having them doesn't hurt. */
+#define __S_IFLNK 0120000 /* Symbolic link. */
+#define __S_IFSOCK 0140000 /* Socket. */
+
+/* Protection bits. */
+
+#define __S_ISUID 04000 /* Set user ID on execution. */
+#define __S_ISGID 02000 /* Set group ID on execution. */
+#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
+#define __S_IREAD 0400 /* Read by owner. */
+#define __S_IWRITE 0200 /* Write by owner. */
+#define __S_IEXEC 0100 /* Execute by owner. */
+
+#endif /* bits/stat.h */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/statfs.h b/sysdeps/unix/sysv/linux/mips/bits/statfs.h
new file mode 100644
index 0000000000..3b2306147c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/statfs.h
@@ -0,0 +1,44 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * Never include this file directly; use <sys/statfs.h> instead.
+ */
+
+#ifndef _BITS_STATFS_H
+#define _BITS_STATFS_H
+
+struct statfs
+ {
+ long int f_type;
+#define f_fstyp f_type
+ long int f_bsize;
+ long int f_frsize; /* Fragment size - unsupported */
+ long int f_blocks;
+ long int f_bfree;
+ long int f_files;
+ long int f_ffree;
+
+ /* Linux specials */
+ long int f_bavail;
+ __fsid_t f_fsid;
+ long int f_namelen;
+ long int f_spare[6];
+ };
+
+#endif /* bits/statfs.h */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/termios.h b/sysdeps/unix/sysv/linux/mips/bits/termios.h
new file mode 100644
index 0000000000..c8a24694d9
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/termios.h
@@ -0,0 +1,260 @@
+/* termios type and macro definitions. Linux/MIPS version.
+ Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * Never include this file directly; use <termios.h> instead.
+ */
+
+
+#ifndef _BITS_TERMIOS_H
+#define _BITS_TERMIOS_H 1
+
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+typedef unsigned int tcflag_t;
+
+
+#if defined __USE_BSD
+
+struct sgttyb
+ {
+ char sg_ispeed;
+ char sg_ospeed;
+ char sg_erase;
+ char sg_kill;
+ int sg_flags; /* SGI special - int, not short */
+ };
+
+struct tchars
+ {
+ char t_intrc;
+ char t_quitc;
+ char t_startc;
+ char t_stopc;
+ char t_eofc;
+ char t_brkc;
+ };
+
+struct ltchars
+ {
+ char t_suspc; /* stop process signal */
+ char t_dsuspc; /* delayed stop process signal */
+ char t_rprntc; /* reprint line */
+ char t_flushc; /* flush output (toggles) */
+ char t_werasc; /* word erase */
+ char t_lnextc; /* literal next character */
+ };
+
+#endif /* defined(__BSD) */
+
+#define NCCS 32
+struct termios
+ {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_line; /* line discipline */
+ cc_t c_cc[NCCS]; /* control characters */
+ speed_t c_ispeed; /* input speed */
+ speed_t c_ospeed; /* output speed */
+ };
+
+/* c_cc characters */
+#define VINTR 0 /* Interrupt character [ISIG]. */
+#define VQUIT 1 /* Quit character [ISIG]. */
+#define VERASE 2 /* Erase character [ICANON]. */
+#define VKILL 3 /* Kill-line character [ICANON]. */
+#define VMIN 4 /* Minimum number of bytes read at once [!ICANON]. */
+#define VTIME 5 /* Time-out value (tenths of a second) [!ICANON]. */
+#if defined (__USE_BSD)
+#define VEOL2 6 /* Second EOL character [ICANON]. */
+/* The next two are guesses ... */
+#define VSWTC 7 /* ??? */
+#endif
+#define VSWTCH VSWTC
+#define VSTART 8 /* Start (X-ON) character [IXON, IXOFF]. */
+#define VSTOP 9 /* Stop (X-OFF) character [IXON, IXOFF]. */
+#define VSUSP 10 /* Suspend character [ISIG]. */
+#if 0
+/*
+ * VDSUSP is not supported
+ */
+#if defined (__USE_BSD)
+#define VDSUSP 11 /* Delayed suspend character [ISIG]. */
+#endif
+#endif
+#if defined (__USE_BSD)
+#define VREPRINT 12 /* Reprint-line character [ICANON]. */
+#endif
+#if defined (__USE_BSD)
+#define VDISCARD 13 /* Discard character [IEXTEN]. */
+#define VWERASE 14 /* Word-erase character [ICANON]. */
+#define VLNEXT 15 /* Literal-next character [IEXTEN]. */
+#endif
+#define VEOF 16 /* End-of-file character [ICANON]. */
+#define VEOL 17 /* End-of-line character [ICANON]. */
+
+/* c_iflag bits */
+#define IGNBRK 0000001 /* Ignore break condition. */
+#define BRKINT 0000002 /* Signal interrupt on break. */
+#define IGNPAR 0000004 /* Ignore characters with parity errors. */
+#define PARMRK 0000010 /* Mark parity and framing errors. */
+#define INPCK 0000020 /* Enable input parity check. */
+#define ISTRIP 0000040 /* Strip 8th bit off characters. */
+#define INLCR 0000100 /* Map NL to CR on input. */
+#define IGNCR 0000200 /* Ignore CR. */
+#define ICRNL 0000400 /* Map CR to NL on input. */
+#if defined (__USE_BSD)
+#define IUCLC 0001000 /* Map upper case to lower case on input. */
+#endif
+#define IXON 0002000 /* Enable start/stop output control. */
+#if defined (__USE_BSD)
+#define IXANY 0004000 /* Any character will restart after stop. */
+#endif
+#define IXOFF 0010000 /* Enable start/stop input control. */
+#if defined (__USE_BSD)
+#define IMAXBEL 0020000 /* Ring bell when input queue is full. */
+#endif
+
+/* c_oflag bits */
+#define OPOST 0000001 /* Perform output processing. */
+#if defined (__USE_BSD)
+#define OLCUC 0000002 /* Map lower case to upper case on output. */
+#define ONLCR 0000004 /* Map NL to CR-NL on output. */
+#define OCRNL 0000010
+#define ONOCR 0000020
+#define ONLRET 0000040
+#define OFILL 0000100
+#define OFDEL 0000200
+#define NLDLY 0000400
+#define NL0 0000000
+#define NL1 0000400
+#define CRDLY 0003000
+#define CR0 0000000
+#define CR1 0001000
+#define CR2 0002000
+#define CR3 0003000
+#define TABDLY 0014000
+#define TAB0 0000000
+#define TAB1 0004000
+#define TAB2 0010000
+#define TAB3 0014000
+#define XTABS 0014000
+#define BSDLY 0020000
+#define BS0 0000000
+#define BS1 0020000
+#define VTDLY 0040000
+#define VT0 0000000
+#define VT1 0040000
+#define FFDLY 0100000
+#define FF0 0000000
+#define FF1 0100000
+/*
+#define PAGEOUT ???
+#define WRAP ???
+ */
+#endif
+
+/* c_cflag bit meaning */
+#define CBAUD 0010017
+#define B0 0000000 /* hang up */
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
+#define EXTA B19200
+#define EXTB B38400
+#define CSIZE 0000060 /* Number of bits per byte (mask). */
+#define CS5 0000000 /* 5 bits per byte. */
+#define CS6 0000020 /* 6 bits per byte. */
+#define CS7 0000040 /* 7 bits per byte. */
+#define CS8 0000060 /* 8 bits per byte. */
+#define CSTOPB 0000100 /* Two stop bits instead of one. */
+#define CREAD 0000200 /* Enable receiver. */
+#define PARENB 0000400 /* Parity enable. */
+#define PARODD 0001000 /* Odd parity instead of even. */
+#define HUPCL 0002000 /* Hang up on last close. */
+#define CLOCAL 0004000 /* Ignore modem status lines. */
+#if defined (__USE_BSD)
+#define CBAUDEX 0010000
+#define B57600 0010001
+#define B115200 0010002
+#define B230400 0010003
+#define B460800 0010004
+#define CIBAUD 002003600000 /* input baud rate (not used) */
+#define CRTSCTS 020000000000 /* flow control */
+#endif
+
+/* c_lflag bits */
+#define ISIG 0000001 /* Enable signals. */
+#define ICANON 0000002 /* Do erase and kill processing. */
+#define XCASE 0000004
+#define ECHO 0000010 /* Enable echo. */
+#define ECHOE 0000020 /* Visual erase for ERASE. */
+#define ECHOK 0000040 /* Echo NL after KILL. */
+#define ECHONL 0000100 /* Echo NL even if ECHO is off. */
+#define NOFLSH 0000200 /* Disable flush after interrupt. */
+#define IEXTEN 0000400 /* Enable DISCARD and LNEXT. */
+#if defined (__USE_BSD)
+#define ECHOCTL 0001000 /* Echo control characters as ^X. */
+#define ECHOPRT 0002000 /* Hardcopy visual erase. */
+#define ECHOKE 0004000 /* Visual erase for KILL. */
+#endif
+#define FLUSHO 0020000
+#if defined (__USE_BSD)
+#define PENDIN 0040000 /* Retype pending input (state). */
+#endif
+#define TOSTOP 0100000 /* Send SIGTTOU for background output. */
+#define ITOSTOP TOSTOP
+
+/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
+#define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
+
+/* tcflow() and TCXONC use these */
+#define TCOOFF 0 /* Suspend output. */
+#define TCOON 1 /* Restart suspended output. */
+#define TCIOFF 2 /* Send a STOP character. */
+#define TCION 3 /* Send a START character. */
+
+/* tcflush() and TCFLSH use these */
+#define TCIFLUSH 0 /* Discard data received but not yet read. */
+#define TCOFLUSH 1 /* Discard data written but not yet sent. */
+#define TCIOFLUSH 2 /* Discard all pending data. */
+
+/* tcsetattr uses these */
+#define TCSANOW 0x540e /* Same as TCSETS; change immediately. */
+#define TCSADRAIN 0x540f /* Same as TCSETSW; change when pending output is written. */
+#define TCSAFLUSH 0x5410 /* Same as TCSETSF; flush pending input before changing. */
+
+#define _IOT_termios /* Hurd ioctl type field. */ \
+ _IOT (_IOTS (cflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
+
+#endif /* bits/termios.h */
diff --git a/sysdeps/unix/sysv/linux/mips/bits/time.h b/sysdeps/unix/sysv/linux/mips/bits/time.h
new file mode 100644
index 0000000000..5fcef0fb8c
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/bits/time.h
@@ -0,0 +1,54 @@
+/* System-dependent timing definitions. Linux/MIPS version.
+ Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/*
+ * Never include this file directly; use <time.h> instead.
+ */
+
+#ifdef __need_timeval
+# undef __need_timeval
+# ifndef _STRUCT_TIMEVAL
+# define _STRUCT_TIMEVAL 1
+/* A time value that is accurate to the nearest
+ microsecond but also has a range of years. */
+struct timeval
+ {
+ long tv_sec; /* Seconds. */
+ long tv_usec; /* Microseconds. */
+ };
+# endif /* struct timeval */
+#endif /* need timeval */
+
+
+#ifndef _BITS_TIME_H
+#define _BITS_TIME_H 1
+
+/* ISO/IEC 9899:1990 7.12.1: <time.h>
+ The macro `CLOCKS_PER_SEC' is the number per second of the value
+ returned by the `clock' function. */
+/* CAE XSH, Issue 4, Version 2: <time.h>
+ The value of CLOCKS_PER_SEC is required to be 1 million on all
+ XSI-conformant systems. */
+# define CLOCKS_PER_SEC 1000000
+
+/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
+ presents the real value for clock ticks per second for the system. */
+# define CLK_TCK 100 /* XXX not correct for all systems. */
+
+#endif /* bits/time.h */
diff --git a/sysdeps/unix/sysv/linux/mips/clone.S b/sysdeps/unix/sysv/linux/mips/clone.S
new file mode 100644
index 0000000000..357f70e47f
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/clone.S
@@ -0,0 +1,125 @@
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>, 1996.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+/* clone() is even more special than fork() as it mucks with stacks
+ and invokes a function in the right context after its all over. */
+
+#include <sys/asm.h>
+#include <asm/unistd.h>
+#include <sysdep.h>
+#define _ERRNO_H 1
+#include <bits/errno.h>
+
+/* int clone(int (*fn)(), void *child_stack, int flags, int nargs, ...) */
+
+#define FRAMESZ 4*SZREG
+#if _MIPS_SIM == _MIPS_SIM_ABI32
+#define MAX_REG_ARGS 4
+#else
+#define MAX_REG_ARGS 6
+#endif
+
+ .text
+NESTED(__clone,4*SZREG,sp)
+#ifdef __PIC__
+ .set noreorder
+ .cpload $25
+ .set reorder
+ .cprestore 16
+#endif
+ PTR_SUBIU sp,FRAMESZ
+#ifdef PROF
+ .set noat
+ move $1,ra
+ jal _mcount
+ .set at
+#endif
+
+ /* Sanity check arguments. */
+ li v0,EINVAL
+ beqz a0,error /* no NULL function pointers */
+ beqz a1,error /* no NULL stack pointers */
+ bltz a3,error /* no negative argument counts */
+
+ /* Allocate space on the new stack and copy args over */
+ move t0,a3 # save nargs for __thread_start
+ PTR_SLL t1,a3,PTR_SCALESHIFT
+ PTR_ADDU t1,a3,sp
+1: REG_L t2,-SZREG(t1)
+ PTR_SUBIU t1,SZREG
+ REG_S t2,-SZREG(a1)
+ PTR_SUBIU a3,1
+ PTR_SUBIU a1,SZREG
+ bnez a3,1b
+
+ /* Do the system call */
+ move t9,a0 # get fn ptr out of the way
+ move a0,a2
+ li v0,__NR_clone
+ syscall
+
+ bnez a3,error
+ beqz v0,__thread_start
+
+ /* Successful return from the parent */
+ PTR_ADDIU sp,FRAMESZ
+ ret
+
+ /* Something bad happened -- no child created */
+error:
+ PTR_ADDIU sp,FRAMESZ
+#ifdef PIC
+ la t9,__syscall_error
+ jr t9
+#else
+ j __syscall_error
+#endif
+ END(__clone)
+
+/* Load up the arguments to the function. Put this block of code in
+ its own function so that we can terminate the stack trace with our
+ debug info.
+
+ At this point we have t0=nargs, t9=fn, sp=&arg[0]. */
+
+NESTED(__thread_start,32,sp)
+ /* Stackframe has been created on entry of clone() */
+ /* Calculate address of jump into argument loading code */
+ li t1,MAX_REG_ARGS
+ slt t0,t1,t2 /* max MAX_REG_ARGS args in registers */
+ MOVN (t2,t1,t0)
+ la v0,arg0
+ PTR_SLL t1,t0,PTR_SCALESHIFT
+ PTR_SUBU v0,t1
+ jr v0
+
+ /* Load the integer register arguments */
+ REG_L a0,SZREG(sp)
+arg0:
+
+ /* Call the user's function */
+ jalr t9
+
+ /* Call _exit rather than doing it inline for breakpoint purposes */
+ move a0,v0
+ jal _exit
+
+ END(__thread_start)
+
+weak_alias(__clone, clone)
diff --git a/sysdeps/unix/sysv/linux/mips/entry.h b/sysdeps/unix/sysv/linux/mips/entry.h
new file mode 100644
index 0000000000..3db6d93636
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/entry.h
@@ -0,0 +1 @@
+#define ENTRY_POINT __start
diff --git a/sysdeps/unix/sysv/linux/mips/fpregdef.h b/sysdeps/unix/sysv/linux/mips/fpregdef.h
new file mode 100644
index 0000000000..a963d5f588
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/fpregdef.h
@@ -0,0 +1 @@
+#include <sys/fpregdef.h>
diff --git a/sysdeps/unix/sysv/linux/mips/fxstat.c b/sysdeps/unix/sysv/linux/mips/fxstat.c
new file mode 100644
index 0000000000..4a3c486a4a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/fxstat.c
@@ -0,0 +1,80 @@
+/* fxstat using old-style Unix fstat system call.
+ Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+
+#include <kernel_stat.h>
+
+extern int __syscall_fstat (int, struct kernel_stat *);
+
+/* Get information about the file descriptor FD in BUF. */
+int
+__fxstat (int vers, int fd, struct stat *buf)
+{
+ struct kernel_stat kbuf;
+ int result;
+
+ switch (vers)
+ {
+ case _STAT_VER_LINUX_OLD:
+ /* Nothing to do. The struct is in the form the kernel expects
+ it to be. */
+ result = __syscall_fstat (fd, (struct kernel_stat *) buf);
+ break;
+
+ case _STAT_VER_LINUX:
+ /* Do the system call. */
+ result = __syscall_fstat (fd, &kbuf);
+
+ /* Convert to current kernel version of `struct stat'. */
+ buf->st_dev = kbuf.st_dev;
+ buf->st_pad1[0] = 0; buf->st_pad1[1] = 0; buf->st_pad1[2] = 0;
+ buf->st_ino = kbuf.st_ino;
+ buf->st_mode = kbuf.st_mode;
+ buf->st_nlink = kbuf.st_nlink;
+ buf->st_uid = kbuf.st_uid;
+ buf->st_gid = kbuf.st_gid;
+ buf->st_rdev = kbuf.st_rdev;
+ buf->st_pad2[0] = 0; buf->st_pad2[1] = 0;
+ buf->st_pad3 = 0;
+ buf->st_size = kbuf.st_size;
+ buf->st_blksize = kbuf.st_blksize;
+ buf->st_blocks = kbuf.st_blocks;
+
+ buf->st_atime = kbuf.st_atime; buf->__reserved0 = 0;
+ buf->st_mtime = kbuf.st_mtime; buf->__reserved1 = 0;
+ buf->st_ctime = kbuf.st_ctime; buf->__reserved2 = 0;
+
+ buf->st_pad4[0] = 0; buf->st_pad4[1] = 0;
+ buf->st_pad4[2] = 0; buf->st_pad4[3] = 0;
+ buf->st_pad4[4] = 0; buf->st_pad4[5] = 0;
+ buf->st_pad4[6] = 0; buf->st_pad4[7] = 0;
+ break;
+
+ default:
+ __set_errno (EINVAL);
+ result = -1;
+ break;
+ }
+
+ return result;
+}
+weak_alias (__fxstat, _fxstat)
diff --git a/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h b/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h
new file mode 100644
index 0000000000..bb7fe6bece
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/kernel_sigaction.h
@@ -0,0 +1,22 @@
+/* This is the sigaction structure from the Linux 2.1.24 kernel. */
+
+#include <sgidefs.h>
+
+#define HAVE_SA_RESTORER
+
+struct kernel_sigaction {
+ unsigned int sa_flags;
+ __sighandler_t sa_handler;
+ unsigned long sa_mask;
+ unsigned int __pad0[3]; /* reserved, keep size constant */
+
+ /* Abi says here follows reserved int[2] */
+ void (*sa_restorer)(void);
+#if (_MIPS_ISA == _MIPS_ISA_MIPS1) || (_MIPS_ISA == _MIPS_ISA_MIPS2)
+ /*
+ * For 32 bit code we have to pad struct sigaction to get
+ * constant size for the ABI
+ */
+ int pad1[1]; /* reserved */
+#endif
+};
diff --git a/sysdeps/unix/sysv/linux/mips/kernel_stat.h b/sysdeps/unix/sysv/linux/mips/kernel_stat.h
new file mode 100644
index 0000000000..c6419baf37
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/kernel_stat.h
@@ -0,0 +1,28 @@
+/* Definition of `struct stat' used in the kernel.. */
+struct kernel_stat
+ {
+ unsigned long int st_dev;
+ long int __pad1[3]; /* Reserved for network id */
+ unsigned long int st_ino;
+ unsigned long int st_mode;
+ unsigned long int st_nlink;
+ long int st_uid;
+ long int st_gid;
+ unsigned long int st_rdev;
+ long int __pad2[2];
+ long int st_size;
+ long int __pad3;
+ unsigned int st_atime;
+ unsigned int __unused1;
+ unsigned int st_mtime;
+ unsigned int __unused2;
+ unsigned int st_ctime;
+ unsigned int __unused3;
+ long int st_blksize;
+ long int st_blocks;
+ char st_fstype[16]; /* Filesystem type name, unsupported */
+ long st_pad4[8];
+ /* Linux specific fields */
+ unsigned int st_flags;
+ unsigned int st_gen;
+ };
diff --git a/sysdeps/unix/sysv/linux/mips/kernel_termios.h b/sysdeps/unix/sysv/linux/mips/kernel_termios.h
new file mode 100644
index 0000000000..35be1bb290
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/kernel_termios.h
@@ -0,0 +1,20 @@
+#ifndef _SYS_KERNEL_TERMIOS_H
+#define _SYS_KERNEL_TERMIOS_H 1
+/* The following corresponds to the values from the Linux 2.1.24 kernel. */
+
+/* We need the definition of tcflag_t, cc_t, and speed_t. */
+#include <bits/termios.h>
+
+#define __KERNEL_NCCS 23
+
+struct __kernel_termios
+ {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_line; /* line discipline */
+ cc_t c_cc[__KERNEL_NCCS]; /* control characters */
+ };
+
+#endif /* kernel_termios.h */
diff --git a/sysdeps/unix/sysv/linux/mips/lxstat.h b/sysdeps/unix/sysv/linux/mips/lxstat.h
new file mode 100644
index 0000000000..7907b2f2d2
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/lxstat.h
@@ -0,0 +1,80 @@
+/* lxstat using old-style Unix lstat system call.
+ Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+
+#include <kernel_stat.h>
+
+extern int __syscall_lstat (const char *, struct kernel_stat *);
+
+/* Get information about the file NAME in BUF. */
+int
+__lxstat (int vers, const char *name, struct stat *buf)
+{
+ struct kernel_stat kbuf;
+ int result;
+
+ switch (vers)
+ {
+ case _STAT_VER_LINUX_OLD:
+ /* Nothing to do. The struct is in the form the kernel expects
+ it to be. */
+ result = __syscall_lstat (name, (struct kernel_stat *) buf);
+ break;
+
+ case _STAT_VER_LINUX:
+ /* Do the system call. */
+ result = __syscall_lstat (name, &kbuf);
+
+ /* Convert to current kernel version of `struct stat'. */
+ buf->st_dev = kbuf.st_dev;
+ buf->st_pad1[0] = 0; buf->st_pad1[1] = 0; buf->st_pad1[2] = 0;
+ buf->st_ino = kbuf.st_ino;
+ buf->st_mode = kbuf.st_mode;
+ buf->st_nlink = kbuf.st_nlink;
+ buf->st_uid = kbuf.st_uid;
+ buf->st_gid = kbuf.st_gid;
+ buf->st_rdev = kbuf.st_rdev;
+ buf->st_pad2[0] = 0; buf->st_pad2[1] = 0;
+ buf->st_pad3 = 0;
+ buf->st_size = kbuf.st_size;
+ buf->st_blksize = kbuf.st_blksize;
+ buf->st_blocks = kbuf.st_blocks;
+
+ buf->st_atime = kbuf.st_atime; buf->__reserved0 = 0;
+ buf->st_mtime = kbuf.st_mtime; buf->__reserved1 = 0;
+ buf->st_ctime = kbuf.st_ctime; buf->__reserved2 = 0;
+
+ buf->st_pad4[0] = 0; buf->st_pad4[1] = 0;
+ buf->st_pad4[2] = 0; buf->st_pad4[3] = 0;
+ buf->st_pad4[4] = 0; buf->st_pad4[5] = 0;
+ buf->st_pad4[6] = 0; buf->st_pad4[7] = 0;
+ break;
+
+ default:
+ __set_errno (EINVAL);
+ result = -1;
+ break;
+ }
+
+ return result;
+}
+weak_alias (__lxstat, _lxstat)
diff --git a/sysdeps/unix/sysv/linux/mips/regdef.h b/sysdeps/unix/sysv/linux/mips/regdef.h
new file mode 100644
index 0000000000..b613c8b250
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/regdef.h
@@ -0,0 +1 @@
+#include <sys/regdef.h>
diff --git a/sysdeps/unix/sysv/linux/mips/sgidef.h b/sysdeps/unix/sysv/linux/mips/sgidef.h
new file mode 100644
index 0000000000..a36ece0175
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sgidef.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SGIDEFS_H
+#define _SGIDEFS_H 1
+
+/*
+ * The real definitions come from the Linux kernel sources
+ */
+#include <asm/sgidefs.h>
+
+#endif /* sgidefs.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/acct.h b/sysdeps/unix/sysv/linux/mips/sys/acct.h
new file mode 100644
index 0000000000..ee596db82b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/acct.h
@@ -0,0 +1,66 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_ACCT_H
+
+#define _SYS_ACCT_H 1
+#include <features.h>
+
+#define __need_time_t
+#include <time.h>
+
+
+__BEGIN_DECLS
+
+#define ACCT_COMM 16
+
+struct acct
+ {
+ char ac_comm[ACCT_COMM]; /* Accounting command name. */
+ time_t ac_utime; /* Accounting user time. */
+ time_t ac_stime; /* Accounting system time. */
+ time_t ac_etime; /* Accounting elapsed time. */
+ time_t ac_btime; /* Beginning time. */
+ long ac_uid; /* Accounting user ID. */
+ long ac_gid; /* Accounting group ID. */
+ unsigned long int ac_tty; /* Controlling tty. */
+ /* Please note that the value of the `ac_tty' field, a device number,
+ is encoded differently in the kernel and for the libc dev_t type. */
+ char ac_flag; /* Accounting flag. */
+ long int ac_minflt; /* Accounting minor pagefaults. */
+ long int ac_majflt; /* Accounting major pagefaults. */
+ long int ac_exitcode; /* Accounting process exitcode. */
+ };
+
+enum
+ {
+ AFORK = 0001, /* Has executed fork, but no exec. */
+ ASU = 0002, /* Used super-user privileges. */
+ ACORE = 0004, /* Dumped core. */
+ AXSIG = 0010 /* Killed by a signal. */
+ };
+
+#define AHZ 100
+
+
+/* Switch process accounting on and off. */
+extern int acct __P ((__const char *__filename));
+
+__END_DECLS
+
+#endif /* sys/acct.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/asm.h b/sysdeps/unix/sysv/linux/mips/sys/asm.h
new file mode 100644
index 0000000000..346a9c4ec2
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/asm.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_ASM_H
+#define _SYS_ASM_H
+
+/*
+ * The real definitions come from the Linux kernel sources
+ */
+#include <asm/asm.h>
+
+#endif /* sys/asm.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/cachectl.h b/sysdeps/unix/sysv/linux/mips/sys/cachectl.h
new file mode 100644
index 0000000000..740c24d6a8
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/cachectl.h
@@ -0,0 +1,42 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_CACHECTL_H
+#define _SYS_CACHECTL_H 1
+
+#include <features.h>
+
+/*
+ * Get the kernel definition for the op bits.
+ */
+#include <asm/cachectl.h>
+
+__BEGIN_DECLS
+
+#ifdef __USE_MISC
+extern int cachectl __P ((void *addr, __const int nbytes, __const int op));
+#endif
+extern int __cachectl __P ((void *addr, __const int nbytes, __const int op));
+#ifdef __USE_MISC
+extern int cacheflush __P ((void *addr, __const int nbytes, __const int op));
+#endif
+extern int _flush_cache __P ((char *addr, __const int nbytes, __const int op));
+
+__END_DECLS
+
+#endif /* sys/cachectl.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/fpregdef.h b/sysdeps/unix/sysv/linux/mips/sys/fpregdef.h
new file mode 100644
index 0000000000..48d8f7513e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/fpregdef.h
@@ -0,0 +1,27 @@
+/* Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_FPREGDEF_H
+#define _SYS_FPREGDEF_H
+
+/*
+ * The real definitions come from the Linux kernel sources
+ */
+#include <asm/fpregdef.h>
+
+#endif /* sys/fpregdef.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/procfs.h b/sysdeps/unix/sysv/linux/mips/sys/procfs.h
new file mode 100644
index 0000000000..d740954a8d
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/procfs.h
@@ -0,0 +1,109 @@
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_PROCFS_H
+
+#define _SYS_PROCFS_H 1
+#include <features.h>
+
+/* This is somehow modelled after the file of the same name on SysVr4
+ systems. It provides a definition of the core file format for ELF
+ used on Linux. */
+
+#include <signal.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <asm/user.h>
+#include <asm/elf.h>
+
+__BEGIN_DECLS
+
+struct elf_siginfo
+ {
+ int si_signo; /* Signal number. */
+ int si_code; /* Extra code. */
+ int si_errno; /* Errno. */
+ };
+
+typedef elf_greg_t greg_t;
+typedef elf_gregset_t gregset_t;
+typedef elf_fpregset_t fpregset_t;
+#define NGREG ELF_NGREG
+
+/* Definitions to generate Intel SVR4-like core files. These mostly
+ have the same names as the SVR4 types with "elf_" tacked on the
+ front to prevent clashes with linux definitions, and the typedef
+ forms have been avoided. This is mostly like the SVR4 structure,
+ but more Linuxy, with things that Linux does not support and which
+ gdb doesn't really use excluded. Fields present but not used are
+ marked with "XXX". */
+struct elf_prstatus
+ {
+#if 0
+ long int pr_flags; /* XXX Process flags. */
+ short int pr_why; /* XXX Reason for process halt. */
+ short int pr_what; /* XXX More detailed reason. */
+#endif
+ struct elf_siginfo pr_info; /* Info associated with signal. */
+ short int pr_cursig; /* Current signal. */
+ unsigned long int pr_sigpend; /* Set of pending signals. */
+ unsigned long int pr_sighold; /* Set of held signals. */
+#if 0
+ struct sigaltstack pr_altstack; /* Alternate stack info. */
+ struct sigaction pr_action; /* Signal action for current sig. */
+#endif
+ __pid_t pr_pid;
+ __pid_t pr_ppid;
+ __pid_t pr_pgrp;
+ __pid_t pr_sid;
+ struct timeval pr_utime; /* User time. */
+ struct timeval pr_stime; /* System time. */
+ struct timeval pr_cutime; /* Cumulative user time. */
+ struct timeval pr_cstime; /* Cumulative system time. */
+#if 0
+ long int pr_instr; /* Current instruction. */
+#endif
+ elf_gregset_t pr_reg; /* GP registers. */
+ int pr_fpvalid; /* True if math copro being used. */
+ };
+
+
+#define ELF_PRARGSZ (80) /* Number of chars for args */
+
+struct elf_prpsinfo
+ {
+ char pr_state; /* Numeric process state. */
+ char pr_sname; /* Char for pr_state. */
+ char pr_zomb; /* Zombie. */
+ char pr_nice; /* Nice val. */
+ unsigned long int pr_flag; /* Flags. */
+ long pr_uid;
+ long pr_gid;
+ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+ /* Lots missing */
+ char pr_fname[16]; /* Filename of executable. */
+ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
+ };
+
+
+typedef struct elf_prstatus prstatus_t;
+typedef struct elf_prpsinfo prpsinfo_t;
+
+__END_DECLS
+
+#endif /* sys/procfs.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/regdef.h b/sysdeps/unix/sysv/linux/mips/sys/regdef.h
new file mode 100644
index 0000000000..700fd66f0b
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/regdef.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ralf Baechle <ralf@gnu.ai.mit.edu>.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _REGDEF_H
+#define _REGDEF_H 1
+
+/*
+ * The real definitions come from the Linux kernel sources
+ */
+#include <asm/regdef.h>
+#include <asm/fpregdef.h>
+
+#endif /* regdef.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/syscall.h b/sysdeps/unix/sysv/linux/mips/sys/syscall.h
new file mode 100644
index 0000000000..82f8427aa0
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/syscall.h
@@ -0,0 +1,1187 @@
+/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYSCALL_H
+#define _SYSCALL_H 1
+
+/* This file should list the numbers of the system the system knows.
+ But instead of duplicating this we use the information available
+ from the kernel sources. */
+#include <asm/unistd.h>
+
+/*
+ * SVR4 syscalls are in the range from 1 to 999
+ */
+#define SYS_SVR4 0
+#define SYS_SVR4_syscall (SYS_SVR4 + 0)
+#define SYS_SVR4_exit (SYS_SVR4 + 1)
+#define SYS_SVR4_fork (SYS_SVR4 + 2)
+#define SYS_SVR4_read (SYS_SVR4 + 3)
+#define SYS_SVR4_write (SYS_SVR4 + 4)
+#define SYS_SVR4_open (SYS_SVR4 + 5)
+#define SYS_SVR4_close (SYS_SVR4 + 6)
+#define SYS_SVR4_wait (SYS_SVR4 + 7)
+#define SYS_SVR4_creat (SYS_SVR4 + 8)
+#define SYS_SVR4_link (SYS_SVR4 + 9)
+#define SYS_SVR4_unlink (SYS_SVR4 + 10)
+#define SYS_SVR4_exec (SYS_SVR4 + 11)
+#define SYS_SVR4_chdir (SYS_SVR4 + 12)
+#define SYS_SVR4_gtime (SYS_SVR4 + 13)
+#define SYS_SVR4_mknod (SYS_SVR4 + 14)
+#define SYS_SVR4_chmod (SYS_SVR4 + 15)
+#define SYS_SVR4_chown (SYS_SVR4 + 16)
+#define SYS_SVR4_sbreak (SYS_SVR4 + 17)
+#define SYS_SVR4_stat (SYS_SVR4 + 18)
+#define SYS_SVR4_lseek (SYS_SVR4 + 19)
+#define SYS_SVR4_getpid (SYS_SVR4 + 20)
+#define SYS_SVR4_mount (SYS_SVR4 + 21)
+#define SYS_SVR4_umount (SYS_SVR4 + 22)
+#define SYS_SVR4_setuid (SYS_SVR4 + 23)
+#define SYS_SVR4_getuid (SYS_SVR4 + 24)
+#define SYS_SVR4_stime (SYS_SVR4 + 25)
+#define SYS_SVR4_ptrace (SYS_SVR4 + 26)
+#define SYS_SVR4_alarm (SYS_SVR4 + 27)
+#define SYS_SVR4_fstat (SYS_SVR4 + 28)
+#define SYS_SVR4_pause (SYS_SVR4 + 29)
+#define SYS_SVR4_utime (SYS_SVR4 + 30)
+#define SYS_SVR4_stty (SYS_SVR4 + 31)
+#define SYS_SVR4_gtty (SYS_SVR4 + 32)
+#define SYS_SVR4_access (SYS_SVR4 + 33)
+#define SYS_SVR4_nice (SYS_SVR4 + 34)
+#define SYS_SVR4_statfs (SYS_SVR4 + 35)
+#define SYS_SVR4_sync (SYS_SVR4 + 36)
+#define SYS_SVR4_kill (SYS_SVR4 + 37)
+#define SYS_SVR4_fstatfs (SYS_SVR4 + 38)
+#define SYS_SVR4_setpgrp (SYS_SVR4 + 39)
+#define SYS_SVR4_cxenix (SYS_SVR4 + 40)
+#define SYS_SVR4_dup (SYS_SVR4 + 41)
+#define SYS_SVR4_pipe (SYS_SVR4 + 42)
+#define SYS_SVR4_times (SYS_SVR4 + 43)
+#define SYS_SVR4_profil (SYS_SVR4 + 44)
+#define SYS_SVR4_plock (SYS_SVR4 + 45)
+#define SYS_SVR4_setgid (SYS_SVR4 + 46)
+#define SYS_SVR4_getgid (SYS_SVR4 + 47)
+#define SYS_SVR4_sig (SYS_SVR4 + 48)
+#define SYS_SVR4_msgsys (SYS_SVR4 + 49)
+#define SYS_SVR4_sysmips (SYS_SVR4 + 50)
+#define SYS_SVR4_sysacct (SYS_SVR4 + 51)
+#define SYS_SVR4_shmsys (SYS_SVR4 + 52)
+#define SYS_SVR4_semsys (SYS_SVR4 + 53)
+#define SYS_SVR4_ioctl (SYS_SVR4 + 54)
+#define SYS_SVR4_uadmin (SYS_SVR4 + 55)
+#define SYS_SVR4_exch (SYS_SVR4 + 56)
+#define SYS_SVR4_utssys (SYS_SVR4 + 57)
+#define SYS_SVR4_fsync (SYS_SVR4 + 58)
+#define SYS_SVR4_exece (SYS_SVR4 + 59)
+#define SYS_SVR4_umask (SYS_SVR4 + 60)
+#define SYS_SVR4_chroot (SYS_SVR4 + 61)
+#define SYS_SVR4_fcntl (SYS_SVR4 + 62)
+#define SYS_SVR4_ulimit (SYS_SVR4 + 63)
+#define SYS_SVR4_reserved1 (SYS_SVR4 + 64)
+#define SYS_SVR4_reserved2 (SYS_SVR4 + 65)
+#define SYS_SVR4_reserved3 (SYS_SVR4 + 66)
+#define SYS_SVR4_reserved4 (SYS_SVR4 + 67)
+#define SYS_SVR4_reserved5 (SYS_SVR4 + 68)
+#define SYS_SVR4_reserved6 (SYS_SVR4 + 69)
+#define SYS_SVR4_advfs (SYS_SVR4 + 70)
+#define SYS_SVR4_unadvfs (SYS_SVR4 + 71)
+#define SYS_SVR4_unused1 (SYS_SVR4 + 72)
+#define SYS_SVR4_unused2 (SYS_SVR4 + 73)
+#define SYS_SVR4_rfstart (SYS_SVR4 + 74)
+#define SYS_SVR4_unused3 (SYS_SVR4 + 75)
+#define SYS_SVR4_rdebug (SYS_SVR4 + 76)
+#define SYS_SVR4_rfstop (SYS_SVR4 + 77)
+#define SYS_SVR4_rfsys (SYS_SVR4 + 78)
+#define SYS_SVR4_rmdir (SYS_SVR4 + 79)
+#define SYS_SVR4_mkdir (SYS_SVR4 + 80)
+#define SYS_SVR4_getdents (SYS_SVR4 + 81)
+#define SYS_SVR4_libattach (SYS_SVR4 + 82)
+#define SYS_SVR4_libdetach (SYS_SVR4 + 83)
+#define SYS_SVR4_sysfs (SYS_SVR4 + 84)
+#define SYS_SVR4_getmsg (SYS_SVR4 + 85)
+#define SYS_SVR4_putmsg (SYS_SVR4 + 86)
+#define SYS_SVR4_poll (SYS_SVR4 + 87)
+#define SYS_SVR4_lstat (SYS_SVR4 + 88)
+#define SYS_SVR4_symlink (SYS_SVR4 + 89)
+#define SYS_SVR4_readlink (SYS_SVR4 + 90)
+#define SYS_SVR4_setgroups (SYS_SVR4 + 91)
+#define SYS_SVR4_getgroups (SYS_SVR4 + 92)
+#define SYS_SVR4_fchmod (SYS_SVR4 + 93)
+#define SYS_SVR4_fchown (SYS_SVR4 + 94)
+#define SYS_SVR4_sigprocmask (SYS_SVR4 + 95)
+#define SYS_SVR4_sigsuspend (SYS_SVR4 + 96)
+#define SYS_SVR4_sigaltstack (SYS_SVR4 + 97)
+#define SYS_SVR4_sigaction (SYS_SVR4 + 98)
+#define SYS_SVR4_sigpending (SYS_SVR4 + 99)
+#define SYS_SVR4_setcontext (SYS_SVR4 + 100)
+#define SYS_SVR4_evsys (SYS_SVR4 + 101)
+#define SYS_SVR4_evtrapret (SYS_SVR4 + 102)
+#define SYS_SVR4_statvfs (SYS_SVR4 + 103)
+#define SYS_SVR4_fstatvfs (SYS_SVR4 + 104)
+#define SYS_SVR4_reserved7 (SYS_SVR4 + 105)
+#define SYS_SVR4_nfssys (SYS_SVR4 + 106)
+#define SYS_SVR4_waitid (SYS_SVR4 + 107)
+#define SYS_SVR4_sigsendset (SYS_SVR4 + 108)
+#define SYS_SVR4_hrtsys (SYS_SVR4 + 109)
+#define SYS_SVR4_acancel (SYS_SVR4 + 110)
+#define SYS_SVR4_async (SYS_SVR4 + 111)
+#define SYS_SVR4_priocntlset (SYS_SVR4 + 112)
+#define SYS_SVR4_pathconf (SYS_SVR4 + 113)
+#define SYS_SVR4_mincore (SYS_SVR4 + 114)
+#define SYS_SVR4_mmap (SYS_SVR4 + 115)
+#define SYS_SVR4_mprotect (SYS_SVR4 + 116)
+#define SYS_SVR4_munmap (SYS_SVR4 + 117)
+#define SYS_SVR4_fpathconf (SYS_SVR4 + 118)
+#define SYS_SVR4_vfork (SYS_SVR4 + 119)
+#define SYS_SVR4_fchdir (SYS_SVR4 + 120)
+#define SYS_SVR4_readv (SYS_SVR4 + 121)
+#define SYS_SVR4_writev (SYS_SVR4 + 122)
+#define SYS_SVR4_xstat (SYS_SVR4 + 123)
+#define SYS_SVR4_lxstat (SYS_SVR4 + 124)
+#define SYS_SVR4_fxstat (SYS_SVR4 + 125)
+#define SYS_SVR4_xmknod (SYS_SVR4 + 126)
+#define SYS_SVR4_clocal (SYS_SVR4 + 127)
+#define SYS_SVR4_setrlimit (SYS_SVR4 + 128)
+#define SYS_SVR4_getrlimit (SYS_SVR4 + 129)
+#define SYS_SVR4_lchown (SYS_SVR4 + 130)
+#define SYS_SVR4_memcntl (SYS_SVR4 + 131)
+#define SYS_SVR4_getpmsg (SYS_SVR4 + 132)
+#define SYS_SVR4_putpmsg (SYS_SVR4 + 133)
+#define SYS_SVR4_rename (SYS_SVR4 + 134)
+#define SYS_SVR4_nuname (SYS_SVR4 + 135)
+#define SYS_SVR4_setegid (SYS_SVR4 + 136)
+#define SYS_SVR4_sysconf (SYS_SVR4 + 137)
+#define SYS_SVR4_adjtime (SYS_SVR4 + 138)
+#define SYS_SVR4_sysinfo (SYS_SVR4 + 139)
+#define SYS_SVR4_reserved8 (SYS_SVR4 + 140)
+#define SYS_SVR4_seteuid (SYS_SVR4 + 141)
+#define SYS_SVR4_PYRAMID_statis (SYS_SVR4 + 142)
+#define SYS_SVR4_PYRAMID_tuning (SYS_SVR4 + 143)
+#define SYS_SVR4_PYRAMID_forcerr (SYS_SVR4 + 144)
+#define SYS_SVR4_PYRAMID_mpcntl (SYS_SVR4 + 145)
+#define SYS_SVR4_reserved9 (SYS_SVR4 + 146)
+#define SYS_SVR4_reserved10 (SYS_SVR4 + 147)
+#define SYS_SVR4_reserved11 (SYS_SVR4 + 148)
+#define SYS_SVR4_reserved12 (SYS_SVR4 + 149)
+#define SYS_SVR4_reserved13 (SYS_SVR4 + 150)
+#define SYS_SVR4_reserved14 (SYS_SVR4 + 151)
+#define SYS_SVR4_reserved15 (SYS_SVR4 + 152)
+#define SYS_SVR4_reserved16 (SYS_SVR4 + 153)
+#define SYS_SVR4_reserved17 (SYS_SVR4 + 154)
+#define SYS_SVR4_reserved18 (SYS_SVR4 + 155)
+#define SYS_SVR4_reserved19 (SYS_SVR4 + 156)
+#define SYS_SVR4_reserved20 (SYS_SVR4 + 157)
+#define SYS_SVR4_reserved21 (SYS_SVR4 + 158)
+#define SYS_SVR4_reserved22 (SYS_SVR4 + 159)
+#define SYS_SVR4_reserved23 (SYS_SVR4 + 160)
+#define SYS_SVR4_reserved24 (SYS_SVR4 + 161)
+#define SYS_SVR4_reserved25 (SYS_SVR4 + 162)
+#define SYS_SVR4_reserved26 (SYS_SVR4 + 163)
+#define SYS_SVR4_reserved27 (SYS_SVR4 + 164)
+#define SYS_SVR4_reserved28 (SYS_SVR4 + 165)
+#define SYS_SVR4_reserved29 (SYS_SVR4 + 166)
+#define SYS_SVR4_reserved30 (SYS_SVR4 + 167)
+#define SYS_SVR4_reserved31 (SYS_SVR4 + 168)
+#define SYS_SVR4_reserved32 (SYS_SVR4 + 169)
+#define SYS_SVR4_reserved33 (SYS_SVR4 + 170)
+#define SYS_SVR4_reserved34 (SYS_SVR4 + 171)
+#define SYS_SVR4_reserved35 (SYS_SVR4 + 172)
+#define SYS_SVR4_reserved36 (SYS_SVR4 + 173)
+#define SYS_SVR4_reserved37 (SYS_SVR4 + 174)
+#define SYS_SVR4_reserved38 (SYS_SVR4 + 175)
+#define SYS_SVR4_reserved39 (SYS_SVR4 + 176)
+#define SYS_SVR4_reserved40 (SYS_SVR4 + 177)
+#define SYS_SVR4_reserved41 (SYS_SVR4 + 178)
+#define SYS_SVR4_reserved42 (SYS_SVR4 + 179)
+#define SYS_SVR4_reserved43 (SYS_SVR4 + 180)
+#define SYS_SVR4_reserved44 (SYS_SVR4 + 181)
+#define SYS_SVR4_reserved45 (SYS_SVR4 + 182)
+#define SYS_SVR4_reserved46 (SYS_SVR4 + 183)
+#define SYS_SVR4_reserved47 (SYS_SVR4 + 184)
+#define SYS_SVR4_reserved48 (SYS_SVR4 + 185)
+#define SYS_SVR4_reserved49 (SYS_SVR4 + 186)
+#define SYS_SVR4_reserved50 (SYS_SVR4 + 187)
+#define SYS_SVR4_reserved51 (SYS_SVR4 + 188)
+#define SYS_SVR4_reserved52 (SYS_SVR4 + 189)
+#define SYS_SVR4_reserved53 (SYS_SVR4 + 190)
+#define SYS_SVR4_reserved54 (SYS_SVR4 + 191)
+#define SYS_SVR4_reserved55 (SYS_SVR4 + 192)
+#define SYS_SVR4_reserved56 (SYS_SVR4 + 193)
+#define SYS_SVR4_reserved57 (SYS_SVR4 + 194)
+#define SYS_SVR4_reserved58 (SYS_SVR4 + 195)
+#define SYS_SVR4_reserved59 (SYS_SVR4 + 196)
+#define SYS_SVR4_reserved60 (SYS_SVR4 + 197)
+#define SYS_SVR4_reserved61 (SYS_SVR4 + 198)
+#define SYS_SVR4_reserved62 (SYS_SVR4 + 199)
+#define SYS_SVR4_reserved63 (SYS_SVR4 + 200)
+#define SYS_SVR4_aread (SYS_SVR4 + 201)
+#define SYS_SVR4_awrite (SYS_SVR4 + 202)
+#define SYS_SVR4_listio (SYS_SVR4 + 203)
+#define SYS_SVR4_mips_acancel (SYS_SVR4 + 204)
+#define SYS_SVR4_astatus (SYS_SVR4 + 205)
+#define SYS_SVR4_await (SYS_SVR4 + 206)
+#define SYS_SVR4_areadv (SYS_SVR4 + 207)
+#define SYS_SVR4_awritev (SYS_SVR4 + 208)
+#define SYS_SVR4_MIPS_reserved1 (SYS_SVR4 + 209)
+#define SYS_SVR4_MIPS_reserved2 (SYS_SVR4 + 210)
+#define SYS_SVR4_MIPS_reserved3 (SYS_SVR4 + 211)
+#define SYS_SVR4_MIPS_reserved4 (SYS_SVR4 + 212)
+#define SYS_SVR4_MIPS_reserved5 (SYS_SVR4 + 213)
+#define SYS_SVR4_MIPS_reserved6 (SYS_SVR4 + 214)
+#define SYS_SVR4_MIPS_reserved7 (SYS_SVR4 + 215)
+#define SYS_SVR4_MIPS_reserved8 (SYS_SVR4 + 216)
+#define SYS_SVR4_MIPS_reserved9 (SYS_SVR4 + 217)
+#define SYS_SVR4_MIPS_reserved10 (SYS_SVR4 + 218)
+#define SYS_SVR4_MIPS_reserved11 (SYS_SVR4 + 219)
+#define SYS_SVR4_MIPS_reserved12 (SYS_SVR4 + 220)
+#define SYS_SVR4_CDC_reserved1 (SYS_SVR4 + 221)
+#define SYS_SVR4_CDC_reserved2 (SYS_SVR4 + 222)
+#define SYS_SVR4_CDC_reserved3 (SYS_SVR4 + 223)
+#define SYS_SVR4_CDC_reserved4 (SYS_SVR4 + 224)
+#define SYS_SVR4_CDC_reserved5 (SYS_SVR4 + 225)
+#define SYS_SVR4_CDC_reserved6 (SYS_SVR4 + 226)
+#define SYS_SVR4_CDC_reserved7 (SYS_SVR4 + 227)
+#define SYS_SVR4_CDC_reserved8 (SYS_SVR4 + 228)
+#define SYS_SVR4_CDC_reserved9 (SYS_SVR4 + 229)
+#define SYS_SVR4_CDC_reserved10 (SYS_SVR4 + 230)
+#define SYS_SVR4_CDC_reserved11 (SYS_SVR4 + 231)
+#define SYS_SVR4_CDC_reserved12 (SYS_SVR4 + 232)
+#define SYS_SVR4_CDC_reserved13 (SYS_SVR4 + 233)
+#define SYS_SVR4_CDC_reserved14 (SYS_SVR4 + 234)
+#define SYS_SVR4_CDC_reserved15 (SYS_SVR4 + 235)
+#define SYS_SVR4_CDC_reserved16 (SYS_SVR4 + 236)
+#define SYS_SVR4_CDC_reserved17 (SYS_SVR4 + 237)
+#define SYS_SVR4_CDC_reserved18 (SYS_SVR4 + 238)
+#define SYS_SVR4_CDC_reserved19 (SYS_SVR4 + 239)
+#define SYS_SVR4_CDC_reserved20 (SYS_SVR4 + 240)
+
+/*
+ * SYS V syscalls are in the range from 1000 to 1999
+ */
+#define SYS_SYSV 1000
+#define SYS_SYSV_syscall (SYS_SYSV + 0)
+#define SYS_SYSV_exit (SYS_SYSV + 1)
+#define SYS_SYSV_fork (SYS_SYSV + 2)
+#define SYS_SYSV_read (SYS_SYSV + 3)
+#define SYS_SYSV_write (SYS_SYSV + 4)
+#define SYS_SYSV_open (SYS_SYSV + 5)
+#define SYS_SYSV_close (SYS_SYSV + 6)
+#define SYS_SYSV_wait (SYS_SYSV + 7)
+#define SYS_SYSV_creat (SYS_SYSV + 8)
+#define SYS_SYSV_link (SYS_SYSV + 9)
+#define SYS_SYSV_unlink (SYS_SYSV + 10)
+#define SYS_SYSV_execv (SYS_SYSV + 11)
+#define SYS_SYSV_chdir (SYS_SYSV + 12)
+#define SYS_SYSV_time (SYS_SYSV + 13)
+#define SYS_SYSV_mknod (SYS_SYSV + 14)
+#define SYS_SYSV_chmod (SYS_SYSV + 15)
+#define SYS_SYSV_chown (SYS_SYSV + 16)
+#define SYS_SYSV_brk (SYS_SYSV + 17)
+#define SYS_SYSV_stat (SYS_SYSV + 18)
+#define SYS_SYSV_lseek (SYS_SYSV + 19)
+#define SYS_SYSV_getpid (SYS_SYSV + 20)
+#define SYS_SYSV_mount (SYS_SYSV + 21)
+#define SYS_SYSV_umount (SYS_SYSV + 22)
+#define SYS_SYSV_setuid (SYS_SYSV + 23)
+#define SYS_SYSV_getuid (SYS_SYSV + 24)
+#define SYS_SYSV_stime (SYS_SYSV + 25)
+#define SYS_SYSV_ptrace (SYS_SYSV + 26)
+#define SYS_SYSV_alarm (SYS_SYSV + 27)
+#define SYS_SYSV_fstat (SYS_SYSV + 28)
+#define SYS_SYSV_pause (SYS_SYSV + 29)
+#define SYS_SYSV_utime (SYS_SYSV + 30)
+#define SYS_SYSV_stty (SYS_SYSV + 31)
+#define SYS_SYSV_gtty (SYS_SYSV + 32)
+#define SYS_SYSV_access (SYS_SYSV + 33)
+#define SYS_SYSV_nice (SYS_SYSV + 34)
+#define SYS_SYSV_statfs (SYS_SYSV + 35)
+#define SYS_SYSV_sync (SYS_SYSV + 36)
+#define SYS_SYSV_kill (SYS_SYSV + 37)
+#define SYS_SYSV_fstatfs (SYS_SYSV + 38)
+#define SYS_SYSV_setpgrp (SYS_SYSV + 39)
+#define SYS_SYSV_syssgi (SYS_SYSV + 40)
+#define SYS_SYSV_dup (SYS_SYSV + 41)
+#define SYS_SYSV_pipe (SYS_SYSV + 42)
+#define SYS_SYSV_times (SYS_SYSV + 43)
+#define SYS_SYSV_profil (SYS_SYSV + 44)
+#define SYS_SYSV_plock (SYS_SYSV + 45)
+#define SYS_SYSV_setgid (SYS_SYSV + 46)
+#define SYS_SYSV_getgid (SYS_SYSV + 47)
+#define SYS_SYSV_sig (SYS_SYSV + 48)
+#define SYS_SYSV_msgsys (SYS_SYSV + 49)
+#define SYS_SYSV_sysmips (SYS_SYSV + 50)
+#define SYS_SYSV_acct (SYS_SYSV + 51)
+#define SYS_SYSV_shmsys (SYS_SYSV + 52)
+#define SYS_SYSV_semsys (SYS_SYSV + 53)
+#define SYS_SYSV_ioctl (SYS_SYSV + 54)
+#define SYS_SYSV_uadmin (SYS_SYSV + 55)
+#define SYS_SYSV_sysmp (SYS_SYSV + 56)
+#define SYS_SYSV_utssys (SYS_SYSV + 57)
+#define SYS_SYSV_USG_reserved1 (SYS_SYSV + 58)
+#define SYS_SYSV_execve (SYS_SYSV + 59)
+#define SYS_SYSV_umask (SYS_SYSV + 60)
+#define SYS_SYSV_chroot (SYS_SYSV + 61)
+#define SYS_SYSV_fcntl (SYS_SYSV + 62)
+#define SYS_SYSV_ulimit (SYS_SYSV + 63)
+#define SYS_SYSV_SAFARI4_reserved1 (SYS_SYSV + 64)
+#define SYS_SYSV_SAFARI4_reserved2 (SYS_SYSV + 65)
+#define SYS_SYSV_SAFARI4_reserved3 (SYS_SYSV + 66)
+#define SYS_SYSV_SAFARI4_reserved4 (SYS_SYSV + 67)
+#define SYS_SYSV_SAFARI4_reserved5 (SYS_SYSV + 68)
+#define SYS_SYSV_SAFARI4_reserved6 (SYS_SYSV + 69)
+#define SYS_SYSV_advfs (SYS_SYSV + 70)
+#define SYS_SYSV_unadvfs (SYS_SYSV + 71)
+#define SYS_SYSV_rmount (SYS_SYSV + 72)
+#define SYS_SYSV_rumount (SYS_SYSV + 73)
+#define SYS_SYSV_rfstart (SYS_SYSV + 74)
+#define SYS_SYSV_getrlimit64 (SYS_SYSV + 75)
+#define SYS_SYSV_setrlimit64 (SYS_SYSV + 76)
+#define SYS_SYSV_nanosleep (SYS_SYSV + 77)
+#define SYS_SYSV_lseek64 (SYS_SYSV + 78)
+#define SYS_SYSV_rmdir (SYS_SYSV + 79)
+#define SYS_SYSV_mkdir (SYS_SYSV + 80)
+#define SYS_SYSV_getdents (SYS_SYSV + 81)
+#define SYS_SYSV_sginap (SYS_SYSV + 82)
+#define SYS_SYSV_sgikopt (SYS_SYSV + 83)
+#define SYS_SYSV_sysfs (SYS_SYSV + 84)
+#define SYS_SYSV_getmsg (SYS_SYSV + 85)
+#define SYS_SYSV_putmsg (SYS_SYSV + 86)
+#define SYS_SYSV_poll (SYS_SYSV + 87)
+#define SYS_SYSV_sigreturn (SYS_SYSV + 88)
+#define SYS_SYSV_accept (SYS_SYSV + 89)
+#define SYS_SYSV_bind (SYS_SYSV + 90)
+#define SYS_SYSV_connect (SYS_SYSV + 91)
+#define SYS_SYSV_gethostid (SYS_SYSV + 92)
+#define SYS_SYSV_getpeername (SYS_SYSV + 93)
+#define SYS_SYSV_getsockname (SYS_SYSV + 94)
+#define SYS_SYSV_getsockopt (SYS_SYSV + 95)
+#define SYS_SYSV_listen (SYS_SYSV + 96)
+#define SYS_SYSV_recv (SYS_SYSV + 97)
+#define SYS_SYSV_recvfrom (SYS_SYSV + 98)
+#define SYS_SYSV_recvmsg (SYS_SYSV + 99)
+#define SYS_SYSV_select (SYS_SYSV + 100)
+#define SYS_SYSV_send (SYS_SYSV + 101)
+#define SYS_SYSV_sendmsg (SYS_SYSV + 102)
+#define SYS_SYSV_sendto (SYS_SYSV + 103)
+#define SYS_SYSV_sethostid (SYS_SYSV + 104)
+#define SYS_SYSV_setsockopt (SYS_SYSV + 105)
+#define SYS_SYSV_shutdown (SYS_SYSV + 106)
+#define SYS_SYSV_socket (SYS_SYSV + 107)
+#define SYS_SYSV_gethostname (SYS_SYSV + 108)
+#define SYS_SYSV_sethostname (SYS_SYSV + 109)
+#define SYS_SYSV_getdomainname (SYS_SYSV + 110)
+#define SYS_SYSV_setdomainname (SYS_SYSV + 111)
+#define SYS_SYSV_truncate (SYS_SYSV + 112)
+#define SYS_SYSV_ftruncate (SYS_SYSV + 113)
+#define SYS_SYSV_rename (SYS_SYSV + 114)
+#define SYS_SYSV_symlink (SYS_SYSV + 115)
+#define SYS_SYSV_readlink (SYS_SYSV + 116)
+#define SYS_SYSV_lstat (SYS_SYSV + 117)
+#define SYS_SYSV_nfsmount (SYS_SYSV + 118)
+#define SYS_SYSV_nfssvc (SYS_SYSV + 119)
+#define SYS_SYSV_getfh (SYS_SYSV + 120)
+#define SYS_SYSV_async_daemon (SYS_SYSV + 121)
+#define SYS_SYSV_exportfs (SYS_SYSV + 122)
+#define SYS_SYSV_setregid (SYS_SYSV + 123)
+#define SYS_SYSV_setreuid (SYS_SYSV + 124)
+#define SYS_SYSV_getitimer (SYS_SYSV + 125)
+#define SYS_SYSV_setitimer (SYS_SYSV + 126)
+#define SYS_SYSV_adjtime (SYS_SYSV + 127)
+#define SYS_SYSV_BSD_getime (SYS_SYSV + 128)
+#define SYS_SYSV_sproc (SYS_SYSV + 129)
+#define SYS_SYSV_prctl (SYS_SYSV + 130)
+#define SYS_SYSV_procblk (SYS_SYSV + 131)
+#define SYS_SYSV_sprocsp (SYS_SYSV + 132)
+#define SYS_SYSV_sgigsc (SYS_SYSV + 133)
+#define SYS_SYSV_mmap (SYS_SYSV + 134)
+#define SYS_SYSV_munmap (SYS_SYSV + 135)
+#define SYS_SYSV_mprotect (SYS_SYSV + 136)
+#define SYS_SYSV_msync (SYS_SYSV + 137)
+#define SYS_SYSV_madvise (SYS_SYSV + 138)
+#define SYS_SYSV_pagelock (SYS_SYSV + 139)
+#define SYS_SYSV_getpagesize (SYS_SYSV + 140)
+#define SYS_SYSV_quotactl (SYS_SYSV + 141)
+#define SYS_SYSV_libdetach (SYS_SYSV + 142)
+#define SYS_SYSV_BSDgetpgrp (SYS_SYSV + 143)
+#define SYS_SYSV_BSDsetpgrp (SYS_SYSV + 144)
+#define SYS_SYSV_vhangup (SYS_SYSV + 145)
+#define SYS_SYSV_fsync (SYS_SYSV + 146)
+#define SYS_SYSV_fchdir (SYS_SYSV + 147)
+#define SYS_SYSV_getrlimit (SYS_SYSV + 148)
+#define SYS_SYSV_setrlimit (SYS_SYSV + 149)
+#define SYS_SYSV_cacheflush (SYS_SYSV + 150)
+#define SYS_SYSV_cachectl (SYS_SYSV + 151)
+#define SYS_SYSV_fchown (SYS_SYSV + 152)
+#define SYS_SYSV_fchmod (SYS_SYSV + 153)
+#define SYS_SYSV_wait3 (SYS_SYSV + 154)
+#define SYS_SYSV_socketpair (SYS_SYSV + 155)
+#define SYS_SYSV_sysinfo (SYS_SYSV + 156)
+#define SYS_SYSV_nuname (SYS_SYSV + 157)
+#define SYS_SYSV_xstat (SYS_SYSV + 158)
+#define SYS_SYSV_lxstat (SYS_SYSV + 159)
+#define SYS_SYSV_fxstat (SYS_SYSV + 160)
+#define SYS_SYSV_xmknod (SYS_SYSV + 161)
+#define SYS_SYSV_ksigaction (SYS_SYSV + 162)
+#define SYS_SYSV_sigpending (SYS_SYSV + 163)
+#define SYS_SYSV_sigprocmask (SYS_SYSV + 164)
+#define SYS_SYSV_sigsuspend (SYS_SYSV + 165)
+#define SYS_SYSV_sigpoll (SYS_SYSV + 166)
+#define SYS_SYSV_swapctl (SYS_SYSV + 167)
+#define SYS_SYSV_getcontext (SYS_SYSV + 168)
+#define SYS_SYSV_setcontext (SYS_SYSV + 169)
+#define SYS_SYSV_waitsys (SYS_SYSV + 170)
+#define SYS_SYSV_sigstack (SYS_SYSV + 171)
+#define SYS_SYSV_sigaltstack (SYS_SYSV + 172)
+#define SYS_SYSV_sigsendset (SYS_SYSV + 173)
+#define SYS_SYSV_statvfs (SYS_SYSV + 174)
+#define SYS_SYSV_fstatvfs (SYS_SYSV + 175)
+#define SYS_SYSV_getpmsg (SYS_SYSV + 176)
+#define SYS_SYSV_putpmsg (SYS_SYSV + 177)
+#define SYS_SYSV_lchown (SYS_SYSV + 178)
+#define SYS_SYSV_priocntl (SYS_SYSV + 179)
+#define SYS_SYSV_ksigqueue (SYS_SYSV + 180)
+#define SYS_SYSV_readv (SYS_SYSV + 181)
+#define SYS_SYSV_writev (SYS_SYSV + 182)
+#define SYS_SYSV_truncate64 (SYS_SYSV + 183)
+#define SYS_SYSV_ftruncate64 (SYS_SYSV + 184)
+#define SYS_SYSV_mmap64 (SYS_SYSV + 185)
+#define SYS_SYSV_dmi (SYS_SYSV + 186)
+#define SYS_SYSV_pread (SYS_SYSV + 187)
+#define SYS_SYSV_pwrite (SYS_SYSV + 188)
+
+/*
+ * BSD 4.3 syscalls are in the range from 2000 to 2999
+ */
+#define SYS_BSD43 2000
+#define SYS_BSD43_syscall (SYS_BSD43 + 0)
+#define SYS_BSD43_exit (SYS_BSD43 + 1)
+#define SYS_BSD43_fork (SYS_BSD43 + 2)
+#define SYS_BSD43_read (SYS_BSD43 + 3)
+#define SYS_BSD43_write (SYS_BSD43 + 4)
+#define SYS_BSD43_open (SYS_BSD43 + 5)
+#define SYS_BSD43_close (SYS_BSD43 + 6)
+#define SYS_BSD43_wait (SYS_BSD43 + 7)
+#define SYS_BSD43_creat (SYS_BSD43 + 8)
+#define SYS_BSD43_link (SYS_BSD43 + 9)
+#define SYS_BSD43_unlink (SYS_BSD43 + 10)
+#define SYS_BSD43_exec (SYS_BSD43 + 11)
+#define SYS_BSD43_chdir (SYS_BSD43 + 12)
+#define SYS_BSD43_time (SYS_BSD43 + 13)
+#define SYS_BSD43_mknod (SYS_BSD43 + 14)
+#define SYS_BSD43_chmod (SYS_BSD43 + 15)
+#define SYS_BSD43_chown (SYS_BSD43 + 16)
+#define SYS_BSD43_sbreak (SYS_BSD43 + 17)
+#define SYS_BSD43_oldstat (SYS_BSD43 + 18)
+#define SYS_BSD43_lseek (SYS_BSD43 + 19)
+#define SYS_BSD43_getpid (SYS_BSD43 + 20)
+#define SYS_BSD43_oldmount (SYS_BSD43 + 21)
+#define SYS_BSD43_umount (SYS_BSD43 + 22)
+#define SYS_BSD43_setuid (SYS_BSD43 + 23)
+#define SYS_BSD43_getuid (SYS_BSD43 + 24)
+#define SYS_BSD43_stime (SYS_BSD43 + 25)
+#define SYS_BSD43_ptrace (SYS_BSD43 + 26)
+#define SYS_BSD43_alarm (SYS_BSD43 + 27)
+#define SYS_BSD43_oldfstat (SYS_BSD43 + 28)
+#define SYS_BSD43_pause (SYS_BSD43 + 29)
+#define SYS_BSD43_utime (SYS_BSD43 + 30)
+#define SYS_BSD43_stty (SYS_BSD43 + 31)
+#define SYS_BSD43_gtty (SYS_BSD43 + 32)
+#define SYS_BSD43_access (SYS_BSD43 + 33)
+#define SYS_BSD43_nice (SYS_BSD43 + 34)
+#define SYS_BSD43_ftime (SYS_BSD43 + 35)
+#define SYS_BSD43_sync (SYS_BSD43 + 36)
+#define SYS_BSD43_kill (SYS_BSD43 + 37)
+#define SYS_BSD43_stat (SYS_BSD43 + 38)
+#define SYS_BSD43_oldsetpgrp (SYS_BSD43 + 39)
+#define SYS_BSD43_lstat (SYS_BSD43 + 40)
+#define SYS_BSD43_dup (SYS_BSD43 + 41)
+#define SYS_BSD43_pipe (SYS_BSD43 + 42)
+#define SYS_BSD43_times (SYS_BSD43 + 43)
+#define SYS_BSD43_profil (SYS_BSD43 + 44)
+#define SYS_BSD43_msgsys (SYS_BSD43 + 45)
+#define SYS_BSD43_setgid (SYS_BSD43 + 46)
+#define SYS_BSD43_getgid (SYS_BSD43 + 47)
+#define SYS_BSD43_ssig (SYS_BSD43 + 48)
+#define SYS_BSD43_reserved1 (SYS_BSD43 + 49)
+#define SYS_BSD43_reserved2 (SYS_BSD43 + 50)
+#define SYS_BSD43_sysacct (SYS_BSD43 + 51)
+#define SYS_BSD43_phys (SYS_BSD43 + 52)
+#define SYS_BSD43_lock (SYS_BSD43 + 53)
+#define SYS_BSD43_ioctl (SYS_BSD43 + 54)
+#define SYS_BSD43_reboot (SYS_BSD43 + 55)
+#define SYS_BSD43_mpxchan (SYS_BSD43 + 56)
+#define SYS_BSD43_symlink (SYS_BSD43 + 57)
+#define SYS_BSD43_readlink (SYS_BSD43 + 58)
+#define SYS_BSD43_execve (SYS_BSD43 + 59)
+#define SYS_BSD43_umask (SYS_BSD43 + 60)
+#define SYS_BSD43_chroot (SYS_BSD43 + 61)
+#define SYS_BSD43_fstat (SYS_BSD43 + 62)
+#define SYS_BSD43_reserved3 (SYS_BSD43 + 63)
+#define SYS_BSD43_getpagesize (SYS_BSD43 + 64)
+#define SYS_BSD43_mremap (SYS_BSD43 + 65)
+#define SYS_BSD43_vfork (SYS_BSD43 + 66)
+#define SYS_BSD43_vread (SYS_BSD43 + 67)
+#define SYS_BSD43_vwrite (SYS_BSD43 + 68)
+#define SYS_BSD43_sbrk (SYS_BSD43 + 69)
+#define SYS_BSD43_sstk (SYS_BSD43 + 70)
+#define SYS_BSD43_mmap (SYS_BSD43 + 71)
+#define SYS_BSD43_vadvise (SYS_BSD43 + 72)
+#define SYS_BSD43_munmap (SYS_BSD43 + 73)
+#define SYS_BSD43_mprotect (SYS_BSD43 + 74)
+#define SYS_BSD43_madvise (SYS_BSD43 + 75)
+#define SYS_BSD43_vhangup (SYS_BSD43 + 76)
+#define SYS_BSD43_vlimit (SYS_BSD43 + 77)
+#define SYS_BSD43_mincore (SYS_BSD43 + 78)
+#define SYS_BSD43_getgroups (SYS_BSD43 + 79)
+#define SYS_BSD43_setgroups (SYS_BSD43 + 80)
+#define SYS_BSD43_getpgrp (SYS_BSD43 + 81)
+#define SYS_BSD43_setpgrp (SYS_BSD43 + 82)
+#define SYS_BSD43_setitimer (SYS_BSD43 + 83)
+#define SYS_BSD43_wait3 (SYS_BSD43 + 84)
+#define SYS_BSD43_swapon (SYS_BSD43 + 85)
+#define SYS_BSD43_getitimer (SYS_BSD43 + 86)
+#define SYS_BSD43_gethostname (SYS_BSD43 + 87)
+#define SYS_BSD43_sethostname (SYS_BSD43 + 88)
+#define SYS_BSD43_getdtablesize (SYS_BSD43 + 89)
+#define SYS_BSD43_dup2 (SYS_BSD43 + 90)
+#define SYS_BSD43_getdopt (SYS_BSD43 + 91)
+#define SYS_BSD43_fcntl (SYS_BSD43 + 92)
+#define SYS_BSD43_select (SYS_BSD43 + 93)
+#define SYS_BSD43_setdopt (SYS_BSD43 + 94)
+#define SYS_BSD43_fsync (SYS_BSD43 + 95)
+#define SYS_BSD43_setpriority (SYS_BSD43 + 96)
+#define SYS_BSD43_socket (SYS_BSD43 + 97)
+#define SYS_BSD43_connect (SYS_BSD43 + 98)
+#define SYS_BSD43_oldaccept (SYS_BSD43 + 99)
+#define SYS_BSD43_getpriority (SYS_BSD43 + 100)
+#define SYS_BSD43_send (SYS_BSD43 + 101)
+#define SYS_BSD43_recv (SYS_BSD43 + 102)
+#define SYS_BSD43_sigreturn (SYS_BSD43 + 103)
+#define SYS_BSD43_bind (SYS_BSD43 + 104)
+#define SYS_BSD43_setsockopt (SYS_BSD43 + 105)
+#define SYS_BSD43_listen (SYS_BSD43 + 106)
+#define SYS_BSD43_vtimes (SYS_BSD43 + 107)
+#define SYS_BSD43_sigvec (SYS_BSD43 + 108)
+#define SYS_BSD43_sigblock (SYS_BSD43 + 109)
+#define SYS_BSD43_sigsetmask (SYS_BSD43 + 110)
+#define SYS_BSD43_sigpause (SYS_BSD43 + 111)
+#define SYS_BSD43_sigstack (SYS_BSD43 + 112)
+#define SYS_BSD43_oldrecvmsg (SYS_BSD43 + 113)
+#define SYS_BSD43_oldsendmsg (SYS_BSD43 + 114)
+#define SYS_BSD43_vtrace (SYS_BSD43 + 115)
+#define SYS_BSD43_gettimeofday (SYS_BSD43 + 116)
+#define SYS_BSD43_getrusage (SYS_BSD43 + 117)
+#define SYS_BSD43_getsockopt (SYS_BSD43 + 118)
+#define SYS_BSD43_reserved4 (SYS_BSD43 + 119)
+#define SYS_BSD43_readv (SYS_BSD43 + 120)
+#define SYS_BSD43_writev (SYS_BSD43 + 121)
+#define SYS_BSD43_settimeofday (SYS_BSD43 + 122)
+#define SYS_BSD43_fchown (SYS_BSD43 + 123)
+#define SYS_BSD43_fchmod (SYS_BSD43 + 124)
+#define SYS_BSD43_oldrecvfrom (SYS_BSD43 + 125)
+#define SYS_BSD43_setreuid (SYS_BSD43 + 126)
+#define SYS_BSD43_setregid (SYS_BSD43 + 127)
+#define SYS_BSD43_rename (SYS_BSD43 + 128)
+#define SYS_BSD43_truncate (SYS_BSD43 + 129)
+#define SYS_BSD43_ftruncate (SYS_BSD43 + 130)
+#define SYS_BSD43_flock (SYS_BSD43 + 131)
+#define SYS_BSD43_semsys (SYS_BSD43 + 132)
+#define SYS_BSD43_sendto (SYS_BSD43 + 133)
+#define SYS_BSD43_shutdown (SYS_BSD43 + 134)
+#define SYS_BSD43_socketpair (SYS_BSD43 + 135)
+#define SYS_BSD43_mkdir (SYS_BSD43 + 136)
+#define SYS_BSD43_rmdir (SYS_BSD43 + 137)
+#define SYS_BSD43_utimes (SYS_BSD43 + 138)
+#define SYS_BSD43_sigcleanup (SYS_BSD43 + 139)
+#define SYS_BSD43_adjtime (SYS_BSD43 + 140)
+#define SYS_BSD43_oldgetpeername (SYS_BSD43 + 141)
+#define SYS_BSD43_gethostid (SYS_BSD43 + 142)
+#define SYS_BSD43_sethostid (SYS_BSD43 + 143)
+#define SYS_BSD43_getrlimit (SYS_BSD43 + 144)
+#define SYS_BSD43_setrlimit (SYS_BSD43 + 145)
+#define SYS_BSD43_killpg (SYS_BSD43 + 146)
+#define SYS_BSD43_shmsys (SYS_BSD43 + 147)
+#define SYS_BSD43_quota (SYS_BSD43 + 148)
+#define SYS_BSD43_qquota (SYS_BSD43 + 149)
+#define SYS_BSD43_oldgetsockname (SYS_BSD43 + 150)
+#define SYS_BSD43_sysmips (SYS_BSD43 + 151)
+#define SYS_BSD43_cacheflush (SYS_BSD43 + 152)
+#define SYS_BSD43_cachectl (SYS_BSD43 + 153)
+#define SYS_BSD43_debug (SYS_BSD43 + 154)
+#define SYS_BSD43_reserved5 (SYS_BSD43 + 155)
+#define SYS_BSD43_reserved6 (SYS_BSD43 + 156)
+#define SYS_BSD43_nfs_mount (SYS_BSD43 + 157)
+#define SYS_BSD43_nfs_svc (SYS_BSD43 + 158)
+#define SYS_BSD43_getdirentries (SYS_BSD43 + 159)
+#define SYS_BSD43_statfs (SYS_BSD43 + 160)
+#define SYS_BSD43_fstatfs (SYS_BSD43 + 161)
+#define SYS_BSD43_unmount (SYS_BSD43 + 162)
+#define SYS_BSD43_async_daemon (SYS_BSD43 + 163)
+#define SYS_BSD43_nfs_getfh (SYS_BSD43 + 164)
+#define SYS_BSD43_getdomainname (SYS_BSD43 + 165)
+#define SYS_BSD43_setdomainname (SYS_BSD43 + 166)
+#define SYS_BSD43_pcfs_mount (SYS_BSD43 + 167)
+#define SYS_BSD43_quotactl (SYS_BSD43 + 168)
+#define SYS_BSD43_oldexportfs (SYS_BSD43 + 169)
+#define SYS_BSD43_smount (SYS_BSD43 + 170)
+#define SYS_BSD43_mipshwconf (SYS_BSD43 + 171)
+#define SYS_BSD43_exportfs (SYS_BSD43 + 172)
+#define SYS_BSD43_nfsfh_open (SYS_BSD43 + 173)
+#define SYS_BSD43_libattach (SYS_BSD43 + 174)
+#define SYS_BSD43_libdetach (SYS_BSD43 + 175)
+#define SYS_BSD43_accept (SYS_BSD43 + 176)
+#define SYS_BSD43_reserved7 (SYS_BSD43 + 177)
+#define SYS_BSD43_reserved8 (SYS_BSD43 + 178)
+#define SYS_BSD43_recvmsg (SYS_BSD43 + 179)
+#define SYS_BSD43_recvfrom (SYS_BSD43 + 180)
+#define SYS_BSD43_sendmsg (SYS_BSD43 + 181)
+#define SYS_BSD43_getpeername (SYS_BSD43 + 182)
+#define SYS_BSD43_getsockname (SYS_BSD43 + 183)
+#define SYS_BSD43_aread (SYS_BSD43 + 184)
+#define SYS_BSD43_awrite (SYS_BSD43 + 185)
+#define SYS_BSD43_listio (SYS_BSD43 + 186)
+#define SYS_BSD43_acancel (SYS_BSD43 + 187)
+#define SYS_BSD43_astatus (SYS_BSD43 + 188)
+#define SYS_BSD43_await (SYS_BSD43 + 189)
+#define SYS_BSD43_areadv (SYS_BSD43 + 190)
+#define SYS_BSD43_awritev (SYS_BSD43 + 191)
+
+/*
+ * POSIX syscalls are in the range from 3000 to 3999
+ */
+#define SYS_POSIX 3000
+#define SYS_POSIX_syscall (SYS_POSIX + 0)
+#define SYS_POSIX_exit (SYS_POSIX + 1)
+#define SYS_POSIX_fork (SYS_POSIX + 2)
+#define SYS_POSIX_read (SYS_POSIX + 3)
+#define SYS_POSIX_write (SYS_POSIX + 4)
+#define SYS_POSIX_open (SYS_POSIX + 5)
+#define SYS_POSIX_close (SYS_POSIX + 6)
+#define SYS_POSIX_wait (SYS_POSIX + 7)
+#define SYS_POSIX_creat (SYS_POSIX + 8)
+#define SYS_POSIX_link (SYS_POSIX + 9)
+#define SYS_POSIX_unlink (SYS_POSIX + 10)
+#define SYS_POSIX_exec (SYS_POSIX + 11)
+#define SYS_POSIX_chdir (SYS_POSIX + 12)
+#define SYS_POSIX_gtime (SYS_POSIX + 13)
+#define SYS_POSIX_mknod (SYS_POSIX + 14)
+#define SYS_POSIX_chmod (SYS_POSIX + 15)
+#define SYS_POSIX_chown (SYS_POSIX + 16)
+#define SYS_POSIX_sbreak (SYS_POSIX + 17)
+#define SYS_POSIX_stat (SYS_POSIX + 18)
+#define SYS_POSIX_lseek (SYS_POSIX + 19)
+#define SYS_POSIX_getpid (SYS_POSIX + 20)
+#define SYS_POSIX_mount (SYS_POSIX + 21)
+#define SYS_POSIX_umount (SYS_POSIX + 22)
+#define SYS_POSIX_setuid (SYS_POSIX + 23)
+#define SYS_POSIX_getuid (SYS_POSIX + 24)
+#define SYS_POSIX_stime (SYS_POSIX + 25)
+#define SYS_POSIX_ptrace (SYS_POSIX + 26)
+#define SYS_POSIX_alarm (SYS_POSIX + 27)
+#define SYS_POSIX_fstat (SYS_POSIX + 28)
+#define SYS_POSIX_pause (SYS_POSIX + 29)
+#define SYS_POSIX_utime (SYS_POSIX + 30)
+#define SYS_POSIX_stty (SYS_POSIX + 31)
+#define SYS_POSIX_gtty (SYS_POSIX + 32)
+#define SYS_POSIX_access (SYS_POSIX + 33)
+#define SYS_POSIX_nice (SYS_POSIX + 34)
+#define SYS_POSIX_statfs (SYS_POSIX + 35)
+#define SYS_POSIX_sync (SYS_POSIX + 36)
+#define SYS_POSIX_kill (SYS_POSIX + 37)
+#define SYS_POSIX_fstatfs (SYS_POSIX + 38)
+#define SYS_POSIX_getpgrp (SYS_POSIX + 39)
+#define SYS_POSIX_syssgi (SYS_POSIX + 40)
+#define SYS_POSIX_dup (SYS_POSIX + 41)
+#define SYS_POSIX_pipe (SYS_POSIX + 42)
+#define SYS_POSIX_times (SYS_POSIX + 43)
+#define SYS_POSIX_profil (SYS_POSIX + 44)
+#define SYS_POSIX_lock (SYS_POSIX + 45)
+#define SYS_POSIX_setgid (SYS_POSIX + 46)
+#define SYS_POSIX_getgid (SYS_POSIX + 47)
+#define SYS_POSIX_sig (SYS_POSIX + 48)
+#define SYS_POSIX_msgsys (SYS_POSIX + 49)
+#define SYS_POSIX_sysmips (SYS_POSIX + 50)
+#define SYS_POSIX_sysacct (SYS_POSIX + 51)
+#define SYS_POSIX_shmsys (SYS_POSIX + 52)
+#define SYS_POSIX_semsys (SYS_POSIX + 53)
+#define SYS_POSIX_ioctl (SYS_POSIX + 54)
+#define SYS_POSIX_uadmin (SYS_POSIX + 55)
+#define SYS_POSIX_exch (SYS_POSIX + 56)
+#define SYS_POSIX_utssys (SYS_POSIX + 57)
+#define SYS_POSIX_USG_reserved1 (SYS_POSIX + 58)
+#define SYS_POSIX_exece (SYS_POSIX + 59)
+#define SYS_POSIX_umask (SYS_POSIX + 60)
+#define SYS_POSIX_chroot (SYS_POSIX + 61)
+#define SYS_POSIX_fcntl (SYS_POSIX + 62)
+#define SYS_POSIX_ulimit (SYS_POSIX + 63)
+#define SYS_POSIX_SAFARI4_reserved1 (SYS_POSIX + 64)
+#define SYS_POSIX_SAFARI4_reserved2 (SYS_POSIX + 65)
+#define SYS_POSIX_SAFARI4_reserved3 (SYS_POSIX + 66)
+#define SYS_POSIX_SAFARI4_reserved4 (SYS_POSIX + 67)
+#define SYS_POSIX_SAFARI4_reserved5 (SYS_POSIX + 68)
+#define SYS_POSIX_SAFARI4_reserved6 (SYS_POSIX + 69)
+#define SYS_POSIX_advfs (SYS_POSIX + 70)
+#define SYS_POSIX_unadvfs (SYS_POSIX + 71)
+#define SYS_POSIX_rmount (SYS_POSIX + 72)
+#define SYS_POSIX_rumount (SYS_POSIX + 73)
+#define SYS_POSIX_rfstart (SYS_POSIX + 74)
+#define SYS_POSIX_reserved1 (SYS_POSIX + 75)
+#define SYS_POSIX_rdebug (SYS_POSIX + 76)
+#define SYS_POSIX_rfstop (SYS_POSIX + 77)
+#define SYS_POSIX_rfsys (SYS_POSIX + 78)
+#define SYS_POSIX_rmdir (SYS_POSIX + 79)
+#define SYS_POSIX_mkdir (SYS_POSIX + 80)
+#define SYS_POSIX_getdents (SYS_POSIX + 81)
+#define SYS_POSIX_sginap (SYS_POSIX + 82)
+#define SYS_POSIX_sgikopt (SYS_POSIX + 83)
+#define SYS_POSIX_sysfs (SYS_POSIX + 84)
+#define SYS_POSIX_getmsg (SYS_POSIX + 85)
+#define SYS_POSIX_putmsg (SYS_POSIX + 86)
+#define SYS_POSIX_poll (SYS_POSIX + 87)
+#define SYS_POSIX_sigreturn (SYS_POSIX + 88)
+#define SYS_POSIX_accept (SYS_POSIX + 89)
+#define SYS_POSIX_bind (SYS_POSIX + 90)
+#define SYS_POSIX_connect (SYS_POSIX + 91)
+#define SYS_POSIX_gethostid (SYS_POSIX + 92)
+#define SYS_POSIX_getpeername (SYS_POSIX + 93)
+#define SYS_POSIX_getsockname (SYS_POSIX + 94)
+#define SYS_POSIX_getsockopt (SYS_POSIX + 95)
+#define SYS_POSIX_listen (SYS_POSIX + 96)
+#define SYS_POSIX_recv (SYS_POSIX + 97)
+#define SYS_POSIX_recvfrom (SYS_POSIX + 98)
+#define SYS_POSIX_recvmsg (SYS_POSIX + 99)
+#define SYS_POSIX_select (SYS_POSIX + 100)
+#define SYS_POSIX_send (SYS_POSIX + 101)
+#define SYS_POSIX_sendmsg (SYS_POSIX + 102)
+#define SYS_POSIX_sendto (SYS_POSIX + 103)
+#define SYS_POSIX_sethostid (SYS_POSIX + 104)
+#define SYS_POSIX_setsockopt (SYS_POSIX + 105)
+#define SYS_POSIX_shutdown (SYS_POSIX + 106)
+#define SYS_POSIX_socket (SYS_POSIX + 107)
+#define SYS_POSIX_gethostname (SYS_POSIX + 108)
+#define SYS_POSIX_sethostname (SYS_POSIX + 109)
+#define SYS_POSIX_getdomainname (SYS_POSIX + 110)
+#define SYS_POSIX_setdomainname (SYS_POSIX + 111)
+#define SYS_POSIX_truncate (SYS_POSIX + 112)
+#define SYS_POSIX_ftruncate (SYS_POSIX + 113)
+#define SYS_POSIX_rename (SYS_POSIX + 114)
+#define SYS_POSIX_symlink (SYS_POSIX + 115)
+#define SYS_POSIX_readlink (SYS_POSIX + 116)
+#define SYS_POSIX_lstat (SYS_POSIX + 117)
+#define SYS_POSIX_nfs_mount (SYS_POSIX + 118)
+#define SYS_POSIX_nfs_svc (SYS_POSIX + 119)
+#define SYS_POSIX_nfs_getfh (SYS_POSIX + 120)
+#define SYS_POSIX_async_daemon (SYS_POSIX + 121)
+#define SYS_POSIX_exportfs (SYS_POSIX + 122)
+#define SYS_POSIX_SGI_setregid (SYS_POSIX + 123)
+#define SYS_POSIX_SGI_setreuid (SYS_POSIX + 124)
+#define SYS_POSIX_getitimer (SYS_POSIX + 125)
+#define SYS_POSIX_setitimer (SYS_POSIX + 126)
+#define SYS_POSIX_adjtime (SYS_POSIX + 127)
+#define SYS_POSIX_SGI_bsdgettime (SYS_POSIX + 128)
+#define SYS_POSIX_SGI_sproc (SYS_POSIX + 129)
+#define SYS_POSIX_SGI_prctl (SYS_POSIX + 130)
+#define SYS_POSIX_SGI_blkproc (SYS_POSIX + 131)
+#define SYS_POSIX_SGI_reserved1 (SYS_POSIX + 132)
+#define SYS_POSIX_SGI_sgigsc (SYS_POSIX + 133)
+#define SYS_POSIX_SGI_mmap (SYS_POSIX + 134)
+#define SYS_POSIX_SGI_munmap (SYS_POSIX + 135)
+#define SYS_POSIX_SGI_mprotect (SYS_POSIX + 136)
+#define SYS_POSIX_SGI_msync (SYS_POSIX + 137)
+#define SYS_POSIX_SGI_madvise (SYS_POSIX + 138)
+#define SYS_POSIX_SGI_mpin (SYS_POSIX + 139)
+#define SYS_POSIX_SGI_getpagesize (SYS_POSIX + 140)
+#define SYS_POSIX_SGI_libattach (SYS_POSIX + 141)
+#define SYS_POSIX_SGI_libdetach (SYS_POSIX + 142)
+#define SYS_POSIX_SGI_getpgrp (SYS_POSIX + 143)
+#define SYS_POSIX_SGI_setpgrp (SYS_POSIX + 144)
+#define SYS_POSIX_SGI_reserved2 (SYS_POSIX + 145)
+#define SYS_POSIX_SGI_reserved3 (SYS_POSIX + 146)
+#define SYS_POSIX_SGI_reserved4 (SYS_POSIX + 147)
+#define SYS_POSIX_SGI_reserved5 (SYS_POSIX + 148)
+#define SYS_POSIX_SGI_reserved6 (SYS_POSIX + 149)
+#define SYS_POSIX_cacheflush (SYS_POSIX + 150)
+#define SYS_POSIX_cachectl (SYS_POSIX + 151)
+#define SYS_POSIX_fchown (SYS_POSIX + 152)
+#define SYS_POSIX_fchmod (SYS_POSIX + 153)
+#define SYS_POSIX_wait3 (SYS_POSIX + 154)
+#define SYS_POSIX_mmap (SYS_POSIX + 155)
+#define SYS_POSIX_munmap (SYS_POSIX + 156)
+#define SYS_POSIX_madvise (SYS_POSIX + 157)
+#define SYS_POSIX_BSD_getpagesize (SYS_POSIX + 158)
+#define SYS_POSIX_setreuid (SYS_POSIX + 159)
+#define SYS_POSIX_setregid (SYS_POSIX + 160)
+#define SYS_POSIX_setpgid (SYS_POSIX + 161)
+#define SYS_POSIX_getgroups (SYS_POSIX + 162)
+#define SYS_POSIX_setgroups (SYS_POSIX + 163)
+#define SYS_POSIX_gettimeofday (SYS_POSIX + 164)
+#define SYS_POSIX_getrusage (SYS_POSIX + 165)
+#define SYS_POSIX_getrlimit (SYS_POSIX + 166)
+#define SYS_POSIX_setrlimit (SYS_POSIX + 167)
+#define SYS_POSIX_waitpid (SYS_POSIX + 168)
+#define SYS_POSIX_dup2 (SYS_POSIX + 169)
+#define SYS_POSIX_reserved2 (SYS_POSIX + 170)
+#define SYS_POSIX_reserved3 (SYS_POSIX + 171)
+#define SYS_POSIX_reserved4 (SYS_POSIX + 172)
+#define SYS_POSIX_reserved5 (SYS_POSIX + 173)
+#define SYS_POSIX_reserved6 (SYS_POSIX + 174)
+#define SYS_POSIX_reserved7 (SYS_POSIX + 175)
+#define SYS_POSIX_reserved8 (SYS_POSIX + 176)
+#define SYS_POSIX_reserved9 (SYS_POSIX + 177)
+#define SYS_POSIX_reserved10 (SYS_POSIX + 178)
+#define SYS_POSIX_reserved11 (SYS_POSIX + 179)
+#define SYS_POSIX_reserved12 (SYS_POSIX + 180)
+#define SYS_POSIX_reserved13 (SYS_POSIX + 181)
+#define SYS_POSIX_reserved14 (SYS_POSIX + 182)
+#define SYS_POSIX_reserved15 (SYS_POSIX + 183)
+#define SYS_POSIX_reserved16 (SYS_POSIX + 184)
+#define SYS_POSIX_reserved17 (SYS_POSIX + 185)
+#define SYS_POSIX_reserved18 (SYS_POSIX + 186)
+#define SYS_POSIX_reserved19 (SYS_POSIX + 187)
+#define SYS_POSIX_reserved20 (SYS_POSIX + 188)
+#define SYS_POSIX_reserved21 (SYS_POSIX + 189)
+#define SYS_POSIX_reserved22 (SYS_POSIX + 190)
+#define SYS_POSIX_reserved23 (SYS_POSIX + 191)
+#define SYS_POSIX_reserved24 (SYS_POSIX + 192)
+#define SYS_POSIX_reserved25 (SYS_POSIX + 193)
+#define SYS_POSIX_reserved26 (SYS_POSIX + 194)
+#define SYS_POSIX_reserved27 (SYS_POSIX + 195)
+#define SYS_POSIX_reserved28 (SYS_POSIX + 196)
+#define SYS_POSIX_reserved29 (SYS_POSIX + 197)
+#define SYS_POSIX_reserved30 (SYS_POSIX + 198)
+#define SYS_POSIX_reserved31 (SYS_POSIX + 199)
+#define SYS_POSIX_reserved32 (SYS_POSIX + 200)
+#define SYS_POSIX_reserved33 (SYS_POSIX + 201)
+#define SYS_POSIX_reserved34 (SYS_POSIX + 202)
+#define SYS_POSIX_reserved35 (SYS_POSIX + 203)
+#define SYS_POSIX_reserved36 (SYS_POSIX + 204)
+#define SYS_POSIX_reserved37 (SYS_POSIX + 205)
+#define SYS_POSIX_reserved38 (SYS_POSIX + 206)
+#define SYS_POSIX_reserved39 (SYS_POSIX + 207)
+#define SYS_POSIX_reserved40 (SYS_POSIX + 208)
+#define SYS_POSIX_reserved41 (SYS_POSIX + 209)
+#define SYS_POSIX_reserved42 (SYS_POSIX + 210)
+#define SYS_POSIX_reserved43 (SYS_POSIX + 211)
+#define SYS_POSIX_reserved44 (SYS_POSIX + 212)
+#define SYS_POSIX_reserved45 (SYS_POSIX + 213)
+#define SYS_POSIX_reserved46 (SYS_POSIX + 214)
+#define SYS_POSIX_reserved47 (SYS_POSIX + 215)
+#define SYS_POSIX_reserved48 (SYS_POSIX + 216)
+#define SYS_POSIX_reserved49 (SYS_POSIX + 217)
+#define SYS_POSIX_reserved50 (SYS_POSIX + 218)
+#define SYS_POSIX_reserved51 (SYS_POSIX + 219)
+#define SYS_POSIX_reserved52 (SYS_POSIX + 220)
+#define SYS_POSIX_reserved53 (SYS_POSIX + 221)
+#define SYS_POSIX_reserved54 (SYS_POSIX + 222)
+#define SYS_POSIX_reserved55 (SYS_POSIX + 223)
+#define SYS_POSIX_reserved56 (SYS_POSIX + 224)
+#define SYS_POSIX_reserved57 (SYS_POSIX + 225)
+#define SYS_POSIX_reserved58 (SYS_POSIX + 226)
+#define SYS_POSIX_reserved59 (SYS_POSIX + 227)
+#define SYS_POSIX_reserved60 (SYS_POSIX + 228)
+#define SYS_POSIX_reserved61 (SYS_POSIX + 229)
+#define SYS_POSIX_reserved62 (SYS_POSIX + 230)
+#define SYS_POSIX_reserved63 (SYS_POSIX + 231)
+#define SYS_POSIX_reserved64 (SYS_POSIX + 232)
+#define SYS_POSIX_reserved65 (SYS_POSIX + 233)
+#define SYS_POSIX_reserved66 (SYS_POSIX + 234)
+#define SYS_POSIX_reserved67 (SYS_POSIX + 235)
+#define SYS_POSIX_reserved68 (SYS_POSIX + 236)
+#define SYS_POSIX_reserved69 (SYS_POSIX + 237)
+#define SYS_POSIX_reserved70 (SYS_POSIX + 238)
+#define SYS_POSIX_reserved71 (SYS_POSIX + 239)
+#define SYS_POSIX_reserved72 (SYS_POSIX + 240)
+#define SYS_POSIX_reserved73 (SYS_POSIX + 241)
+#define SYS_POSIX_reserved74 (SYS_POSIX + 242)
+#define SYS_POSIX_reserved75 (SYS_POSIX + 243)
+#define SYS_POSIX_reserved76 (SYS_POSIX + 244)
+#define SYS_POSIX_reserved77 (SYS_POSIX + 245)
+#define SYS_POSIX_reserved78 (SYS_POSIX + 246)
+#define SYS_POSIX_reserved79 (SYS_POSIX + 247)
+#define SYS_POSIX_reserved80 (SYS_POSIX + 248)
+#define SYS_POSIX_reserved81 (SYS_POSIX + 249)
+#define SYS_POSIX_reserved82 (SYS_POSIX + 250)
+#define SYS_POSIX_reserved83 (SYS_POSIX + 251)
+#define SYS_POSIX_reserved84 (SYS_POSIX + 252)
+#define SYS_POSIX_reserved85 (SYS_POSIX + 253)
+#define SYS_POSIX_reserved86 (SYS_POSIX + 254)
+#define SYS_POSIX_reserved87 (SYS_POSIX + 255)
+#define SYS_POSIX_reserved88 (SYS_POSIX + 256)
+#define SYS_POSIX_reserved89 (SYS_POSIX + 257)
+#define SYS_POSIX_reserved90 (SYS_POSIX + 258)
+#define SYS_POSIX_reserved91 (SYS_POSIX + 259)
+#define SYS_POSIX_netboot (SYS_POSIX + 260)
+#define SYS_POSIX_netunboot (SYS_POSIX + 261)
+#define SYS_POSIX_rdump (SYS_POSIX + 262)
+#define SYS_POSIX_setsid (SYS_POSIX + 263)
+#define SYS_POSIX_getmaxsig (SYS_POSIX + 264)
+#define SYS_POSIX_sigpending (SYS_POSIX + 265)
+#define SYS_POSIX_sigprocmask (SYS_POSIX + 266)
+#define SYS_POSIX_sigsuspend (SYS_POSIX + 267)
+#define SYS_POSIX_sigaction (SYS_POSIX + 268)
+#define SYS_POSIX_MIPS_reserved1 (SYS_POSIX + 269)
+#define SYS_POSIX_MIPS_reserved2 (SYS_POSIX + 270)
+#define SYS_POSIX_MIPS_reserved3 (SYS_POSIX + 271)
+#define SYS_POSIX_MIPS_reserved4 (SYS_POSIX + 272)
+#define SYS_POSIX_MIPS_reserved5 (SYS_POSIX + 273)
+#define SYS_POSIX_MIPS_reserved6 (SYS_POSIX + 274)
+#define SYS_POSIX_MIPS_reserved7 (SYS_POSIX + 275)
+#define SYS_POSIX_MIPS_reserved8 (SYS_POSIX + 276)
+#define SYS_POSIX_MIPS_reserved9 (SYS_POSIX + 277)
+#define SYS_POSIX_MIPS_reserved10 (SYS_POSIX + 278)
+#define SYS_POSIX_MIPS_reserved11 (SYS_POSIX + 279)
+#define SYS_POSIX_TANDEM_reserved1 (SYS_POSIX + 280)
+#define SYS_POSIX_TANDEM_reserved2 (SYS_POSIX + 281)
+#define SYS_POSIX_TANDEM_reserved3 (SYS_POSIX + 282)
+#define SYS_POSIX_TANDEM_reserved4 (SYS_POSIX + 283)
+#define SYS_POSIX_TANDEM_reserved5 (SYS_POSIX + 284)
+#define SYS_POSIX_TANDEM_reserved6 (SYS_POSIX + 285)
+#define SYS_POSIX_TANDEM_reserved7 (SYS_POSIX + 286)
+#define SYS_POSIX_TANDEM_reserved8 (SYS_POSIX + 287)
+#define SYS_POSIX_TANDEM_reserved9 (SYS_POSIX + 288)
+#define SYS_POSIX_TANDEM_reserved10 (SYS_POSIX + 289)
+#define SYS_POSIX_TANDEM_reserved11 (SYS_POSIX + 290)
+#define SYS_POSIX_TANDEM_reserved12 (SYS_POSIX + 291)
+#define SYS_POSIX_TANDEM_reserved13 (SYS_POSIX + 292)
+#define SYS_POSIX_TANDEM_reserved14 (SYS_POSIX + 293)
+#define SYS_POSIX_TANDEM_reserved15 (SYS_POSIX + 294)
+#define SYS_POSIX_TANDEM_reserved16 (SYS_POSIX + 295)
+#define SYS_POSIX_TANDEM_reserved17 (SYS_POSIX + 296)
+#define SYS_POSIX_TANDEM_reserved18 (SYS_POSIX + 297)
+#define SYS_POSIX_TANDEM_reserved19 (SYS_POSIX + 298)
+#define SYS_POSIX_TANDEM_reserved20 (SYS_POSIX + 299)
+#define SYS_POSIX_SGI_reserved7 (SYS_POSIX + 300)
+#define SYS_POSIX_SGI_reserved8 (SYS_POSIX + 301)
+#define SYS_POSIX_SGI_reserved9 (SYS_POSIX + 302)
+#define SYS_POSIX_SGI_reserved10 (SYS_POSIX + 303)
+#define SYS_POSIX_SGI_reserved11 (SYS_POSIX + 304)
+#define SYS_POSIX_SGI_reserved12 (SYS_POSIX + 305)
+#define SYS_POSIX_SGI_reserved13 (SYS_POSIX + 306)
+#define SYS_POSIX_SGI_reserved14 (SYS_POSIX + 307)
+#define SYS_POSIX_SGI_reserved15 (SYS_POSIX + 308)
+#define SYS_POSIX_SGI_reserved16 (SYS_POSIX + 309)
+#define SYS_POSIX_SGI_reserved17 (SYS_POSIX + 310)
+#define SYS_POSIX_SGI_reserved18 (SYS_POSIX + 311)
+#define SYS_POSIX_SGI_reserved19 (SYS_POSIX + 312)
+#define SYS_POSIX_SGI_reserved20 (SYS_POSIX + 313)
+#define SYS_POSIX_SGI_reserved21 (SYS_POSIX + 314)
+#define SYS_POSIX_SGI_reserved22 (SYS_POSIX + 315)
+#define SYS_POSIX_SGI_reserved23 (SYS_POSIX + 316)
+#define SYS_POSIX_SGI_reserved24 (SYS_POSIX + 317)
+#define SYS_POSIX_SGI_reserved25 (SYS_POSIX + 318)
+#define SYS_POSIX_SGI_reserved26 (SYS_POSIX + 319)
+
+/*
+ * Linux syscalls are in the range from 4000 to 4999
+ * Hopefully these syscall numbers are unused ... If not everyone using
+ * statically linked binaries is pretty <censored - the government>. You've
+ * been warned.
+ */
+#define SYS_Linux 4000
+#define SYS_syscall (SYS_Linux + 0)
+#define SYS_exit (SYS_Linux + 1)
+#define SYS_fork (SYS_Linux + 2)
+#define SYS_read (SYS_Linux + 3)
+#define SYS_write (SYS_Linux + 4)
+#define SYS_open (SYS_Linux + 5)
+#define SYS_close (SYS_Linux + 6)
+#define SYS_waitpid (SYS_Linux + 7)
+#define SYS_creat (SYS_Linux + 8)
+#define SYS_link (SYS_Linux + 9)
+#define SYS_unlink (SYS_Linux + 10)
+#define SYS_execve (SYS_Linux + 11)
+#define SYS_chdir (SYS_Linux + 12)
+#define SYS_time (SYS_Linux + 13)
+#define SYS_mknod (SYS_Linux + 14)
+#define SYS_chmod (SYS_Linux + 15)
+#define SYS_chown (SYS_Linux + 16)
+#define SYS_break (SYS_Linux + 17)
+#define SYS_oldstat (SYS_Linux + 18)
+#define SYS_lseek (SYS_Linux + 19)
+#define SYS_getpid (SYS_Linux + 20)
+#define SYS_mount (SYS_Linux + 21)
+#define SYS_umount (SYS_Linux + 22)
+#define SYS_setuid (SYS_Linux + 23)
+#define SYS_getuid (SYS_Linux + 24)
+#define SYS_stime (SYS_Linux + 25)
+#define SYS_ptrace (SYS_Linux + 26)
+#define SYS_alarm (SYS_Linux + 27)
+#define SYS_oldfstat (SYS_Linux + 28)
+#define SYS_pause (SYS_Linux + 29)
+#define SYS_utime (SYS_Linux + 30)
+#define SYS_stty (SYS_Linux + 31)
+#define SYS_gtty (SYS_Linux + 32)
+#define SYS_access (SYS_Linux + 33)
+#define SYS_nice (SYS_Linux + 34)
+#define SYS_ftime (SYS_Linux + 35)
+#define SYS_sync (SYS_Linux + 36)
+#define SYS_kill (SYS_Linux + 37)
+#define SYS_rename (SYS_Linux + 38)
+#define SYS_mkdir (SYS_Linux + 39)
+#define SYS_rmdir (SYS_Linux + 40)
+#define SYS_dup (SYS_Linux + 41)
+#define SYS_pipe (SYS_Linux + 42)
+#define SYS_times (SYS_Linux + 43)
+#define SYS_prof (SYS_Linux + 44)
+#define SYS_brk (SYS_Linux + 45)
+#define SYS_setgid (SYS_Linux + 46)
+#define SYS_getgid (SYS_Linux + 47)
+#define SYS_signal (SYS_Linux + 48)
+#define SYS_geteuid (SYS_Linux + 49)
+#define SYS_getegid (SYS_Linux + 50)
+#define SYS_acct (SYS_Linux + 51)
+#define SYS_phys (SYS_Linux + 52)
+#define SYS_lock (SYS_Linux + 53)
+#define SYS_ioctl (SYS_Linux + 54)
+#define SYS_fcntl (SYS_Linux + 55)
+#define SYS_mpx (SYS_Linux + 56)
+#define SYS_setpgid (SYS_Linux + 57)
+#define SYS_ulimit (SYS_Linux + 58)
+#define SYS_oldolduname (SYS_Linux + 59)
+#define SYS_umask (SYS_Linux + 60)
+#define SYS_chroot (SYS_Linux + 61)
+#define SYS_ustat (SYS_Linux + 62)
+#define SYS_dup2 (SYS_Linux + 63)
+#define SYS_getppid (SYS_Linux + 64)
+#define SYS_getpgrp (SYS_Linux + 65)
+#define SYS_setsid (SYS_Linux + 66)
+#define SYS_sigaction (SYS_Linux + 67)
+#define SYS_sgetmask (SYS_Linux + 68)
+#define SYS_ssetmask (SYS_Linux + 69)
+#define SYS_setreuid (SYS_Linux + 70)
+#define SYS_setregid (SYS_Linux + 71)
+#define SYS_sigsuspend (SYS_Linux + 72)
+#define SYS_sigpending (SYS_Linux + 73)
+#define SYS_sethostname (SYS_Linux + 74)
+#define SYS_setrlimit (SYS_Linux + 75)
+#define SYS_getrlimit (SYS_Linux + 76)
+#define SYS_getrusage (SYS_Linux + 77)
+#define SYS_gettimeofday (SYS_Linux + 78)
+#define SYS_settimeofday (SYS_Linux + 79)
+#define SYS_getgroups (SYS_Linux + 80)
+#define SYS_setgroups (SYS_Linux + 81)
+#define SYS_reserved82 (SYS_Linux + 82)
+#define SYS_symlink (SYS_Linux + 83)
+#define SYS_oldlstat (SYS_Linux + 84)
+#define SYS_readlink (SYS_Linux + 85)
+#define SYS_uselib (SYS_Linux + 86)
+#define SYS_swapon (SYS_Linux + 87)
+#define SYS_reboot (SYS_Linux + 88)
+#define SYS_readdir (SYS_Linux + 89)
+#define SYS_mmap (SYS_Linux + 90)
+#define SYS_munmap (SYS_Linux + 91)
+#define SYS_truncate (SYS_Linux + 92)
+#define SYS_ftruncate (SYS_Linux + 93)
+#define SYS_fchmod (SYS_Linux + 94)
+#define SYS_fchown (SYS_Linux + 95)
+#define SYS_getpriority (SYS_Linux + 96)
+#define SYS_setpriority (SYS_Linux + 97)
+#define SYS_profil (SYS_Linux + 98)
+#define SYS_statfs (SYS_Linux + 99)
+#define SYS_fstatfs (SYS_Linux + 100)
+#define SYS_ioperm (SYS_Linux + 101)
+#define SYS_socketcall (SYS_Linux + 102)
+#define SYS_syslog (SYS_Linux + 103)
+#define SYS_setitimer (SYS_Linux + 104)
+#define SYS_getitimer (SYS_Linux + 105)
+#define SYS_stat (SYS_Linux + 106)
+#define SYS_lstat (SYS_Linux + 107)
+#define SYS_fstat (SYS_Linux + 108)
+#define SYS_olduname (SYS_Linux + 109)
+#define SYS_iopl (SYS_Linux + 110)
+#define SYS_vhangup (SYS_Linux + 111)
+#define SYS_idle (SYS_Linux + 112)
+#define SYS_vm86 (SYS_Linux + 113)
+#define SYS_wait4 (SYS_Linux + 114)
+#define SYS_swapoff (SYS_Linux + 115)
+#define SYS_sysinfo (SYS_Linux + 116)
+#define SYS_ipc (SYS_Linux + 117)
+#define SYS_fsync (SYS_Linux + 118)
+#define SYS_sigreturn (SYS_Linux + 119)
+#define SYS_clone (SYS_Linux + 120)
+#define SYS_setdomainname (SYS_Linux + 121)
+#define SYS_uname (SYS_Linux + 122)
+#define SYS_modify_ldt (SYS_Linux + 123)
+#define SYS_adjtimex (SYS_Linux + 124)
+#define SYS_mprotect (SYS_Linux + 125)
+#define SYS_sigprocmask (SYS_Linux + 126)
+#define SYS_create_module (SYS_Linux + 127)
+#define SYS_init_module (SYS_Linux + 128)
+#define SYS_delete_module (SYS_Linux + 129)
+#define SYS_get_kernel_syms (SYS_Linux + 130)
+#define SYS_quotactl (SYS_Linux + 131)
+#define SYS_getpgid (SYS_Linux + 132)
+#define SYS_fchdir (SYS_Linux + 133)
+#define SYS_bdflush (SYS_Linux + 134)
+#define SYS_sysfs (SYS_Linux + 135)
+#define SYS_personality (SYS_Linux + 136)
+#define SYS_afs_syscall (SYS_Linux + 137) /* Syscall for Andrew File System */
+#define SYS_setfsuid (SYS_Linux + 138)
+#define SYS_setfsgid (SYS_Linux + 139)
+#define SYS__llseek (SYS_Linux + 140)
+#define SYS_getdents (SYS_Linux + 141)
+#define SYS__newselect (SYS_Linux + 142)
+#define SYS_syscall_flock (SYS_Linux + 143)
+#define SYS_msync (SYS_Linux + 144)
+#define SYS_readv (SYS_Linux + 145)
+#define SYS_writev (SYS_Linux + 146)
+#define SYS_cacheflush (SYS_Linux + 147)
+#define SYS_cachectl (SYS_Linux + 148)
+#define SYS_sysmips (SYS_Linux + 149)
+#define SYS_setup (SYS_Linux + 150) /* used only by init, to get system going */
+#define SYS_getsid (SYS_Linux + 151)
+#define SYS_fdatasync (SYS_Linux + 152)
+#define SYS__sysctl (SYS_Linux + 153)
+#define SYS_mlock (SYS_Linux + 154)
+#define SYS_munlock (SYS_Linux + 155)
+#define SYS_mlockall (SYS_Linux + 156)
+#define SYS_munlockall (SYS_Linux + 157)
+#define SYS_sched_setparam (SYS_Linux + 158)
+#define SYS_sched_getparam (SYS_Linux + 159)
+#define SYS_sched_setscheduler (SYS_Linux + 160)
+#define SYS_sched_getscheduler (SYS_Linux + 161)
+#define SYS_sched_yield (SYS_Linux + 162)
+#define SYS_sched_get_priority_max (SYS_Linux + 163)
+#define SYS_sched_get_priority_min (SYS_Linux + 164)
+#define SYS_sched_rr_get_interval (SYS_Linux + 165)
+#define SYS_nanosleep (SYS_Linux + 166)
+#define SYS_mremap (SYS_Linux + 167)
+#define SYS_accept (SYS_Linux + 168)
+#define SYS_bind (SYS_Linux + 169)
+#define SYS_connect (SYS_Linux + 170)
+#define SYS_getpeername (SYS_Linux + 171)
+#define SYS_getsockname (SYS_Linux + 172)
+#define SYS_getsockopt (SYS_Linux + 173)
+#define SYS_listen (SYS_Linux + 174)
+#define SYS_recv (SYS_Linux + 175)
+#define SYS_recvfrom (SYS_Linux + 176)
+#define SYS_recvmsg (SYS_Linux + 177)
+#define SYS_send (SYS_Linux + 178)
+#define SYS_sendmsg (SYS_Linux + 179)
+#define SYS_sendto (SYS_Linux + 180)
+#define SYS_setsockopt (SYS_Linux + 181)
+#define SYS_shutdown (SYS_Linux + 182)
+#define SYS_socket (SYS_Linux + 183)
+#define SYS_socketpair (SYS_Linux + 184)
+#define SYS_setresuid (SYS_Linux + 185)
+#define SYS_getresuid (SYS_Linux + 186)
+#define SYS_query_module (SYS_Linux + 187)
+#define SYS_poll (SYS_Linux + 188)
+#define SYS_nfsservctl (SYS_Linux + 189)
+
+#endif /* sys/syscall.h */
diff --git a/sysdeps/unix/sysv/linux/mips/sys/sysmips.h b/sysdeps/unix/sysv/linux/mips/sys/sysmips.h
new file mode 100644
index 0000000000..cbb7eba2b4
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/sys/sysmips.h
@@ -0,0 +1,36 @@
+/* Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#ifndef _SYS_SYSMIPS_H
+#define _SYS_SYSMIPS_H 1
+
+#include <features.h>
+
+/*
+ * Get the kernel definition for sysmips(2)
+ */
+#include <asm/sysmips.h>
+
+__BEGIN_DECLS
+
+extern int sysmips __P ((__const int cmd, __const int arg1,
+ __const int arg2, __const int arg3));
+
+__END_DECLS
+
+#endif /* sys/sysmips.h */
diff --git a/sysdeps/unix/sysv/linux/mips/syscalls.list b/sysdeps/unix/sysv/linux/mips/syscalls.list
new file mode 100644
index 0000000000..6dd9cd81c5
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/syscalls.list
@@ -0,0 +1,46 @@
+# File name Caller Syscall name # args Strong name Weak names
+
+#
+# Calls for compatibility with existing MIPS OS implementations and
+# compilers.
+#
+cachectl - cachectl 3 __cachectl cachectl
+cacheflush - cacheflush 3 _flush_cache cacheflush
+sysmips - sysmips 4 __sysmips sysmips
+
+# override select.S in parent directory:
+select - select 5 __select select
+sigsuspend - sigsuspend 1 __sigsuspend sigsuspend
+
+#
+# Socket functions; Linux/MIPS doesn't use the socketcall(2) wrapper;
+# it's provided for compatibility, though.
+#
+accept - accept 3 __accept accept
+bind - bind 3 __bind bind
+connect - connect 3 __connect connect
+getpeername - getpeername 3 __getpeername getpeername
+getsockname - getsockname 3 __getsockname getsockname
+getsockopt - getsockopt 5 __getsockopt getsockopt
+listen - listen 2 __listen listen
+recv - recv 4 __recv recv
+recvfrom - recvfrom 6 __recvfrom recvfrom
+recvmsg - recvmsg 3 __recvmsg recvmsg
+send - send 4 __send send
+sendmsg - sendmsg 3 __sendmsg sendmsg
+sendto - sendto 6 __sendto sendto
+setsockopt - setsockopt 5 __setsockopt setsockopt
+shutdown - shutdown 2 __shutdown shutdown
+socket - socket 3 __socket socket
+socketpair - socketpair 4 __socketpair socketpair
+
+#
+# There are defined locally because the caller is also defined in this dir.
+#
+s_llseek llseek _llseek 5 __sys_llseek
+s_sigaction sigaction sigaction 3 __syscall_sigaction
+s_ustat ustat ustat 2 __syscall_ustat
+sys_mknod xmknod mknod 3 __syscall_mknod
+sys_fstat fxstat fstat 2 __syscall_fstat
+sys_lstat lxstat lstat 2 __syscall_lstat
+sys_stat xstat stat 2 __syscall_stat
diff --git a/sysdeps/unix/sysv/linux/mips/ustat.c b/sysdeps/unix/sysv/linux/mips/ustat.c
new file mode 100644
index 0000000000..447ab2947e
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/ustat.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+ Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <sys/ustat.h>
+#include <sys/sysmacros.h>
+
+
+extern int __syscall_ustat (unsigned long dev, struct ustat *ubuf);
+
+int
+ustat (dev_t dev, struct ustat *ubuf)
+{
+ unsigned long k_dev;
+
+ /* We must convert the value to dev_t type used by the kernel. */
+ k_dev = ((major (dev) & 0xff) << 8) | (minor (dev) & 0xff);
+
+ return __syscall_ustat (k_dev, ubuf);
+}
diff --git a/sysdeps/unix/sysv/linux/mips/xmknod.c b/sysdeps/unix/sysv/linux/mips/xmknod.c
new file mode 100644
index 0000000000..c7ff64fecb
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/xmknod.c
@@ -0,0 +1,47 @@
+/* xmknod call using old-style Unix mknod system call.
+ Copyright (C) 1991, 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/sysmacros.h>
+
+extern int __syscall_mknod (const char *, unsigned long, unsigned int);
+
+/* Create a device file named PATH, with permission and special bits MODE
+ and device number DEV (which can be constructed from major and minor
+ device numbers with the `makedev' macro above). */
+int
+__xmknod (int vers, const char *path, mode_t mode, dev_t *dev)
+{
+ unsigned long k_dev;
+
+ if (vers != _MKNOD_VER)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
+ /* We must convert the value to dev_t type used by the kernel. */
+ k_dev = ((major (*dev) & 0xff) << 8) | (minor (*dev) & 0xff);
+
+ return __syscall_mknod (path, mode, k_dev);
+}
+
+weak_alias (__xmknod, _xmknod)
diff --git a/sysdeps/unix/sysv/linux/mips/xstat.c b/sysdeps/unix/sysv/linux/mips/xstat.c
new file mode 100644
index 0000000000..9f7eb58e0a
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/mips/xstat.c
@@ -0,0 +1,80 @@
+/* xstat using old-style Unix stat system call.
+ Copyright (C) 1991, 1995, 1996, 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA. */
+
+#include <errno.h>
+#include <stddef.h>
+#include <sys/stat.h>
+
+#include <kernel_stat.h>
+
+extern int __syscall_stat (const char *, struct kernel_stat *);
+
+/* Get information about the file NAME in BUF. */
+int
+__xstat (int vers, const char *name, struct stat *buf)
+{
+ struct kernel_stat kbuf;
+ int result;
+
+ switch (vers)
+ {
+ case _STAT_VER_LINUX_OLD:
+ /* Nothing to do. The struct is in the form the kernel expects
+ it to be. */
+ result = __syscall_stat (name, (struct kernel_stat *) buf);
+ break;
+
+ case _STAT_VER_LINUX:
+ /* Do the system call. */
+ result = __syscall_stat (name, &kbuf);
+
+ /* Convert to current kernel version of `struct stat'. */
+ buf->st_dev = kbuf.st_dev;
+ buf->st_pad1[0] = 0; buf->st_pad1[1] = 0; buf->st_pad1[2] = 0;
+ buf->st_ino = kbuf.st_ino;
+ buf->st_mode = kbuf.st_mode;
+ buf->st_nlink = kbuf.st_nlink;
+ buf->st_uid = kbuf.st_uid;
+ buf->st_gid = kbuf.st_gid;
+ buf->st_rdev = kbuf.st_rdev;
+ buf->st_pad2[0] = 0; buf->st_pad2[1] = 0;
+ buf->st_pad3 = 0;
+ buf->st_size = kbuf.st_size;
+ buf->st_blksize = kbuf.st_blksize;
+ buf->st_blocks = kbuf.st_blocks;
+
+ buf->st_atime = kbuf.st_atime; buf->__reserved0 = 0;
+ buf->st_mtime = kbuf.st_mtime; buf->__reserved1 = 0;
+ buf->st_ctime = kbuf.st_ctime; buf->__reserved2 = 0;
+
+ buf->st_pad4[0] = 0; buf->st_pad4[1] = 0;
+ buf->st_pad4[2] = 0; buf->st_pad4[3] = 0;
+ buf->st_pad4[4] = 0; buf->st_pad4[5] = 0;
+ buf->st_pad4[6] = 0; buf->st_pad4[7] = 0;
+ break;
+
+ default:
+ __set_errno (EINVAL);
+ result = -1;
+ break;
+ }
+
+ return result;
+}
+weak_alias (__xstat, _xstat)