about summary refs log tree commit diff
path: root/arch/mips
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-07-11 04:22:13 -0400
committerRich Felker <dalias@aerifal.cx>2012-07-11 04:22:13 -0400
commit6315004f6102dca44c4ba50654a36967b8b9c2a6 (patch)
tree7b48d4ac93ecb9993ffc2d01c8762a4e954d4000 /arch/mips
parentcd8d72451662f0157d06fcf666669db543dcea3b (diff)
downloadmusl-6315004f6102dca44c4ba50654a36967b8b9c2a6.tar.gz
musl-6315004f6102dca44c4ba50654a36967b8b9c2a6.tar.xz
musl-6315004f6102dca44c4ba50654a36967b8b9c2a6.zip
initial version of mips (o32) port, based on work by Richard Pennington (rdp)
basically, this version of the code was obtained by starting with
rdp's work from his ellcc source tree, adapting it to musl's build
system and coding style, auditing the bits headers for discrepencies
with kernel definitions or glibc/LSB ABI or large file issues, fixing
up incompatibility with the old binutils from aboriginal linux, and
adding some new special cases to deal with the oddities of sigaction
and pipe syscall interfaces on mips.

at present, minimal test programs work, but some interfaces are broken
or missing. threaded programs probably will not link.
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/atomic.h191
-rwxr-xr-xarch/mips/bits/alltypes.h.sh122
-rw-r--r--arch/mips/bits/endian.h1
-rw-r--r--arch/mips/bits/errno.h133
-rw-r--r--arch/mips/bits/fcntl.h36
-rw-r--r--arch/mips/bits/fenv.h10
-rw-r--r--arch/mips/bits/float.h16
-rw-r--r--arch/mips/bits/ioctl.h210
-rw-r--r--arch/mips/bits/ipc.h12
-rw-r--r--arch/mips/bits/limits.h8
-rw-r--r--arch/mips/bits/mman.h50
-rw-r--r--arch/mips/bits/msg.h16
-rw-r--r--arch/mips/bits/posix.h2
-rw-r--r--arch/mips/bits/reg.h3
-rw-r--r--arch/mips/bits/setjmp.h1
-rw-r--r--arch/mips/bits/shm.h18
-rw-r--r--arch/mips/bits/signal.h73
-rw-r--r--arch/mips/bits/socket.h10
-rw-r--r--arch/mips/bits/stat.h23
-rw-r--r--arch/mips/bits/statfs.h7
-rw-r--r--arch/mips/bits/stdarg.h4
-rw-r--r--arch/mips/bits/stdint.h23
-rw-r--r--arch/mips/bits/syscall.h828
-rw-r--r--arch/mips/bits/termios.h159
-rw-r--r--arch/mips/bits/user.h40
-rw-r--r--arch/mips/bits/wchar.h4
-rw-r--r--arch/mips/ksigaction.h6
-rw-r--r--arch/mips/pthread_arch.h8
-rw-r--r--arch/mips/reloc.h23
29 files changed, 2037 insertions, 0 deletions
diff --git a/arch/mips/atomic.h b/arch/mips/atomic.h
new file mode 100644
index 00000000..33e53d4e
--- /dev/null
+++ b/arch/mips/atomic.h
@@ -0,0 +1,191 @@
+#ifndef _INTERNAL_ATOMIC_H
+#define _INTERNAL_ATOMIC_H
+
+#include <stdint.h>
+
+static inline int a_ctz_l(unsigned long x)
+{
+	static const char debruijn32[32] = {
+		0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13,
+		31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14
+	};
+	return debruijn32[(x&-x)*0x076be629 >> 27];
+}
+
+static inline int a_ctz_64(uint64_t x)
+{
+	uint32_t y = x;
+	if (!y) {
+		y = x>>32;
+		return 32 + a_ctz_l(y);
+	}
+	return a_ctz_l(y);
+}
+
+static inline int a_cas(volatile int *p, int t, int s)
+{
+	int dummy;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%2)\n"
+		"	bne %0, %3, 1f\n"
+		"	addu %1, %4, $0\n"
+		"	sc %1, 0(%2)\n"
+		"	beq %1, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(t), "=&r"(dummy) : "r"(p), "r"(t), "r"(s) : "memory" );
+        return t;
+}
+
+static inline void *a_cas_p(volatile void *p, void *t, void *s)
+{
+	return (void *)a_cas(p, (int)t, (int)s);
+}
+
+static inline long a_cas_l(volatile void *p, long t, long s)
+{
+	return a_cas(p, t, s);
+}
+
+
+static inline int a_swap(volatile int *x, int v)
+{
+	int old, dummy;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%2)\n"
+		"	addu %1, %3, $0\n"
+		"	sc %1, 0(%2)\n"
+		"	beq %1, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(old), "=&r"(dummy) : "r"(x), "r"(v) : "memory" );
+        return old;
+}
+
+static inline int a_fetch_add(volatile int *x, int v)
+{
+	int new;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%1)\n"
+		"	addu %0, %0, %2\n"
+		"	sc %0, 0(%1)\n"
+		"	beq %0, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(new) : "r"(x), "r"(v) : "memory" );
+        return new-v;
+}
+
+static inline void a_inc(volatile int *x)
+{
+	int dummy;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%1)\n"
+		"	addu %0, %0, 1\n"
+		"	sc %0, 0(%1)\n"
+		"	beq %0, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(dummy) : "r"(x) : "memory" );
+}
+
+static inline void a_dec(volatile int *x)
+{
+	int dummy;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%1)\n"
+		"	subu %0, %0, 1\n"
+		"	sc %0, 0(%1)\n"
+		"	beq %0, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(dummy) : "r"(x) : "memory" );
+}
+
+static inline void a_store(volatile int *p, int x)
+{
+	int dummy;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%1)\n"
+		"	addu %0, %2, $0\n"
+		"	sc %0, 0(%1)\n"
+		"	beq %0, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(dummy) : "r"(p), "r"(x) : "memory" );
+}
+
+static inline void a_spin()
+{
+}
+
+static inline void a_crash()
+{
+	*(volatile char *)0=0;
+}
+
+static inline void a_and(volatile int *p, int v)
+{
+	int dummy;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%1)\n"
+		"	and %0, %0, %2\n"
+		"	sc %0, 0(%1)\n"
+		"	beq %0, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(dummy) : "r"(p), "r"(v) : "memory" );
+}
+
+static inline void a_or(volatile int *p, int v)
+{
+	int dummy;
+	__asm__ __volatile__(
+		".set push\n"
+		".set noreorder\n"
+		"1:	ll %0, 0(%1)\n"
+		"	or %0, %0, %2\n"
+		"	sc %0, 0(%1)\n"
+		"	beq %0, $0, 1b\n"
+		"	nop\n"
+		"1:	\n"
+		".set pop\n"
+		: "=&r"(dummy) : "r"(p), "r"(v) : "memory" );
+}
+
+static inline void a_and_64(volatile uint64_t *p, uint64_t v)
+{
+	union { uint64_t v; uint32_t r[2]; } u = { v };
+	a_and((int *)p, u.r[0]);
+	a_and((int *)p+1, u.r[1]);
+}
+
+static inline void a_or_64(volatile uint64_t *p, uint64_t v)
+{
+	union { uint64_t v; uint32_t r[2]; } u = { v };
+	a_or((int *)p, u.r[0]);
+	a_or((int *)p+1, u.r[1]);
+}
+
+#endif
diff --git a/arch/mips/bits/alltypes.h.sh b/arch/mips/bits/alltypes.h.sh
new file mode 100755
index 00000000..a5357708
--- /dev/null
+++ b/arch/mips/bits/alltypes.h.sh
@@ -0,0 +1,122 @@
+#!/bin/sh
+sed -e << EOF \
+'/^TYPEDEF/s/TYPEDEF \(.*\) \([^ ]*\);$/#if defined(__NEED_\2) \&\& !defined(__DEFINED_\2)\
+typedef \1 \2;\
+#define __DEFINED_\2\
+#endif\
+/
+/^STRUCT/s/STRUCT * \([^ ]*\) \(.*\);$/#if defined(__NEED_struct_\1) \&\& !defined(__DEFINED_struct_\1)\
+struct \1 \2;\
+#define __DEFINED_struct_\1\
+#endif\
+/
+/^UNION/s/UNION * \([^ ]*\) \(.*\);$/#if defined(__NEED_union_\1) \&\& !defined(__DEFINED_union_\1)\
+union \1 \2;\
+#define __DEFINED_union_\1\
+#endif\
+/'
+
+TYPEDEF unsigned size_t;
+TYPEDEF int ssize_t;
+TYPEDEF long ptrdiff_t;
+
+TYPEDEF __builtin_va_list va_list;
+
+#ifndef __cplusplus
+TYPEDEF int wchar_t;
+#endif
+TYPEDEF int wint_t;
+TYPEDEF long wctrans_t;
+TYPEDEF long wctype_t;
+
+TYPEDEF signed char int8_t;
+TYPEDEF short       int16_t;
+TYPEDEF int         int32_t;
+TYPEDEF long long   int64_t;
+
+TYPEDEF unsigned char      uint8_t;
+TYPEDEF unsigned short     uint16_t;
+TYPEDEF unsigned int       uint32_t;
+TYPEDEF unsigned long long uint64_t;
+
+TYPEDEF unsigned short     __uint16_t;
+TYPEDEF unsigned int       __uint32_t;
+TYPEDEF unsigned long long __uint64_t;
+
+TYPEDEF int8_t    int_fast8_t;
+TYPEDEF int       int_fast16_t;
+TYPEDEF int       int_fast32_t;
+TYPEDEF int64_t   int_fast64_t;
+
+TYPEDEF unsigned char      uint_fast8_t;
+TYPEDEF unsigned int       uint_fast16_t;
+TYPEDEF unsigned int       uint_fast32_t;
+TYPEDEF uint64_t           uint_fast64_t;
+
+TYPEDEF long          intptr_t;
+TYPEDEF unsigned long uintptr_t;
+
+TYPEDEF float float_t;
+TYPEDEF double double_t;
+
+TYPEDEF long time_t;
+TYPEDEF int suseconds_t;
+STRUCT timeval { time_t tv_sec; int tv_usec; };
+STRUCT timespec { time_t tv_sec; long tv_nsec; };
+
+TYPEDEF int pid_t;
+TYPEDEF int id_t;
+TYPEDEF int uid_t;
+TYPEDEF int gid_t;
+TYPEDEF int key_t;
+
+TYPEDEF struct __pthread * pthread_t;
+TYPEDEF int pthread_once_t;
+TYPEDEF int pthread_key_t;
+TYPEDEF int pthread_spinlock_t;
+
+TYPEDEF struct { union { int __i[9]; size_t __s[9]; } __u; } pthread_attr_t;
+TYPEDEF unsigned pthread_mutexattr_t;
+TYPEDEF unsigned pthread_condattr_t;
+TYPEDEF unsigned pthread_barrierattr_t;
+TYPEDEF struct { unsigned __attr[2]; } pthread_rwlockattr_t;
+
+TYPEDEF struct { union { int __i[6]; void *__p[6]; } __u; } pthread_mutex_t;
+TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t;
+TYPEDEF struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t;
+TYPEDEF struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t;
+
+TYPEDEF long long off_t;
+
+TYPEDEF unsigned int mode_t;
+
+TYPEDEF unsigned int nlink_t;
+TYPEDEF unsigned long long ino_t;
+TYPEDEF long long dev_t;
+TYPEDEF long blksize_t;
+TYPEDEF long long blkcnt_t;
+TYPEDEF unsigned long long fsblkcnt_t;
+TYPEDEF unsigned long long fsfilcnt_t;
+
+TYPEDEF void * timer_t;
+TYPEDEF int clockid_t;
+TYPEDEF unsigned long clock_t;
+
+TYPEDEF struct { unsigned long __bits[128/sizeof(long)]; } sigset_t;
+TYPEDEF struct __siginfo siginfo_t;
+
+TYPEDEF unsigned int socklen_t;
+TYPEDEF unsigned short sa_family_t;
+TYPEDEF unsigned short in_port_t;
+TYPEDEF unsigned int in_addr_t;
+STRUCT in_addr { in_addr_t s_addr; };
+
+TYPEDEF struct __FILE_s FILE;
+
+TYPEDEF int nl_item;
+
+TYPEDEF struct __locale * locale_t;
+
+STRUCT iovec { void *iov_base; size_t iov_len; };
+
+EOF
diff --git a/arch/mips/bits/endian.h b/arch/mips/bits/endian.h
new file mode 100644
index 00000000..ef074b77
--- /dev/null
+++ b/arch/mips/bits/endian.h
@@ -0,0 +1 @@
+#define __BYTE_ORDER __BIG_ENDIAN
diff --git a/arch/mips/bits/errno.h b/arch/mips/bits/errno.h
new file mode 100644
index 00000000..c75720ef
--- /dev/null
+++ b/arch/mips/bits/errno.h
@@ -0,0 +1,133 @@
+#define EPERM            1
+#define ENOENT           2
+#define ESRCH            3
+#define EINTR            4
+#define EIO              5
+#define ENXIO            6
+#define E2BIG            7
+#define ENOEXEC          8
+#define EBADF            9
+#define ECHILD          10
+#define EAGAIN          11
+#define ENOMEM          12
+#define EACCES          13
+#define EFAULT          14
+#define ENOTBLK         15
+#define EBUSY           16
+#define EEXIST          17
+#define EXDEV           18
+#define ENODEV          19
+#define ENOTDIR         20
+#define EISDIR          21
+#define EINVAL          22
+#define ENFILE          23
+#define EMFILE          24
+#define ENOTTY          25
+#define ETXTBSY         26
+#define EFBIG           27
+#define ENOSPC          28
+#define ESPIPE          29
+#define EROFS           30
+#define EMLINK          31
+#define EPIPE           32
+#define EDOM            33
+#define ERANGE          34
+#define EDEADLK         35
+#define ENAMETOOLONG    36
+#define ENOLCK          37
+#define ENOSYS          38
+#define ENOTEMPTY       39
+#define ELOOP           40
+#define EWOULDBLOCK     EAGAIN
+#define ENOMSG          42
+#define EIDRM           43
+#define ECHRNG          44
+#define EL2NSYNC        45
+#define EL3HLT          46
+#define EL3RST          47
+#define ELNRNG          48
+#define EUNATCH         49
+#define ENOCSI          50
+#define EL2HLT          51
+#define EBADE           52
+#define EBADR           53
+#define EXFULL          54
+#define ENOANO          55
+#define EBADRQC         56
+#define EBADSLT         57
+#define EDEADLOCK       EDEADLK
+#define EBFONT          59
+#define ENOSTR          60
+#define ENODATA         61
+#define ETIME           62
+#define ENOSR           63
+#define ENONET          64
+#define ENOPKG          65
+#define EREMOTE         66
+#define ENOLINK         67
+#define EADV            68
+#define ESRMNT          69
+#define ECOMM           70
+#define EPROTO          71
+#define EMULTIHOP       72
+#define EDOTDOT         73
+#define EBADMSG         74
+#define EOVERFLOW       75
+#define ENOTUNIQ        76
+#define EBADFD          77
+#define EREMCHG         78
+#define ELIBACC         79
+#define ELIBBAD         80
+#define ELIBSCN         81
+#define ELIBMAX         82
+#define ELIBEXEC        83
+#define EILSEQ          84
+#define ERESTART        85
+#define ESTRPIPE        86
+#define EUSERS          87
+#define ENOTSOCK        88
+#define EDESTADDRREQ    89
+#define EMSGSIZE        90
+#define EPROTOTYPE      91
+#define ENOPROTOOPT     92
+#define EPROTONOSUPPORT 93
+#define ESOCKTNOSUPPORT 94
+#define EOPNOTSUPP      95
+#define ENOTSUP         EOPNOTSUPP
+#define EPFNOSUPPORT    96
+#define EAFNOSUPPORT    97
+#define EADDRINUSE      98
+#define EADDRNOTAVAIL   99
+#define ENETDOWN        100
+#define ENETUNREACH     101
+#define ENETRESET       102
+#define ECONNABORTED    103
+#define ECONNRESET      104
+#define ENOBUFS         105
+#define EISCONN         106
+#define ENOTCONN        107
+#define ESHUTDOWN       108
+#define ETOOMANYREFS    109
+#define ETIMEDOUT       110
+#define ECONNREFUSED    111
+#define EHOSTDOWN       112
+#define EHOSTUNREACH    113
+#define EALREADY        114
+#define EINPROGRESS     115
+#define ESTALE          116
+#define EUCLEAN         117
+#define ENOTNAM         118
+#define ENAVAIL         119
+#define EISNAM          120
+#define EREMOTEIO       121
+#define EDQUOT          122
+#define ENOMEDIUM       123
+#define EMEDIUMTYPE     124
+#define ECANCELED       125
+#define ENOKEY          126
+#define EKEYEXPIRED     127
+#define EKEYREVOKED     128
+#define EKEYREJECTED    129
+#define EOWNERDEAD      130
+#define ENOTRECOVERABLE 131
+#define ERFKILL         132
diff --git a/arch/mips/bits/fcntl.h b/arch/mips/bits/fcntl.h
new file mode 100644
index 00000000..6795800d
--- /dev/null
+++ b/arch/mips/bits/fcntl.h
@@ -0,0 +1,36 @@
+#define O_APPEND       0010
+#define O_DSYNC        0020
+#define O_SYNC       040020
+#define O_RSYNC      040020
+#define O_NONBLOCK     0200
+#define O_CREAT        0400
+#define O_TRUNC       01000
+#define O_EXCL        02000
+#define O_NOCTTY      04000
+#define O_ASYNC      010000
+#define O_LARGEFILE  020000
+#define O_DIRECT    0100000
+#define O_DIRECTORY 0200000
+#define O_NOFOLLOW  0400000
+#define O_NOATIME  01000000
+#define O_CLOEXEC  02000000
+
+#define O_NDELAY O_NONBLOCK
+
+#define F_DUPFD  0
+#define F_GETFD  1
+#define F_SETFD  2
+#define F_GETFL  3
+#define F_SETFL  4
+
+#define F_SETOWN 8
+#define F_GETOWN 9
+#define F_SETSIG 10
+#define F_GETSIG 11
+
+#define F_GETLK 12
+#define F_SETLK 13
+#define F_SETLKW 14
+
+#define F_SETOWN_EX 15
+#define F_GETOWN_EX 16
diff --git a/arch/mips/bits/fenv.h b/arch/mips/bits/fenv.h
new file mode 100644
index 00000000..edbdea2a
--- /dev/null
+++ b/arch/mips/bits/fenv.h
@@ -0,0 +1,10 @@
+#define FE_ALL_EXCEPT 0
+#define FE_TONEAREST  0
+
+typedef unsigned long fexcept_t;
+
+typedef struct {
+	unsigned long __cw;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/arch/mips/bits/float.h b/arch/mips/bits/float.h
new file mode 100644
index 00000000..dce9e2d9
--- /dev/null
+++ b/arch/mips/bits/float.h
@@ -0,0 +1,16 @@
+#define FLT_ROUNDS 1
+#define FLT_EVAL_METHOD 0
+
+#define LDBL_MIN 2.2250738585072014e-308
+#define LDBL_MAX 1.7976931348623157e+308
+#define LDBL_EPSILON 2.2204460492503131e-16
+
+#define LDBL_MANT_DIG 53
+#define LDBL_MIN_EXP (-1021)
+#define LDBL_MAX_EXP 1024
+
+#define LDBL_DIG 15
+#define LDBL_MIN_10_EXP (-307)
+#define LDBL_MAX_10_EXP 308
+
+#define DECIMAL_DIG 17
diff --git a/arch/mips/bits/ioctl.h b/arch/mips/bits/ioctl.h
new file mode 100644
index 00000000..c86488d8
--- /dev/null
+++ b/arch/mips/bits/ioctl.h
@@ -0,0 +1,210 @@
+#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) )
+#define _IOC_NONE  1U
+#define _IOC_WRITE 2U
+#define _IOC_READ  4U
+
+#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
+#define _IOW(a,b,c) _IOC(1,(a),(b),sizeof(c))
+#define _IOR(a,b,c) _IOC(2,(a),(b),sizeof(c))
+#define _IOWR(a,b,c) _IOC(4,(a),(b),sizeof(c))
+
+#define TCGETA		0x5401
+#define TCSETA		0x5402
+#define TCSETAW		0x5403
+#define TCSETAF		0x5404
+#define TCSBRK		0x5405
+#define TCXONC		0x5406
+#define TCFLSH		0x5407
+#define TCGETS		0x540D
+#define TCSETS		0x540E
+#define TCSETSW		0x540F
+#define TCSETSF		0x5410
+
+#define TIOCEXCL	0x740D
+#define TIOCNXCL	0x740E
+#define TIOCOUTQ	0x7472
+#define TIOCSTI		0x5472
+#define TIOCMGET	0x741D
+#define TIOCMBIS	0x741B
+#define TIOCMBIC	0x741C
+#define TIOCMSET	0x741D
+
+#define TIOCPKT		0x5470
+#define TIOCSWINSZ	_IOW('t', 103, struct winsize)
+#define TIOCGWINSZ	_IOR('t', 104, struct winsize)
+#define TIOCNOTTY	0x5471
+#define TIOCSETD	0x7401
+#define TIOCGETD	0x7400
+
+#define FIOCLEX		0x6601
+#define FIONCLEX	0x6602
+#define FIOASYNC	0x667D
+#define FIONBIO		0x667E
+#define FIOQSIZE	0x667F
+
+#define TIOCGLTC        0x7474
+#define TIOCSLTC        0x7475
+#define TIOCSPGRP	_IOW('t', 118, int)
+#define TIOCGPGRP	_IOR('t', 119, int)
+#define TIOCCONS	_IOW('t', 120, int)
+
+#define FIONREAD	0x467F
+#define TIOCINQ		FIONREAD
+
+#define TIOCGETP        0x7408
+#define TIOCSETP        0x7409
+#define TIOCSETN        0x740A
+
+#define TIOCSBRK	0x5427
+#define TIOCCBRK	0x5428
+#define TIOCGSID	0x7416
+#define TIOCGPTN	_IOR('T', 0x30, unsigned int)
+#define TIOCSPTLCK	_IOW('T', 0x31, int)
+
+#define TIOCSCTTY	0x5480
+#define TIOCGSOFTCAR	0x5481
+#define TIOCSSOFTCAR	0x5482
+#define TIOCLINUX	0x5483
+#define TIOCGSERIAL	0x5484
+#define TIOCSSERIAL	0x5485
+#define TCSBRKP		0x5486
+
+#define TIOCSERCONFIG	0x5488
+#define TIOCSERGWILD	0x5489
+#define TIOCSERSWILD	0x548A
+#define TIOCGLCKTRMIOS	0x548B
+#define TIOCSLCKTRMIOS	0x548C
+#define TIOCSERGSTRUCT	0x548D
+#define TIOCSERGETLSR   0x548E
+#define TIOCSERGETMULTI 0x548F
+#define TIOCSERSETMULTI 0x5490
+#define TIOCMIWAIT	0x5491
+#define TIOCGICOUNT	0x5492
+#define TIOCGHAYESESP   0x5493
+#define TIOCSHAYESESP   0x5494
+
+#define TIOCTTYGSTRUCT	0x5426          // RICH: Not sure about these.
+#define TCGETX		0x5432          // RICH: Not sure about these.
+#define TCSETX		0x5433          // RICH: Not sure about these.
+#define TCSETXF		0x5434          // RICH: Not sure about these.
+#define TCSETXW		0x5435          // RICH: Not sure about these.
+
+#define TIOCPKT_DATA		 0
+#define TIOCPKT_FLUSHREAD	 1
+#define TIOCPKT_FLUSHWRITE	 2
+#define TIOCPKT_STOP		 4
+#define TIOCPKT_START		 8
+#define TIOCPKT_NOSTOP		16
+#define TIOCPKT_DOSTOP		32
+#define TIOCPKT_IOCTL		64
+
+#define TIOCSER_TEMT    0x01
+
+struct winsize {
+	unsigned short ws_row;
+	unsigned short ws_col;
+	unsigned short ws_xpixel;
+	unsigned short ws_ypixel;
+};
+
+#define TIOCM_LE        0x001
+#define TIOCM_DTR       0x002
+#define TIOCM_RTS       0x004
+#define TIOCM_ST        0x008
+#define TIOCM_SR        0x010
+#define TIOCM_CTS       0x020
+#define TIOCM_CAR       0x040
+#define TIOCM_RNG       0x080
+#define TIOCM_DSR       0x100
+#define TIOCM_CD        TIOCM_CAR
+#define TIOCM_RI        TIOCM_RNG
+#define TIOCM_OUT1      0x2000
+#define TIOCM_OUT2      0x4000
+#define TIOCM_LOOP      0x8000
+#define TIOCM_MODEM_BITS TIOCM_OUT2
+
+#define N_TTY           0
+#define N_SLIP          1
+#define N_MOUSE         2
+#define N_PPP           3
+#define N_STRIP         4
+#define N_AX25          5
+#define N_X25           6
+#define N_6PACK         7
+#define N_MASC          8
+#define N_R3964         9
+#define N_PROFIBUS_FDL  10
+#define N_IRDA          11
+#define N_SMSBLOCK      12
+#define N_HDLC          13
+#define N_SYNC_PPP      14
+#define N_HCI           15
+
+#define FIOSETOWN       0x8901
+#define SIOCSPGRP       0x8902
+#define FIOGETOWN       0x8903
+#define SIOCGPGRP       0x8904
+#define SIOCATMARK      0x8905
+#define SIOCGSTAMP      0x8906
+
+#define SIOCADDRT       0x890B
+#define SIOCDELRT       0x890C
+#define SIOCRTMSG       0x890D
+
+#define SIOCGIFNAME     0x8910
+#define SIOCSIFLINK     0x8911
+#define SIOCGIFCONF     0x8912
+#define SIOCGIFFLAGS    0x8913
+#define SIOCSIFFLAGS    0x8914
+#define SIOCGIFADDR     0x8915
+#define SIOCSIFADDR     0x8916
+#define SIOCGIFDSTADDR  0x8917
+#define SIOCSIFDSTADDR  0x8918
+#define SIOCGIFBRDADDR  0x8919
+#define SIOCSIFBRDADDR  0x891a
+#define SIOCGIFNETMASK  0x891b
+#define SIOCSIFNETMASK  0x891c
+#define SIOCGIFMETRIC   0x891d
+#define SIOCSIFMETRIC   0x891e
+#define SIOCGIFMEM      0x891f
+#define SIOCSIFMEM      0x8920
+#define SIOCGIFMTU      0x8921
+#define SIOCSIFMTU      0x8922
+#define SIOCSIFHWADDR   0x8924
+#define SIOCGIFENCAP    0x8925
+#define SIOCSIFENCAP    0x8926
+#define SIOCGIFHWADDR   0x8927
+#define SIOCGIFSLAVE    0x8929
+#define SIOCSIFSLAVE    0x8930
+#define SIOCADDMULTI    0x8931
+#define SIOCDELMULTI    0x8932
+#define SIOCGIFINDEX    0x8933
+#define SIOGIFINDEX     SIOCGIFINDEX
+#define SIOCSIFPFLAGS   0x8934
+#define SIOCGIFPFLAGS   0x8935
+#define SIOCDIFADDR     0x8936
+#define SIOCSIFHWBROADCAST 0x8937
+#define SIOCGIFCOUNT    0x8938
+
+#define SIOCGIFBR       0x8940
+#define SIOCSIFBR       0x8941
+
+#define SIOCGIFTXQLEN   0x8942
+#define SIOCSIFTXQLEN   0x8943
+
+#define SIOCDARP        0x8953
+#define SIOCGARP        0x8954
+#define SIOCSARP        0x8955
+
+#define SIOCDRARP       0x8960
+#define SIOCGRARP       0x8961
+#define SIOCSRARP       0x8962
+
+#define SIOCGIFMAP      0x8970
+#define SIOCSIFMAP      0x8971
+
+#define SIOCADDDLCI     0x8980
+#define SIOCDELDLCI     0x8981
+
+#define SIOCDEVPRIVATE		0x89F0
+#define SIOCPROTOPRIVATE	0x89E0
diff --git a/arch/mips/bits/ipc.h b/arch/mips/bits/ipc.h
new file mode 100644
index 00000000..51ad4427
--- /dev/null
+++ b/arch/mips/bits/ipc.h
@@ -0,0 +1,12 @@
+struct ipc_perm
+{
+	key_t __ipc_perm_key;
+	uid_t uid;
+	gid_t gid;
+	uid_t cuid;
+	gid_t cgid;
+	mode_t mode;
+	int __ipc_perm_seq;
+	long __pad1;
+	long __pad2;
+};
diff --git a/arch/mips/bits/limits.h b/arch/mips/bits/limits.h
new file mode 100644
index 00000000..65a3dd64
--- /dev/null
+++ b/arch/mips/bits/limits.h
@@ -0,0 +1,8 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define PAGE_SIZE 4096
+#define LONG_BIT 32
+#endif
+
+#define LONG_MAX  0x7fffffffL
+#define LLONG_MAX  0x7fffffffffffffffLL
diff --git a/arch/mips/bits/mman.h b/arch/mips/bits/mman.h
new file mode 100644
index 00000000..03f961e8
--- /dev/null
+++ b/arch/mips/bits/mman.h
@@ -0,0 +1,50 @@
+#define MAP_FAILED ((void *) -1)
+
+#define	PROT_NONE      0
+#define	PROT_READ      1
+#define	PROT_WRITE     2
+#define	PROT_EXEC      4
+#define	PROT_GROWSDOWN 0x01000000
+#define	PROT_GROWSUP   0x02000000
+
+#define	MAP_SHARED     0x01
+#define	MAP_PRIVATE    0x02
+#define	MAP_FIXED      0x10
+
+#define MAP_TYPE       0x0f
+#define MAP_FILE       0x00
+#define MAP_ANON       0x20
+#define MAP_ANONYMOUS  MAP_ANON
+#define MAP_32BIT      0x40
+
+#define POSIX_MADV_NORMAL       0
+#define POSIX_MADV_RANDOM       1
+#define POSIX_MADV_SEQUENTIAL   2
+#define POSIX_MADV_WILLNEED     3
+#define POSIX_MADV_DONTNEED     0
+
+#define MS_ASYNC        1
+#define MS_INVALIDATE   2
+#define MS_SYNC         4
+
+#define MCL_CURRENT     1
+#define MCL_FUTURE      2
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#define MADV_NORMAL      0
+#define MADV_RANDOM      1
+#define MADV_SEQUENTIAL  2
+#define MADV_WILLNEED    3
+#define MADV_DONTNEED    4
+#define MADV_REMOVE      9
+#define MADV_DONTFORK    10
+#define MADV_DOFORK      11
+#define MADV_MERGEABLE   12
+#define MADV_UNMERGEABLE 13
+#define MADV_HUGEPAGE    14
+#define MADV_NOHUGEPAGE  15
+#define MADV_HWPOISON    100
+
+#define MREMAP_MAYMOVE  1
+#define MREMAP_FIXED    2
+#endif
diff --git a/arch/mips/bits/msg.h b/arch/mips/bits/msg.h
new file mode 100644
index 00000000..3db8576b
--- /dev/null
+++ b/arch/mips/bits/msg.h
@@ -0,0 +1,16 @@
+struct msqid_ds
+{
+	struct ipc_perm msg_perm;
+	time_t msg_stime;
+	int __unused1;
+	time_t msg_rtime;
+	int __unused2;
+	time_t msg_ctime;
+	int __unused3;
+	unsigned long msg_cbytes;
+	msgqnum_t msg_qnum;
+	msglen_t msg_qbytes;
+	pid_t msg_lspid;
+	pid_t msg_lrpid;
+	unsigned long __unused[2];
+};
diff --git a/arch/mips/bits/posix.h b/arch/mips/bits/posix.h
new file mode 100644
index 00000000..30a38714
--- /dev/null
+++ b/arch/mips/bits/posix.h
@@ -0,0 +1,2 @@
+#define _POSIX_V6_ILP32_OFFBIG  1
+#define _POSIX_V7_ILP32_OFFBIG  1
diff --git a/arch/mips/bits/reg.h b/arch/mips/bits/reg.h
new file mode 100644
index 00000000..0c7bffca
--- /dev/null
+++ b/arch/mips/bits/reg.h
@@ -0,0 +1,3 @@
+#undef __WORDSIZE
+#define __WORDSIZE 32
+/* FIXME */
diff --git a/arch/mips/bits/setjmp.h b/arch/mips/bits/setjmp.h
new file mode 100644
index 00000000..c43ea2be
--- /dev/null
+++ b/arch/mips/bits/setjmp.h
@@ -0,0 +1 @@
+typedef unsigned long jmp_buf [30];
diff --git a/arch/mips/bits/shm.h b/arch/mips/bits/shm.h
new file mode 100644
index 00000000..8807c4fb
--- /dev/null
+++ b/arch/mips/bits/shm.h
@@ -0,0 +1,18 @@
+#define SHMLBA 4096
+
+struct shmid_ds
+{
+	struct ipc_perm shm_perm;
+	size_t shm_segsz;
+	time_t shm_atime;
+	int __unused1;
+	time_t shm_dtime;
+	int __unused2;
+	time_t shm_ctime;
+	int __unused3;
+	pid_t shm_cpid;
+	pid_t shm_lpid;
+	unsigned long shm_nattch;
+	unsigned long __pad1;
+	unsigned long __pad2;
+};
diff --git a/arch/mips/bits/signal.h b/arch/mips/bits/signal.h
new file mode 100644
index 00000000..aed372eb
--- /dev/null
+++ b/arch/mips/bits/signal.h
@@ -0,0 +1,73 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+typedef struct {
+	unsigned long __regs[21];
+} mcontext_t;
+
+typedef struct __ucontext {
+	unsigned long uc_flags;
+	struct __ucontext *uc_link;
+	stack_t uc_stack;
+	mcontext_t uc_mcontext;
+	sigset_t uc_sigmask;
+	unsigned long uc_regspace[128];
+} ucontext_t;
+
+#define SA_NOCLDSTOP  1
+#define SA_NOCLDWAIT  2
+#define SA_SIGINFO    4
+#define SA_ONSTACK    0x08000000
+#define SA_RESTART    0x10000000
+#define SA_NODEFER    0x40000000
+#define SA_RESETHAND  0x80000000
+#define SA_RESTORER   0x04000000
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct sigcontext
+{
+	unsigned sc_regmask, sc_status;
+	unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
+	unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
+	unsigned long long sc_mdhi, sc_mdlo;
+	unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
+};
+#define NSIG      64
+#endif
+
+#endif
+
+#define SIGHUP    1
+#define SIGINT    2
+#define SIGQUIT   3
+#define SIGILL    4
+#define SIGTRAP   5
+#define SIGABRT   6
+#define SIGIOT    SIGABRT
+#define SIGSTKFLT 7
+#define SIGFPE    8
+#define SIGKILL   9
+#define SIGBUS    10
+#define SIGSEGV   11
+#define SIGSYS    12
+#define SIGPIPE   13
+#define SIGALRM   14
+#define SIGTERM   15
+#define SIGUSR1   16
+#define SIGUSR2   17
+#define SIGCHLD   18
+#define SIGPWR    19
+#define SIGWINCH  20
+#define SIGURG    21
+#define SIGIO     22
+#define SIGPOLL   SIGIO
+#define SIGSTOP   23
+#define SIGTSTP   24
+#define SIGCONT   25
+#define SIGTTIN   26
+#define SIGTTOU   27
+#define SIGVTALRM 28
+#define SIGPROF   29
+#define SIGXCPU   30
+#define SIGXFSZ   31
+#define SIGUNUSED SIGSYS
diff --git a/arch/mips/bits/socket.h b/arch/mips/bits/socket.h
new file mode 100644
index 00000000..c464ed90
--- /dev/null
+++ b/arch/mips/bits/socket.h
@@ -0,0 +1,10 @@
+struct msghdr
+{
+	void *msg_name;
+	socklen_t msg_namelen;
+	struct iovec *msg_iov;
+	int msg_iovlen;
+	void *msg_control;
+	socklen_t msg_controllen;
+	int msg_flags;
+};
diff --git a/arch/mips/bits/stat.h b/arch/mips/bits/stat.h
new file mode 100644
index 00000000..c8f9b469
--- /dev/null
+++ b/arch/mips/bits/stat.h
@@ -0,0 +1,23 @@
+/* copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types. */
+
+struct stat
+{
+	dev_t st_dev;
+	long __st_padding1[2];
+	ino_t st_ino;
+	mode_t st_mode;
+	nlink_t st_nlink;
+	uid_t st_uid;
+	gid_t st_gid;
+	dev_t st_rdev;
+	long __st_padding2[2];
+	off_t st_size;
+	struct timespec st_atim;
+	struct timespec st_mtim;
+	struct timespec st_ctim;
+	blksize_t st_blksize;
+	long __st_padding3;
+	blkcnt_t st_blocks;
+        long __st_padding4[14];
+};
diff --git a/arch/mips/bits/statfs.h b/arch/mips/bits/statfs.h
new file mode 100644
index 00000000..f103f4e4
--- /dev/null
+++ b/arch/mips/bits/statfs.h
@@ -0,0 +1,7 @@
+struct statfs {
+	unsigned long f_type, f_bsize;
+	fsblkcnt_t f_blocks, f_bfree, f_bavail;
+	fsfilcnt_t f_files, f_ffree;
+	fsid_t f_fsid;
+	unsigned long f_namelen, f_frsize, f_flags, f_spare[4];
+};
diff --git a/arch/mips/bits/stdarg.h b/arch/mips/bits/stdarg.h
new file mode 100644
index 00000000..fde37814
--- /dev/null
+++ b/arch/mips/bits/stdarg.h
@@ -0,0 +1,4 @@
+#define va_start(v,l)   __builtin_va_start(v,l)
+#define va_end(v)       __builtin_va_end(v)
+#define va_arg(v,l)     __builtin_va_arg(v,l)
+#define va_copy(d,s)    __builtin_va_copy(d,s)
diff --git a/arch/mips/bits/stdint.h b/arch/mips/bits/stdint.h
new file mode 100644
index 00000000..8e21a8cb
--- /dev/null
+++ b/arch/mips/bits/stdint.h
@@ -0,0 +1,23 @@
+#define INT_FAST8_MIN   INT8_MIN
+#define INT_FAST16_MIN  INT32_MIN
+#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST64_MIN  INT64_MIN
+
+#define INT_FAST8_MAX   INT8_MAX
+#define INT_FAST16_MAX  INT32_MAX
+#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST64_MAX  INT64_MAX
+
+#define UINT_FAST8_MAX  UINT8_MAX
+#define UINT_FAST16_MAX UINT32_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+#define UINT_FAST64_MAX UINT64_MAX
+
+#define INTPTR_MIN      INT32_MIN
+#define INTPTR_MAX      INT32_MAX
+#define UINTPTR_MAX     UINT32_MAX
+#define PTRDIFF_MIN     INT32_MIN
+#define PTRDIFF_MAX     INT32_MAX
+#define SIG_ATOMIC_MIN  INT32_MIN
+#define SIG_ATOMIC_MAX  INT32_MAX
+#define SIZE_MAX        UINT32_MAX
diff --git a/arch/mips/bits/syscall.h b/arch/mips/bits/syscall.h
new file mode 100644
index 00000000..e24ba5ed
--- /dev/null
+++ b/arch/mips/bits/syscall.h
@@ -0,0 +1,828 @@
+#define __SYSCALL_LL_E(x) \
+((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
+((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x))
+
+long (__syscall)(long, ...);
+
+static inline long __syscall0(long n)
+{
+	return (__syscall)(n);
+}
+
+static inline long __syscall1(long n, long a)
+{
+	return (__syscall)(n, a);
+}
+
+static inline long __syscall2(long n, long a, long b)
+{
+	return (__syscall)(n, a, b);
+}
+
+static inline long __syscall3(long n, long a, long b, long c)
+{
+	return (__syscall)(n, a, b, c);
+}
+
+static inline long __syscall4(long n, long a, long b, long c, long d)
+{
+	return (__syscall)(n, a, b, c, d);
+}
+
+static inline long __syscall5(long n, long a, long b, long c, long d, long e)
+{
+	return (__syscall)(n, a, b, c, d, e);
+}
+
+static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
+{
+	return (__syscall)(n, a, b, c, d, e, f);
+}
+
+#define __socketcall(nm,a,b,c,d,e,f) syscall(SYS_##nm, a, b, c, d, e, f)
+#define __socketcall_cp(nm,a,b,c,d,e,f) syscall_cp(SYS_##nm, a, b, c, d, e, f)
+
+#define __NR_syscall                 4000
+#define __NR_exit                    4001
+#define __NR_fork                    4002
+#define __NR_read                    4003
+#define __NR_write                   4004
+#define __NR_open                    4005
+#define __NR_close                   4006
+#define __NR_waitpid                 4007
+#define __NR_creat                   4008
+#define __NR_link                    4009
+#define __NR_unlink                  4010
+#define __NR_execve                  4011
+#define __NR_chdir                   4012
+#define __NR_time                    4013
+#define __NR_mknod                   4014
+#define __NR_chmod                   4015
+#define __NR_lchown                  4016
+#define __NR_break                   4017
+#define __NR_unused18                4018
+#define __NR_lseek                   4019
+#define __NR_getpid                  4020
+#define __NR_mount                   4021
+#define __NR_umount                  4022
+#define __NR_setuid                  4023
+#define __NR_getuid                  4024
+#define __NR_stime                   4025
+#define __NR_ptrace                  4026
+#define __NR_alarm                   4027
+#define __NR_unused28                4028
+#define __NR_pause                   4029
+#define __NR_utime                   4030
+#define __NR_stty                    4031
+#define __NR_gtty                    4032
+#define __NR_access                  4033
+#define __NR_nice                    4034
+#define __NR_ftime                   4035
+#define __NR_sync                    4036
+#define __NR_kill                    4037
+#define __NR_rename                  4038
+#define __NR_mkdir                   4039
+#define __NR_rmdir                   4040
+#define __NR_dup                     4041
+#define __NR_pipe                    4042
+#define __NR_times                   4043
+#define __NR_prof                    4044
+#define __NR_brk                     4045
+#define __NR_setgid                  4046
+#define __NR_getgid                  4047
+#define __NR_signal                  4048
+#define __NR_geteuid                 4049
+#define __NR_getegid                 4050
+#define __NR_acct                    4051
+#define __NR_umount2                 4052
+#define __NR_lock                    4053
+#define __NR_ioctl                   4054
+#define __NR_fcntl                   4055
+#define __NR_mpx                     4056
+#define __NR_setpgid                 4057
+#define __NR_ulimit                  4058
+#define __NR_unused59                4059
+#define __NR_umask                   4060
+#define __NR_chroot                  4061
+#define __NR_ustat                   4062
+#define __NR_dup2                    4063
+#define __NR_getppid                 4064
+#define __NR_getpgrp                 4065
+#define __NR_setsid                  4066
+#define __NR_sigaction               4067
+#define __NR_sgetmask                4068
+#define __NR_ssetmask                4069
+#define __NR_setreuid                4070
+#define __NR_setregid                4071
+#define __NR_sigsuspend              4072
+#define __NR_sigpending              4073
+#define __NR_sethostname             4074
+#define __NR_setrlimit               4075
+#define __NR_getrlimit               4076
+#define __NR_getrusage               4077
+#define __NR_gettimeofday            4078
+#define __NR_settimeofday            4079
+#define __NR_getgroups               4080
+#define __NR_setgroups               4081
+#define __NR_reserved82              4082
+#define __NR_symlink                 4083
+#define __NR_unused84                4084
+#define __NR_readlink                4085
+#define __NR_uselib                  4086
+#define __NR_swapon                  4087
+#define __NR_reboot                  4088
+#define __NR_readdir                 4089
+#define __NR_mmap                    4090
+#define __NR_munmap                  4091
+#define __NR_truncate                4092
+#define __NR_ftruncate               4093
+#define __NR_fchmod                  4094
+#define __NR_fchown                  4095
+#define __NR_getpriority             4096
+#define __NR_setpriority             4097
+#define __NR_profil                  4098
+#define __NR_statfs                  4099
+#define __NR_fstatfs                 4100
+#define __NR_ioperm                  4101
+#define __NR_socketcall              4102
+#define __NR_syslog                  4103
+#define __NR_setitimer               4104
+#define __NR_getitimer               4105
+#define __NR_stat                    4106
+#define __NR_lstat                   4107
+#define __NR_fstat                   4108
+#define __NR_unused109               4109
+#define __NR_iopl                    4110
+#define __NR_vhangup                 4111
+#define __NR_idle                    4112
+#define __NR_vm86                    4113
+#define __NR_wait4                   4114
+#define __NR_swapoff                 4115
+#define __NR_sysinfo                 4116
+#define __NR_ipc                     4117
+#define __NR_fsync                   4118
+#define __NR_sigreturn               4119
+#define __NR_clone                   4120
+#define __NR_setdomainname           4121
+#define __NR_uname                   4122
+#define __NR_modify_ldt              4123
+#define __NR_adjtimex                4124
+#define __NR_mprotect                4125
+#define __NR_sigprocmask             4126
+#define __NR_create_module           4127
+#define __NR_init_module             4128
+#define __NR_delete_module           4129
+#define __NR_get_kernel_syms         4130
+#define __NR_quotactl                4131
+#define __NR_getpgid                 4132
+#define __NR_fchdir                  4133
+#define __NR_bdflush                 4134
+#define __NR_sysfs                   4135
+#define __NR_personality             4136
+#define __NR_afs_syscall             4137
+#define __NR_setfsuid                4138
+#define __NR_setfsgid                4139
+#define __NR__llseek                 4140
+#define __NR_getdents                4141
+#define __NR_select                  4142
+#define __NR_flock                   4143
+#define __NR_msync                   4144
+#define __NR_readv                   4145
+#define __NR_writev                  4146
+#define __NR_cacheflush              4147
+#define __NR_cachectl                4148
+#define __NR_sysmips                 4149
+#define __NR_unused150               4150
+#define __NR_getsid                  4151
+#define __NR_fdatasync               4152
+#define __NR__sysctl                 4153
+#define __NR_mlock                   4154
+#define __NR_munlock                 4155
+#define __NR_mlockall                4156
+#define __NR_munlockall              4157
+#define __NR_sched_setparam          4158
+#define __NR_sched_getparam          4159
+#define __NR_sched_setscheduler      4160
+#define __NR_sched_getscheduler      4161
+#define __NR_sched_yield             4162
+#define __NR_sched_get_priority_max  4163
+#define __NR_sched_get_priority_min  4164
+#define __NR_sched_rr_get_interval   4165
+#define __NR_nanosleep               4166
+#define __NR_mremap                  4167
+#define __NR_accept                  4168
+#define __NR_bind                    4169
+#define __NR_connect                 4170
+#define __NR_getpeername             4171
+#define __NR_getsockname             4172
+#define __NR_getsockopt              4173
+#define __NR_listen                  4174
+#define __NR_recv                    4175
+#define __NR_recvfrom                4176
+#define __NR_recvmsg                 4177
+#define __NR_send                    4178
+#define __NR_sendmsg                 4179
+#define __NR_sendto                  4180
+#define __NR_setsockopt              4181
+#define __NR_shutdown                4182
+#define __NR_socket                  4183
+#define __NR_socketpair              4184
+#define __NR_setresuid               4185
+#define __NR_getresuid               4186
+#define __NR_query_module            4187
+#define __NR_poll                    4188
+#define __NR_nfsservctl              4189
+#define __NR_setresgid               4190
+#define __NR_getresgid               4191
+#define __NR_prctl                   4192
+#define __NR_rt_sigreturn            4193
+#define __NR_rt_sigaction            4194
+#define __NR_rt_sigprocmask          4195
+#define __NR_rt_sigpending           4196
+#define __NR_rt_sigtimedwait         4197
+#define __NR_rt_sigqueueinfo         4198
+#define __NR_rt_sigsuspend           4199
+#define __NR_pread                   4200
+#define __NR_pwrite                  4201
+#define __NR_chown                   4202
+#define __NR_getcwd                  4203
+#define __NR_capget                  4204
+#define __NR_capset                  4205
+#define __NR_sigaltstack             4206
+#define __NR_sendfile                4207
+#define __NR_getpmsg                 4208
+#define __NR_putpmsg                 4209
+#define __NR_mmap2                   4210
+#define __NR_truncate64              4211
+#define __NR_ftruncate64             4212
+#define __NR_stat64                  4213
+#define __NR_lstat64                 4214
+#define __NR_fstat64                 4215
+#define __NR_pivot_root              4216
+#define __NR_mincore                 4217
+#define __NR_madvise                 4218
+#define __NR_getdents64              4219
+#define __NR_fcntl64                 4220
+#define __NR_reserved221             4221
+#define __NR_gettid                  4222
+#define __NR_readahead               4223
+#define __NR_setxattr                4224
+#define __NR_lsetxattr               4225
+#define __NR_fsetxattr               4226
+#define __NR_getxattr                4227
+#define __NR_lgetxattr               4228
+#define __NR_fgetxattr               4229
+#define __NR_listxattr               4230
+#define __NR_llistxattr              4231
+#define __NR_flistxattr              4232
+#define __NR_removexattr             4233
+#define __NR_lremovexattr            4234
+#define __NR_fremovexattr            4235
+#define __NR_tkill                   4236
+#define __NR_sendfile64              4237
+#define __NR_futex                   4238
+#define __NR_sched_setaffinity       4239
+#define __NR_sched_getaffinity       4240
+#define __NR_io_setup                4241
+#define __NR_io_destroy              4242
+#define __NR_io_getevents            4243
+#define __NR_io_submit               4244
+#define __NR_io_cancel               4245
+#define __NR_exit_group              4246
+#define __NR_lookup_dcookie          4247
+#define __NR_epoll_create            4248
+#define __NR_epoll_ctl               4249
+#define __NR_epoll_wait              4250
+#define __NR_remap_file_pages        4251
+#define __NR_set_tid_address         4252
+#define __NR_restart_syscall         4253
+#define __NR_fadvise                 4254
+#define __NR_statfs64                4255
+#define __NR_fstatfs64               4256
+#define __NR_timer_create            4257
+#define __NR_timer_settime           4258
+#define __NR_timer_gettime           4259
+#define __NR_timer_getoverrun        4260
+#define __NR_timer_delete            4261
+#define __NR_clock_settime           4262
+#define __NR_clock_gettime           4263
+#define __NR_clock_getres            4264
+#define __NR_clock_nanosleep         4265
+#define __NR_tgkill                  4266
+#define __NR_utimes                  4267
+#define __NR_mbind                   4268
+#define __NR_get_mempolicy           4269
+#define __NR_set_mempolicy           4270
+#define __NR_mq_open                 4271
+#define __NR_mq_unlink               4272
+#define __NR_mq_timedsend            4273
+#define __NR_mq_timedreceive         4274
+#define __NR_mq_notify               4275
+#define __NR_mq_getsetattr           4276
+#define __NR_vserver                 4277
+#define __NR_waitid                  4278
+#define __NR_add_key                 4280
+#define __NR_request_key             4281
+#define __NR_keyctl                  4282
+#define __NR_set_thread_area         4283
+#define __NR_inotify_init            4284
+#define __NR_inotify_add_watch       4285
+#define __NR_inotify_rm_watch        4286
+#define __NR_migrate_pages           4287
+#define __NR_openat                  4288
+#define __NR_mkdirat                 4289
+#define __NR_mknodat                 4290
+#define __NR_fchownat                4291
+#define __NR_futimesat               4292
+#define __NR_fstatat                 4293
+#define __NR_unlinkat                4294
+#define __NR_renameat                4295
+#define __NR_linkat                  4296
+#define __NR_symlinkat               4297
+#define __NR_readlinkat              4298
+#define __NR_fchmodat                4299
+#define __NR_faccessat               4300
+#define __NR_pselect6                4301
+#define __NR_ppoll                   4302
+#define __NR_unshare                 4303
+#define __NR_splice                  4304
+#define __NR_sync_file_range         4305
+#define __NR_tee                     4306
+#define __NR_vmsplice                4307
+#define __NR_move_pages              4308
+#define __NR_set_robust_list         4309
+#define __NR_get_robust_list         4310
+#define __NR_kexec_load              4311
+#define __NR_getcpu                  4312
+#define __NR_epoll_pwait             4313
+#define __NR_ioprio_set              4314
+#define __NR_ioprio_get              4315
+#define __NR_utimensat               4316
+#define __NR_signalfd                4317
+#define __NR_timerfd                 4318
+#define __NR_eventfd                 4319
+#define __NR_fallocate               4320
+#define __NR_fallocate               4320
+#define __NR_timerfd_create          4321
+#define __NR_timerfd_gettime         4322
+#define __NR_timerfd_settime         4323
+#define __NR_signalfd4               4324
+#define __NR_eventfd2                4325
+#define __NR_epoll_create1           4326
+#define __NR_dup3                    4327
+#define __NR_pipe2                   4328
+#define __NR_inotify_init1           4329
+#define __NR_preadv                  4330
+#define __NR_pwritev                 4331
+#define __NR_rt_tgsigqueueinfo       4332
+#define __NR_perf_event_open         4333
+#define __NR_accept4                 4334
+#define __NR_recvmmsg                4335
+#define __NR_fanotify_init           4336
+#define __NR_fanotify_mark           4337
+#define __NR_prlimit64               4338
+#define __NR_name_to_handle_at       4339
+#define __NR_open_by_handle_at       4340
+#define __NR_clock_adjtime           4341
+#define __NR_syncfs                  4342
+#define __NR_fallocate               4320
+#define __NR_timerfd_create          4321
+#define __NR_timerfd_gettime         4322
+#define __NR_timerfd_settime         4323
+#define __NR_signalfd4               4324
+#define __NR_eventfd2                4325
+#define __NR_epoll_create1           4326
+#define __NR_dup3                    4327
+#define __NR_pipe2                   4328
+#define __NR_inotify_init1           4329
+#define __NR_preadv                  4330
+#define __NR_pwritev                 4331
+#define __NR_rt_tgsigqueueinfo       4332
+#define __NR_perf_event_open         4333
+#define __NR_accept4                 4334
+#define __NR_recvmmsg                4335
+#define __NR_fanotify_init           4336
+#define __NR_fanotify_mark           4337
+#define __NR_prlimit64               4338
+#define __NR_name_to_handle_at       4339
+#define __NR_open_by_handle_at       4340
+#define __NR_clock_adjtime           4341
+#define __NR_syncfs                  4342
+#define __NR_sendmmsg                4343
+#define __NR_setns                   4344
+#define __NR_process_vm_readv        4345
+#define __NR_process_vm_writev       4346
+
+/* fixup legacy 32-bit-vs-lfs64 junk */
+#undef __NR_fcntl
+#undef __NR_getdents
+#undef __NR_ftruncate
+#undef __NR_truncate
+#undef __NR_stat
+#undef __NR_fstat
+#undef __NR_lstat
+#undef __NR_statfs
+#undef __NR_fstatfs
+#define __NR_fcntl __NR_fcntl64
+#define __NR_getdents __NR_getdents64
+#define __NR_ftruncate __NR_ftruncate64
+#define __NR_truncate __NR_truncate64
+#define __NR_stat __NR_stat64
+#define __NR_fstat __NR_fstat64
+#define __NR_lstat __NR_lstat64
+#define __NR_statfs __NR_statfs64
+#define __NR_fstatfs __NR_fstatfs64
+
+
+/* Repeated with SYS_ prefix */
+#define SYS_syscall                 4000
+#define SYS_exit                    4001
+#define SYS_fork                    4002
+#define SYS_read                    4003
+#define SYS_write                   4004
+#define SYS_open                    4005
+#define SYS_close                   4006
+#define SYS_waitpid                 4007
+#define SYS_creat                   4008
+#define SYS_link                    4009
+#define SYS_unlink                  4010
+#define SYS_execve                  4011
+#define SYS_chdir                   4012
+#define SYS_time                    4013
+#define SYS_mknod                   4014
+#define SYS_chmod                   4015
+#define SYS_lchown                  4016
+#define SYS_break                   4017
+#define SYS_unused18                4018
+#define SYS_lseek                   4019
+#define SYS_getpid                  4020
+#define SYS_mount                   4021
+#define SYS_umount                  4022
+#define SYS_setuid                  4023
+#define SYS_getuid                  4024
+#define SYS_stime                   4025
+#define SYS_ptrace                  4026
+#define SYS_alarm                   4027
+#define SYS_unused28                4028
+#define SYS_pause                   4029
+#define SYS_utime                   4030
+#define SYS_stty                    4031
+#define SYS_gtty                    4032
+#define SYS_access                  4033
+#define SYS_nice                    4034
+#define SYS_ftime                   4035
+#define SYS_sync                    4036
+#define SYS_kill                    4037
+#define SYS_rename                  4038
+#define SYS_mkdir                   4039
+#define SYS_rmdir                   4040
+#define SYS_dup                     4041
+#define SYS_pipe                    4042
+#define SYS_times                   4043
+#define SYS_prof                    4044
+#define SYS_brk                     4045
+#define SYS_setgid                  4046
+#define SYS_getgid                  4047
+#define SYS_signal                  4048
+#define SYS_geteuid                 4049
+#define SYS_getegid                 4050
+#define SYS_acct                    4051
+#define SYS_umount2                 4052
+#define SYS_lock                    4053
+#define SYS_ioctl                   4054
+#define SYS_fcntl                   4055
+#define SYS_mpx                     4056
+#define SYS_setpgid                 4057
+#define SYS_ulimit                  4058
+#define SYS_unused59                4059
+#define SYS_umask                   4060
+#define SYS_chroot                  4061
+#define SYS_ustat                   4062
+#define SYS_dup2                    4063
+#define SYS_getppid                 4064
+#define SYS_getpgrp                 4065
+#define SYS_setsid                  4066
+#define SYS_sigaction               4067
+#define SYS_sgetmask                4068
+#define SYS_ssetmask                4069
+#define SYS_setreuid                4070
+#define SYS_setregid                4071
+#define SYS_sigsuspend              4072
+#define SYS_sigpending              4073
+#define SYS_sethostname             4074
+#define SYS_setrlimit               4075
+#define SYS_getrlimit               4076
+#define SYS_getrusage               4077
+#define SYS_gettimeofday            4078
+#define SYS_settimeofday            4079
+#define SYS_getgroups               4080
+#define SYS_setgroups               4081
+#define SYS_reserved82              4082
+#define SYS_symlink                 4083
+#define SYS_unused84                4084
+#define SYS_readlink                4085
+#define SYS_uselib                  4086
+#define SYS_swapon                  4087
+#define SYS_reboot                  4088
+#define SYS_readdir                 4089
+#define SYS_mmap                    4090
+#define SYS_munmap                  4091
+#define SYS_truncate                4092
+#define SYS_ftruncate               4093
+#define SYS_fchmod                  4094
+#define SYS_fchown                  4095
+#define SYS_getpriority             4096
+#define SYS_setpriority             4097
+#define SYS_profil                  4098
+#define SYS_statfs                  4099
+#define SYS_fstatfs                 4100
+#define SYS_ioperm                  4101
+#define SYS_socketcall              4102
+#define SYS_syslog                  4103
+#define SYS_setitimer               4104
+#define SYS_getitimer               4105
+#define SYS_stat                    4106
+#define SYS_lstat                   4107
+#define SYS_fstat                   4108
+#define SYS_unused109               4109
+#define SYS_iopl                    4110
+#define SYS_vhangup                 4111
+#define SYS_idle                    4112
+#define SYS_vm86                    4113
+#define SYS_wait4                   4114
+#define SYS_swapoff                 4115
+#define SYS_sysinfo                 4116
+#define SYS_ipc                     4117
+#define SYS_fsync                   4118
+#define SYS_sigreturn               4119
+#define SYS_clone                   4120
+#define SYS_setdomainname           4121
+#define SYS_uname                   4122
+#define SYS_modify_ldt              4123
+#define SYS_adjtimex                4124
+#define SYS_mprotect                4125
+#define SYS_sigprocmask             4126
+#define SYS_create_module           4127
+#define SYS_init_module             4128
+#define SYS_delete_module           4129
+#define SYS_get_kernel_syms         4130
+#define SYS_quotactl                4131
+#define SYS_getpgid                 4132
+#define SYS_fchdir                  4133
+#define SYS_bdflush                 4134
+#define SYS_sysfs                   4135
+#define SYS_personality             4136
+#define SYS_afs_syscall             4137
+#define SYS_setfsuid                4138
+#define SYS_setfsgid                4139
+#define SYS__llseek                 4140
+#define SYS_getdents                4141
+#define SYS_select                  4142
+#define SYS_flock                   4143
+#define SYS_msync                   4144
+#define SYS_readv                   4145
+#define SYS_writev                  4146
+#define SYS_cacheflush              4147
+#define SYS_cachectl                4148
+#define SYS_sysmips                 4149
+#define SYS_unused150               4150
+#define SYS_getsid                  4151
+#define SYS_fdatasync               4152
+#define SYS__sysctl                 4153
+#define SYS_mlock                   4154
+#define SYS_munlock                 4155
+#define SYS_mlockall                4156
+#define SYS_munlockall              4157
+#define SYS_sched_setparam          4158
+#define SYS_sched_getparam          4159
+#define SYS_sched_setscheduler      4160
+#define SYS_sched_getscheduler      4161
+#define SYS_sched_yield             4162
+#define SYS_sched_get_priority_max  4163
+#define SYS_sched_get_priority_min  4164
+#define SYS_sched_rr_get_interval   4165
+#define SYS_nanosleep               4166
+#define SYS_mremap                  4167
+#define SYS_accept                  4168
+#define SYS_bind                    4169
+#define SYS_connect                 4170
+#define SYS_getpeername             4171
+#define SYS_getsockname             4172
+#define SYS_getsockopt              4173
+#define SYS_listen                  4174
+#define SYS_recv                    4175
+#define SYS_recvfrom                4176
+#define SYS_recvmsg                 4177
+#define SYS_send                    4178
+#define SYS_sendmsg                 4179
+#define SYS_sendto                  4180
+#define SYS_setsockopt              4181
+#define SYS_shutdown                4182
+#define SYS_socket                  4183
+#define SYS_socketpair              4184
+#define SYS_setresuid               4185
+#define SYS_getresuid               4186
+#define SYS_query_module            4187
+#define SYS_poll                    4188
+#define SYS_nfsservctl              4189
+#define SYS_setresgid               4190
+#define SYS_getresgid               4191
+#define SYS_prctl                   4192
+#define SYS_rt_sigreturn            4193
+#define SYS_rt_sigaction            4194
+#define SYS_rt_sigprocmask          4195
+#define SYS_rt_sigpending           4196
+#define SYS_rt_sigtimedwait         4197
+#define SYS_rt_sigqueueinfo         4198
+#define SYS_rt_sigsuspend           4199
+#define SYS_pread                   4200
+#define SYS_pwrite                  4201
+#define SYS_chown                   4202
+#define SYS_getcwd                  4203
+#define SYS_capget                  4204
+#define SYS_capset                  4205
+#define SYS_sigaltstack             4206
+#define SYS_sendfile                4207
+#define SYS_getpmsg                 4208
+#define SYS_putpmsg                 4209
+#define SYS_mmap2                   4210
+#define SYS_truncate64              4211
+#define SYS_ftruncate64             4212
+#define SYS_stat64                  4213
+#define SYS_lstat64                 4214
+#define SYS_fstat64                 4215
+#define SYS_pivot_root              4216
+#define SYS_mincore                 4217
+#define SYS_madvise                 4218
+#define SYS_getdents64              4219
+#define SYS_fcntl64                 4220
+#define SYS_reserved221             4221
+#define SYS_gettid                  4222
+#define SYS_readahead               4223
+#define SYS_setxattr                4224
+#define SYS_lsetxattr               4225
+#define SYS_fsetxattr               4226
+#define SYS_getxattr                4227
+#define SYS_lgetxattr               4228
+#define SYS_fgetxattr               4229
+#define SYS_listxattr               4230
+#define SYS_llistxattr              4231
+#define SYS_flistxattr              4232
+#define SYS_removexattr             4233
+#define SYS_lremovexattr            4234
+#define SYS_fremovexattr            4235
+#define SYS_tkill                   4236
+#define SYS_sendfile64              4237
+#define SYS_futex                   4238
+#define SYS_sched_setaffinity       4239
+#define SYS_sched_getaffinity       4240
+#define SYS_io_setup                4241
+#define SYS_io_destroy              4242
+#define SYS_io_getevents            4243
+#define SYS_io_submit               4244
+#define SYS_io_cancel               4245
+#define SYS_exit_group              4246
+#define SYS_lookup_dcookie          4247
+#define SYS_epoll_create            4248
+#define SYS_epoll_ctl               4249
+#define SYS_epoll_wait              4250
+#define SYS_remap_file_pages        4251
+#define SYS_set_tid_address         4252
+#define SYS_restart_syscall         4253
+#define SYS_fadvise                 4254
+#define SYS_statfs64                4255
+#define SYS_fstatfs64               4256
+#define SYS_timer_create            4257
+#define SYS_timer_settime           4258
+#define SYS_timer_gettime           4259
+#define SYS_timer_getoverrun        4260
+#define SYS_timer_delete            4261
+#define SYS_clock_settime           4262
+#define SYS_clock_gettime           4263
+#define SYS_clock_getres            4264
+#define SYS_clock_nanosleep         4265
+#define SYS_tgkill                  4266
+#define SYS_utimes                  4267
+#define SYS_mbind                   4268
+#define SYS_get_mempolicy           4269
+#define SYS_set_mempolicy           4270
+#define SYS_mq_open                 4271
+#define SYS_mq_unlink               4272
+#define SYS_mq_timedsend            4273
+#define SYS_mq_timedreceive         4274
+#define SYS_mq_notify               4275
+#define SYS_mq_getsetattr           4276
+#define SYS_vserver                 4277
+#define SYS_waitid                  4278
+#define SYS_add_key                 4280
+#define SYS_request_key             4281
+#define SYS_keyctl                  4282
+#define SYS_set_thread_area         4283
+#define SYS_inotify_init            4284
+#define SYS_inotify_add_watch       4285
+#define SYS_inotify_rm_watch        4286
+#define SYS_migrate_pages           4287
+#define SYS_openat                  4288
+#define SYS_mkdirat                 4289
+#define SYS_mknodat                 4290
+#define SYS_fchownat                4291
+#define SYS_futimesat               4292
+#define SYS_fstatat                 4293
+#define SYS_unlinkat                4294
+#define SYS_renameat                4295
+#define SYS_linkat                  4296
+#define SYS_symlinkat               4297
+#define SYS_readlinkat              4298
+#define SYS_fchmodat                4299
+#define SYS_faccessat               4300
+#define SYS_pselect6                4301
+#define SYS_ppoll                   4302
+#define SYS_unshare                 4303
+#define SYS_splice                  4304
+#define SYS_sync_file_range         4305
+#define SYS_tee                     4306
+#define SYS_vmsplice                4307
+#define SYS_move_pages              4308
+#define SYS_set_robust_list         4309
+#define SYS_get_robust_list         4310
+#define SYS_kexec_load              4311
+#define SYS_getcpu                  4312
+#define SYS_epoll_pwait             4313
+#define SYS_ioprio_set              4314
+#define SYS_ioprio_get              4315
+#define SYS_utimensat               4316
+#define SYS_signalfd                4317
+#define SYS_timerfd                 4318
+#define SYS_eventfd                 4319
+#define SYS_fallocate               4320
+#define SYS_fallocate               4320
+#define SYS_timerfd_create          4321
+#define SYS_timerfd_gettime         4322
+#define SYS_timerfd_settime         4323
+#define SYS_signalfd4               4324
+#define SYS_eventfd2                4325
+#define SYS_epoll_create1           4326
+#define SYS_dup3                    4327
+#define SYS_pipe2                   4328
+#define SYS_inotify_init1           4329
+#define SYS_preadv                  4330
+#define SYS_pwritev                 4331
+#define SYS_rt_tgsigqueueinfo       4332
+#define SYS_perf_event_open         4333
+#define SYS_accept4                 4334
+#define SYS_recvmmsg                4335
+#define SYS_fanotify_init           4336
+#define SYS_fanotify_mark           4337
+#define SYS_prlimit64               4338
+#define SYS_name_to_handle_at       4339
+#define SYS_open_by_handle_at       4340
+#define SYS_clock_adjtime           4341
+#define SYS_syncfs                  4342
+#define SYS_fallocate               4320
+#define SYS_timerfd_create          4321
+#define SYS_timerfd_gettime         4322
+#define SYS_timerfd_settime         4323
+#define SYS_signalfd4               4324
+#define SYS_eventfd2                4325
+#define SYS_epoll_create1           4326
+#define SYS_dup3                    4327
+#define SYS_pipe2                   4328
+#define SYS_inotify_init1           4329
+#define SYS_preadv                  4330
+#define SYS_pwritev                 4331
+#define SYS_rt_tgsigqueueinfo       4332
+#define SYS_perf_event_open         4333
+#define SYS_accept4                 4334
+#define SYS_recvmmsg                4335
+#define SYS_fanotify_init           4336
+#define SYS_fanotify_mark           4337
+#define SYS_prlimit64               4338
+#define SYS_name_to_handle_at       4339
+#define SYS_open_by_handle_at       4340
+#define SYS_clock_adjtime           4341
+#define SYS_syncfs                  4342
+#define SYS_sendmmsg                4343
+#define SYS_setns                   4344
+#define SYS_process_vm_readv        4345
+#define SYS_process_vm_writev       4346
+
+/* fixup legacy 32-bit-vs-lfs64 junk */
+#undef SYS_fcntl
+#undef SYS_getdents
+#undef SYS_ftruncate
+#undef SYS_truncate
+#undef SYS_stat
+#undef SYS_fstat
+#undef SYS_lstat
+#undef SYS_statfs
+#undef SYS_fstatfs
+#define SYS_fcntl SYS_fcntl64
+#define SYS_getdents SYS_getdents64
+#define SYS_ftruncate SYS_ftruncate64
+#define SYS_truncate SYS_truncate64
+#define SYS_stat SYS_stat64
+#define SYS_fstat SYS_fstat64
+#define SYS_lstat SYS_lstat64
+#define SYS_statfs SYS_statfs64
+#define SYS_fstatfs SYS_fstatfs64
diff --git a/arch/mips/bits/termios.h b/arch/mips/bits/termios.h
new file mode 100644
index 00000000..9f6abd83
--- /dev/null
+++ b/arch/mips/bits/termios.h
@@ -0,0 +1,159 @@
+struct termios
+{
+	tcflag_t c_iflag;
+	tcflag_t c_oflag;
+	tcflag_t c_cflag;
+	tcflag_t c_lflag;
+	cc_t c_line;
+	cc_t c_cc[NCCS];
+	speed_t __c_ispeed;
+	speed_t __c_ospeed;
+};
+
+#define VINTR     0
+#define VQUIT     1
+#define VERASE    2
+#define VKILL     3
+#define VEOF      4
+#define VTIME     5
+#define VMIN      6
+#define VSWTC     7
+#define VSTART    8
+#define VSTOP     9
+#define VSUSP    10
+#define VEOL     11
+#define VREPRINT 12
+#define VDISCARD 13
+#define VWERASE  14
+#define VLNEXT   15
+#define VEOL2    16
+
+#define IGNBRK  0000001
+#define BRKINT  0000002
+#define IGNPAR  0000004
+#define PARMRK  0000010
+#define INPCK   0000020
+#define ISTRIP  0000040
+#define INLCR   0000100
+#define IGNCR   0000200
+#define ICRNL   0000400
+#define IUCLC   0001000
+#define IXON    0002000
+#define IXANY   0004000
+#define IXOFF   0010000
+#define IMAXBEL 0020000
+
+#define OPOST  0000001
+#define OLCUC  0000002
+#define ONLCR  0000004
+#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 BSDLY  0020000
+#define BS0    0000000
+#define BS1    0020000
+#define FFDLY  0100000
+#define FF0    0000000
+#define FF1    0100000
+
+#define VTDLY  0040000
+#define VT0    0000000
+#define VT1    0040000
+
+/* ?? */
+#define XTABS  0014000
+
+#define B0       0000000
+#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 B57600   0010001
+#define B115200  0010002
+#define B230400  0010003
+#define B460800  0010004
+#define B500000  0010005
+#define B576000  0010006
+#define B921600  0010007
+#define B1000000 0010010
+#define B1152000 0010011
+#define B1500000 0010012
+#define B2000000 0010013
+#define B2500000 0010014
+#define B3000000 0010015
+#define B3500000 0010016
+#define B4000000 0010017
+
+#define CBAUD    0010017
+
+#define CSIZE  0000060
+#define CS5    0000000
+#define CS6    0000020
+#define CS7    0000040
+#define CS8    0000060
+#define CSTOPB 0000100
+#define CREAD  0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL  0002000
+#define CLOCAL 0004000
+
+#define CRTSCTS  020000000000
+
+#define ISIG   0000001
+#define ICANON 0000002
+#define ECHO   0000010
+#define ECHOE  0000020
+#define ECHOK  0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0000400
+#define IEXTEN 0100000
+
+/* Extensions? */
+#define CBAUDEX 0010000
+#define ECHOCTL 0001000
+#define ECHOPRT 0002000
+#define ECHOKE 0004000
+#define FLUSHO 0010000
+#define PENDIN 0040000
+
+#define TCOOFF 0
+#define TCOON  1
+#define TCIOFF 2
+#define TCION  3
+
+#define TCIFLUSH  0
+#define TCOFLUSH  1
+#define TCIOFLUSH 2
+
+#define TCSANOW   0
+#define TCSADRAIN 1
+#define TCSAFLUSH 2
diff --git a/arch/mips/bits/user.h b/arch/mips/bits/user.h
new file mode 100644
index 00000000..c533fd8d
--- /dev/null
+++ b/arch/mips/bits/user.h
@@ -0,0 +1,40 @@
+struct user_fpregs_struct
+{
+	struct fp_reg {
+		unsigned sign1:1;
+		unsigned unused:15;
+		unsigned sign2:1;
+		unsigned exponent:14;
+		unsigned j:1;
+		unsigned mantissa1:31;
+		unsigned mantissa0:32;
+	} fpregs[8];
+	unsigned fpsr:32;
+	unsigned fpcr:32;
+	unsigned char ftype[8];
+	unsigned int init_flag;
+};
+
+struct user_regs_struct
+{
+	unsigned long uregs[18];
+};
+
+struct user
+{
+	struct user_regs_struct		regs;
+	int				u_fpvalid;
+	unsigned long			u_tsize;
+	unsigned long			u_dsize;
+	unsigned long			u_ssize;
+	unsigned long			start_code;
+	unsigned long			start_stack;
+	long				signal;
+	int				reserved;
+	struct user_regs_struct		*u_ar0;
+	unsigned long int		magic;
+	char				u_comm[32];
+	int				u_debugreg[8];
+	struct user_fpregs_struct	u_fp;
+	struct user_fpregs_struct	*u_fp0;
+};
diff --git a/arch/mips/bits/wchar.h b/arch/mips/bits/wchar.h
new file mode 100644
index 00000000..ffb26917
--- /dev/null
+++ b/arch/mips/bits/wchar.h
@@ -0,0 +1,4 @@
+#ifndef WCHAR_MIN
+#define WCHAR_MIN 0U
+#define WCHAR_MAX 0xffffffffU
+#endif
diff --git a/arch/mips/ksigaction.h b/arch/mips/ksigaction.h
new file mode 100644
index 00000000..648ce068
--- /dev/null
+++ b/arch/mips/ksigaction.h
@@ -0,0 +1,6 @@
+struct k_sigaction {
+	unsigned flags;
+	void (*handler)(int);
+	unsigned long mask[4];
+	void (*restorer)();
+};
diff --git a/arch/mips/pthread_arch.h b/arch/mips/pthread_arch.h
new file mode 100644
index 00000000..60296fd6
--- /dev/null
+++ b/arch/mips/pthread_arch.h
@@ -0,0 +1,8 @@
+static inline struct pthread *__pthread_self()
+{
+	struct pthread *self;
+	__asm__ __volatile__ (".word 0x7c03e83b" : "=v" (self) );
+	return self;
+}
+
+#define CANCEL_REG_IP 3
diff --git a/arch/mips/reloc.h b/arch/mips/reloc.h
new file mode 100644
index 00000000..76df112a
--- /dev/null
+++ b/arch/mips/reloc.h
@@ -0,0 +1,23 @@
+#include <string.h>
+#include <elf.h>
+
+#define ETC_LDSO_PATH "/etc/ld-musl-mips.path"
+
+#define IS_COPY(x) ((x)==R_MIPS_COPY)
+#define IS_PLT(x) ((x)==R_MIPS_JUMP_SLOT)
+
+static inline void do_single_reloc(size_t *reloc_addr, int type, size_t sym_val, size_t sym_size, unsigned char *base_addr, size_t addend)
+{
+	switch(type) {
+	case R_MIPS_JUMP_SLOT:
+		*reloc_addr = sym_val;
+		break;
+	case R_MIPS_REL32:
+		// FIXME: how do symbolic relocs come in here ?
+		*reloc_addr += (size_t)base_addr;
+		break;
+	case R_MIPS_COPY:
+		memcpy(reloc_addr, (void *)sym_val, sym_size);
+		break;
+	}
+}