diff options
author | Felix Fietkau <nbd@openwrt.org> | 2016-03-07 21:00:49 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2016-03-07 21:00:49 +0000 |
commit | fb0fcf9ae29ee8c34247880ed5d103fc8c5f0468 (patch) | |
tree | c3588898011f79e8dab5c9c623ff313f2e552cb0 /toolchain/musl/patches/020-Add-MIPS-N64-port.patch | |
parent | b9f52b6b869b52d52893ed2604f49689bda9a378 (diff) | |
download | upstream-fb0fcf9ae29ee8c34247880ed5d103fc8c5f0468.tar.gz upstream-fb0fcf9ae29ee8c34247880ed5d103fc8c5f0468.tar.bz2 upstream-fb0fcf9ae29ee8c34247880ed5d103fc8c5f0468.zip |
musl: update to latest git, adds some fixes for the mips64 port and regular expressions
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 48957
Diffstat (limited to 'toolchain/musl/patches/020-Add-MIPS-N64-port.patch')
-rw-r--r-- | toolchain/musl/patches/020-Add-MIPS-N64-port.patch | 2714 |
1 files changed, 0 insertions, 2714 deletions
diff --git a/toolchain/musl/patches/020-Add-MIPS-N64-port.patch b/toolchain/musl/patches/020-Add-MIPS-N64-port.patch deleted file mode 100644 index 3dfdc11a0d..0000000000 --- a/toolchain/musl/patches/020-Add-MIPS-N64-port.patch +++ /dev/null @@ -1,2714 +0,0 @@ -commit 1abe6a4d8e21d760e5765e7317c898dcedd422cb -Author: Jaydeep Patil <jap@debian-co3-1.le.imgtec.org> -Date: Fri Feb 26 07:06:28 2016 +0000 - - [MIPS64] N64 port - ---- /dev/null -+++ b/arch/mips64/atomic_arch.h -@@ -0,0 +1,50 @@ -+#define a_ll a_ll -+static inline int a_ll(volatile int *p) -+{ -+ int v; -+ __asm__ __volatile__ ( -+ "ll %0, %1" -+ : "=r"(v) : "m"(*p)); -+ return v; -+} -+ -+#define a_sc a_sc -+static inline int a_sc(volatile int *p, int v) -+{ -+ int r; -+ __asm__ __volatile__ ( -+ "sc %0, %1" -+ : "=r"(r), "=m"(*p) : "0"(v) : "memory"); -+ return r; -+} -+ -+#define a_ll_p a_ll_p -+static inline int a_ll_p(volatile long *p) -+{ -+ int v; -+ __asm__ __volatile__ ( -+ "lld %0, %1" -+ : "=r"(v) : "m"(*p)); -+ return v; -+} -+ -+#define a_sc_p a_sc_p -+static inline int a_sc_p(volatile long *p, void *v) -+{ -+ int r; -+ __asm__ __volatile__ ( -+ "scd %0, %1" -+ : "=r"(r), "=m"(*p) : "0"(v) : "memory"); -+ return r; -+} -+ -+#define a_barrier a_barrier -+static inline void a_barrier() -+{ -+ /* mips2 sync, but using too many directives causes -+ * gcc not to inline it, so encode with .long instead. */ -+ __asm__ __volatile__ (".long 0xf" : : : "memory"); -+} -+ -+#define a_pre_llsc a_barrier -+#define a_post_llsc a_barrier ---- /dev/null -+++ b/arch/mips64/bits/alltypes.h.in -@@ -0,0 +1,28 @@ -+#define _Addr long -+#define _Int64 long -+#define _Reg long -+ -+TYPEDEF __builtin_va_list va_list; -+TYPEDEF __builtin_va_list __isoc_va_list; -+ -+#ifndef __cplusplus -+TYPEDEF int wchar_t; -+#endif -+ -+TYPEDEF float float_t; -+TYPEDEF double double_t; -+ -+TYPEDEF struct { long long __ll; long double __ld; } max_align_t; -+ -+TYPEDEF long time_t; -+TYPEDEF long suseconds_t; -+ -+TYPEDEF unsigned nlink_t; -+ -+TYPEDEF struct { union { int __i[9]; volatile int __vi[9]; unsigned __s[9]; } __u; } pthread_attr_t; -+TYPEDEF struct { union { int __i[6]; volatile int __vi[6]; volatile void *volatile __p[6]; } __u; } pthread_mutex_t; -+TYPEDEF struct { union { int __i[6]; volatile int __vi[6]; volatile void *volatile __p[6]; } __u; } mtx_t; -+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } pthread_cond_t; -+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } cnd_t; -+TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; void *__p[8]; } __u; } pthread_rwlock_t; -+TYPEDEF struct { union { int __i[5]; volatile int __vi[5]; void *__p[5]; } __u; } pthread_barrier_t; ---- /dev/null -+++ b/arch/mips64/bits/endian.h -@@ -0,0 +1,5 @@ -+#if _MIPSEL || __MIPSEL || __MIPSEL__ -+#define __BYTE_ORDER __LITTLE_ENDIAN -+#else -+#define __BYTE_ORDER __BIG_ENDIAN -+#endif ---- /dev/null -+++ b/arch/mips64/bits/errno.h -@@ -0,0 +1,134 @@ -+#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 ENOMSG 35 -+#define EIDRM 36 -+#define ECHRNG 37 -+#define EL2NSYNC 38 -+#define EL3HLT 39 -+#define EL3RST 40 -+#define ELNRNG 41 -+#define EUNATCH 42 -+#define ENOCSI 43 -+#define EL2HLT 44 -+#define EDEADLK 45 -+#define ENOLCK 46 -+#define EBADE 50 -+#define EBADR 51 -+#define EXFULL 52 -+#define ENOANO 53 -+#define EBADRQC 54 -+#define EBADSLT 55 -+#define EDEADLOCK 56 -+#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 EDOTDOT 73 -+#define EMULTIHOP 74 -+#define EBADMSG 77 -+#define ENAMETOOLONG 78 -+#define EOVERFLOW 79 -+#define ENOTUNIQ 80 -+#define EBADFD 81 -+#define EREMCHG 82 -+#define ELIBACC 83 -+#define ELIBBAD 84 -+#define ELIBSCN 85 -+#define ELIBMAX 86 -+#define ELIBEXEC 87 -+#define EILSEQ 88 -+#define ENOSYS 89 -+#define ELOOP 90 -+#define ERESTART 91 -+#define ESTRPIPE 92 -+#define ENOTEMPTY 93 -+#define EUSERS 94 -+#define ENOTSOCK 95 -+#define EDESTADDRREQ 96 -+#define EMSGSIZE 97 -+#define EPROTOTYPE 98 -+#define ENOPROTOOPT 99 -+#define EPROTONOSUPPORT 120 -+#define ESOCKTNOSUPPORT 121 -+#define EOPNOTSUPP 122 -+#define ENOTSUP EOPNOTSUPP -+#define EPFNOSUPPORT 123 -+#define EAFNOSUPPORT 124 -+#define EADDRINUSE 125 -+#define EADDRNOTAVAIL 126 -+#define ENETDOWN 127 -+#define ENETUNREACH 128 -+#define ENETRESET 129 -+#define ECONNABORTED 130 -+#define ECONNRESET 131 -+#define ENOBUFS 132 -+#define EISCONN 133 -+#define ENOTCONN 134 -+#define EUCLEAN 135 -+#define ENOTNAM 137 -+#define ENAVAIL 138 -+#define EISNAM 139 -+#define EREMOTEIO 140 -+#define ESHUTDOWN 143 -+#define ETOOMANYREFS 144 -+#define ETIMEDOUT 145 -+#define ECONNREFUSED 146 -+#define EHOSTDOWN 147 -+#define EHOSTUNREACH 148 -+#define EWOULDBLOCK EAGAIN -+#define EALREADY 149 -+#define EINPROGRESS 150 -+#define ESTALE 151 -+#define ECANCELED 158 -+#define ENOMEDIUM 159 -+#define EMEDIUMTYPE 160 -+#define ENOKEY 161 -+#define EKEYEXPIRED 162 -+#define EKEYREVOKED 163 -+#define EKEYREJECTED 164 -+#define EOWNERDEAD 165 -+#define ENOTRECOVERABLE 166 -+#define ERFKILL 167 -+#define EHWPOISON 168 -+#define EDQUOT 1133 ---- /dev/null -+++ b/arch/mips64/bits/fcntl.h -@@ -0,0 +1,40 @@ -+#define O_CREAT 0400 -+#define O_EXCL 02000 -+#define O_NOCTTY 04000 -+#define O_TRUNC 01000 -+#define O_APPEND 0010 -+#define O_NONBLOCK 0200 -+#define O_DSYNC 0020 -+#define O_SYNC 040020 -+#define O_RSYNC 040020 -+#define O_DIRECTORY 0200000 -+#define O_NOFOLLOW 0400000 -+#define O_CLOEXEC 02000000 -+ -+#define O_ASYNC 010000 -+#define O_DIRECT 0100000 -+#define O_LARGEFILE 0 -+#define O_NOATIME 01000000 -+#define O_PATH 010000000 -+#define O_TMPFILE 020200000 -+#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 24 -+#define F_GETOWN 23 -+#define F_SETSIG 10 -+#define F_GETSIG 11 -+ -+#define F_GETLK 14 -+#define F_SETLK 6 -+#define F_SETLKW 7 -+ -+#define F_SETOWN_EX 15 -+#define F_GETOWN_EX 16 -+ -+#define F_GETOWNER_UIDS 17 ---- /dev/null -+++ b/arch/mips64/bits/fenv.h -@@ -0,0 +1,25 @@ -+#ifdef __mips_soft_float -+#define FE_ALL_EXCEPT 0 -+#define FE_TONEAREST 0 -+#else -+#define FE_INEXACT 4 -+#define FE_UNDERFLOW 8 -+#define FE_OVERFLOW 16 -+#define FE_DIVBYZERO 32 -+#define FE_INVALID 64 -+ -+#define FE_ALL_EXCEPT 124 -+ -+#define FE_TONEAREST 0 -+#define FE_TOWARDZERO 1 -+#define FE_UPWARD 2 -+#define FE_DOWNWARD 3 -+#endif -+ -+typedef unsigned short fexcept_t; -+ -+typedef struct { -+ unsigned __cw; -+} fenv_t; -+ -+#define FE_DFL_ENV ((const fenv_t *) -1) ---- /dev/null -+++ b/arch/mips64/bits/float.h -@@ -0,0 +1,16 @@ -+#define FLT_EVAL_METHOD 0 -+ -+#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L -+#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L -+#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L -+#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L -+ -+#define LDBL_MANT_DIG 113 -+#define LDBL_MIN_EXP (-16381) -+#define LDBL_MAX_EXP 16384 -+ -+#define LDBL_DIG 33 -+#define LDBL_MIN_10_EXP (-4931) -+#define LDBL_MAX_10_EXP 4932 -+ -+#define DECIMAL_DIG 36 ---- /dev/null -+++ b/arch/mips64/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_READ 2U -+#define _IOC_WRITE 4U -+ -+#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) -+#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c)) -+#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c)) -+#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(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 // Not sure about these. -+#define TCGETX 0x5432 // Not sure about these. -+#define TCSETX 0x5433 // Not sure about these. -+#define TCSETXF 0x5434 // Not sure about these. -+#define TCSETXW 0x5435 // 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 ---- /dev/null -+++ b/arch/mips64/bits/ipc.h -@@ -0,0 +1,15 @@ -+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; -+ int __pad1; -+ unsigned long __unused1; -+ unsigned long __unused2; -+}; -+ -+#define IPC_64 0x100 ---- /dev/null -+++ b/arch/mips64/bits/limits.h -@@ -0,0 +1,7 @@ -+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ -+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -+#define LONG_BIT 64 -+#endif -+ -+#define LONG_MAX 0x7fffffffffffffffL -+#define LLONG_MAX 0x7fffffffffffffffLL ---- /dev/null -+++ b/arch/mips64/bits/mman.h -@@ -0,0 +1,58 @@ -+#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 0x800 -+#define MAP_ANONYMOUS MAP_ANON -+#define MAP_NORESERVE 0x0400 -+#define MAP_GROWSDOWN 0x1000 -+#define MAP_DENYWRITE 0x2000 -+#define MAP_EXECUTABLE 0x4000 -+#define MAP_LOCKED 0x8000 -+#define MAP_POPULATE 0x10000 -+#define MAP_NONBLOCK 0x20000 -+#define MAP_STACK 0x40000 -+#define MAP_HUGETLB 0x80000 -+ -+#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 -+#define MCL_ONFAULT 4 -+ -+#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_DONTDUMP 16 -+#define MADV_DODUMP 17 -+#define MADV_HWPOISON 100 -+#endif ---- /dev/null -+++ b/arch/mips64/bits/msg.h -@@ -0,0 +1,14 @@ -+struct msqid_ds -+{ -+ struct ipc_perm msg_perm; -+ time_t msg_stime; -+ time_t msg_rtime; -+ time_t msg_ctime; -+ unsigned long msg_cbytes; -+ msgqnum_t msg_qnum; -+ msglen_t msg_qbytes; -+ pid_t msg_lspid; -+ pid_t msg_lrpid; -+ unsigned long __pad1; -+ unsigned long __pad2; -+}; ---- /dev/null -+++ b/arch/mips64/bits/poll.h -@@ -0,0 +1,2 @@ -+#define POLLWRNORM POLLOUT -+#define POLLWRBAND 0x100 ---- /dev/null -+++ b/arch/mips64/bits/posix.h -@@ -0,0 +1,2 @@ -+#define _POSIX_V6_LP64_OFFBIG 1 -+#define _POSIX_V7_LP64_OFFBIG 1 ---- /dev/null -+++ b/arch/mips64/bits/reg.h -@@ -0,0 +1,47 @@ -+#undef __WORDSIZE -+#define __WORDSIZE 64 -+ -+#define EF_R0 0 -+#define EF_R1 1 -+#define EF_R2 2 -+#define EF_R3 3 -+#define EF_R4 4 -+#define EF_R5 5 -+#define EF_R6 6 -+#define EF_R7 7 -+#define EF_R8 8 -+#define EF_R9 9 -+#define EF_R10 10 -+#define EF_R11 11 -+#define EF_R12 12 -+#define EF_R13 13 -+#define EF_R14 14 -+#define EF_R15 15 -+#define EF_R16 16 -+#define EF_R17 17 -+#define EF_R18 18 -+#define EF_R19 19 -+#define EF_R20 20 -+#define EF_R21 21 -+#define EF_R22 22 -+#define EF_R23 23 -+#define EF_R24 24 -+#define EF_R25 25 -+ -+#define EF_R26 26 -+#define EF_R27 27 -+#define EF_R28 28 -+#define EF_R29 29 -+#define EF_R30 30 -+#define EF_R31 31 -+ -+#define EF_LO 32 -+#define EF_HI 33 -+ -+#define EF_CP0_EPC 34 -+#define EF_CP0_BADVADDR 35 -+#define EF_CP0_STATUS 36 -+#define EF_CP0_CAUSE 37 -+#define EF_UNUSED0 38 -+ -+#define EF_SIZE 304 ---- /dev/null -+++ b/arch/mips64/bits/resource.h -@@ -0,0 +1,5 @@ -+#define RLIMIT_NOFILE 5 -+#define RLIMIT_AS 6 -+#define RLIMIT_RSS 7 -+#define RLIMIT_NPROC 8 -+#define RLIMIT_MEMLOCK 9 ---- /dev/null -+++ b/arch/mips64/bits/sem.h -@@ -0,0 +1,14 @@ -+struct semid_ds { -+ struct ipc_perm sem_perm; -+ time_t sem_otime; -+ time_t sem_ctime; -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+ unsigned short sem_nsems; -+ char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; -+#else -+ char __sem_nsems_pad[sizeof(time_t)-sizeof(short)]; -+ unsigned short sem_nsems; -+#endif -+ time_t __unused3; -+ time_t __unused4; -+}; ---- /dev/null -+++ b/arch/mips64/bits/setjmp.h -@@ -0,0 +1 @@ -+typedef unsigned long long __jmp_buf[25]; ---- /dev/null -+++ b/arch/mips64/bits/shm.h -@@ -0,0 +1,26 @@ -+#define SHMLBA 4096 -+ -+struct shmid_ds -+{ -+ struct ipc_perm shm_perm; -+ size_t shm_segsz; -+ time_t shm_atime; -+ time_t shm_dtime; -+ time_t shm_ctime; -+ pid_t shm_cpid; -+ pid_t shm_lpid; -+ unsigned long shm_nattch; -+ unsigned long __pad1; -+ unsigned long __pad2; -+}; -+ -+struct shminfo { -+ unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4]; -+}; -+ -+struct shm_info { -+ int __used_ids; -+ unsigned long shm_tot, shm_rss, shm_swp; -+ unsigned long __swap_attempts, __swap_successes; -+}; -+ ---- /dev/null -+++ b/arch/mips64/bits/signal.h -@@ -0,0 +1,143 @@ -+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ -+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -+ -+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -+#define MINSIGSTKSZ 2048 -+#define SIGSTKSZ 8192 -+#endif -+ -+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -+typedef unsigned long long greg_t, gregset_t[32]; -+typedef struct { -+ union { -+ double fp_dregs[32]; -+ struct { -+ float _fp_fregs; -+ unsigned _fp_pad; -+ } fp_fregs[32]; -+ } fp_r; -+} fpregset_t; -+struct sigcontext -+{ -+ unsigned long long sc_regs[32]; -+ unsigned long long sc_fpregs[32]; -+ unsigned long long sc_mdhi; -+ unsigned long long sc_hi1; -+ unsigned long long sc_hi2; -+ unsigned long long sc_hi3; -+ unsigned long long sc_mdlo; -+ unsigned long long sc_lo1; -+ unsigned long long sc_lo2; -+ unsigned long long sc_lo3; -+ unsigned long long sc_pc; -+ unsigned int sc_fpc_csr; -+ unsigned int sc_used_math; -+ unsigned int sc_dsp; -+ unsigned int sc_reserved; -+}; -+typedef struct -+{ -+ gregset_t gregs; -+ fpregset_t fpregs; -+ greg_t mdhi; -+ greg_t hi1; -+ greg_t hi2; -+ greg_t hi3; -+ greg_t mdlo; -+ greg_t lo1; -+ greg_t lo2; -+ greg_t lo3; -+ greg_t pc; -+ unsigned int fpc_csr; -+ unsigned int used_math; -+ unsigned int dsp; -+ unsigned int reserved; -+} mcontext_t; -+ -+#else -+typedef struct { -+ unsigned __mc1[2]; -+ unsigned long long __mc2[65]; -+ unsigned __mc3[5]; -+ unsigned long long __mc4[2]; -+ unsigned __mc5[6]; -+} mcontext_t; -+#endif -+ -+struct sigaltstack { -+ void *ss_sp; -+ size_t ss_size; -+ int ss_flags; -+}; -+ -+typedef struct __ucontext { -+ unsigned long uc_flags; -+ struct __ucontext *uc_link; -+ stack_t uc_stack; -+ mcontext_t uc_mcontext; -+ sigset_t uc_sigmask; -+} ucontext_t; -+ -+#define SA_NOCLDSTOP 1 -+#define SA_NOCLDWAIT 0x10000 -+#define SA_SIGINFO 8 -+#define SA_ONSTACK 0x08000000 -+#define SA_RESTART 0x10000000 -+#define SA_NODEFER 0x40000000 -+#define SA_RESETHAND 0x80000000 -+#define SA_RESTORER 0x04000000 -+ -+#undef SIG_BLOCK -+#undef SIG_UNBLOCK -+#undef SIG_SETMASK -+#define SIG_BLOCK 1 -+#define SIG_UNBLOCK 2 -+#define SIG_SETMASK 3 -+ -+#undef SI_ASYNCIO -+#undef SI_MESGQ -+#undef SI_TIMER -+#define SI_ASYNCIO (-2) -+#define SI_MESGQ (-4) -+#define SI_TIMER (-3) -+ -+#define __SI_SWAP_ERRNO_CODE -+ -+#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 -+ -+#define _NSIG 128 ---- /dev/null -+++ b/arch/mips64/bits/socket.h -@@ -0,0 +1,72 @@ -+#include <endian.h> -+ -+struct msghdr -+{ -+ void *msg_name; -+ socklen_t msg_namelen; -+ struct iovec *msg_iov; -+#if __BYTE_ORDER == __BIG_ENDIAN -+ int __pad1, msg_iovlen; -+#else -+ int msg_iovlen, __pad1; -+#endif -+ void *msg_control; -+#if __BYTE_ORDER == __BIG_ENDIAN -+ int __pad2; -+ socklen_t msg_controllen; -+#else -+ socklen_t msg_controllen; -+ int __pad2; -+#endif -+ int msg_flags; -+}; -+ -+struct cmsghdr -+{ -+#if __BYTE_ORDER == __BIG_ENDIAN -+ int __pad1; -+ socklen_t cmsg_len; -+#else -+ socklen_t cmsg_len; -+ int __pad1; -+#endif -+ int cmsg_level; -+ int cmsg_type; -+}; -+ -+#define SOCK_STREAM 2 -+#define SOCK_DGRAM 1 -+ -+#define SOL_SOCKET 65535 -+ -+#define SO_DEBUG 1 -+ -+#define SO_REUSEADDR 0x0004 -+#define SO_KEEPALIVE 0x0008 -+#define SO_DONTROUTE 0x0010 -+#define SO_BROADCAST 0x0020 -+#define SO_LINGER 0x0080 -+#define SO_OOBINLINE 0x0100 -+#define SO_REUSEPORT 0x0200 -+#define SO_SNDBUF 0x1001 -+#define SO_RCVBUF 0x1002 -+#define SO_SNDLOWAT 0x1003 -+#define SO_RCVLOWAT 0x1004 -+#define SO_RCVTIMEO 0x1006 -+#define SO_SNDTIMEO 0x1005 -+#define SO_ERROR 0x1007 -+#define SO_TYPE 0x1008 -+#define SO_ACCEPTCONN 0x1009 -+#define SO_PROTOCOL 0x1028 -+#define SO_DOMAIN 0x1029 -+ -+#define SO_NO_CHECK 11 -+#define SO_PRIORITY 12 -+#define SO_BSDCOMPAT 14 -+#define SO_PASSCRED 17 -+#define SO_PEERCRED 18 -+#define SO_SNDBUFFORCE 31 -+#define SO_RCVBUFFORCE 33 -+ -+#define SOCK_NONBLOCK 0200 -+#define SOCK_CLOEXEC 02000000 ---- /dev/null -+++ b/arch/mips64/bits/stat.h -@@ -0,0 +1,25 @@ -+#include <string.h> -+ -+#include <bits/alltypes.h> -+ -+struct stat { -+ dev_t st_dev; -+ 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.*/ -+ dev_t st_rdev; /* Device number, if device. */ -+ unsigned int st_pad2[2]; -+ off_t st_size; /* Size of file, in bytes. */ -+ int st_pad3; -+ struct timespec st_atim; /* Time of last access. */ -+ struct timespec st_mtim; /* Time of last modification. */ -+ struct timespec st_ctim; /* Time of last status change. */ -+ blksize_t st_blksize; /* Optimal block size for I/O. */ -+ unsigned int st_pad4; -+ blkcnt_t st_blocks; /* Number of 512-byte blocks allocated. */ -+ int st_pad5[14]; -+}; -+ ---- /dev/null -+++ b/arch/mips64/bits/statfs.h -@@ -0,0 +1,8 @@ -+struct statfs { -+ unsigned long f_type, f_bsize, f_frsize; -+ fsblkcnt_t f_blocks, f_bfree; -+ fsfilcnt_t f_files, f_ffree; -+ fsblkcnt_t f_bavail; -+ fsid_t f_fsid; -+ unsigned long f_namelen, f_flags, f_spare[5]; -+}; ---- /dev/null -+++ b/arch/mips64/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) ---- /dev/null -+++ b/arch/mips64/bits/stdint.h -@@ -0,0 +1,20 @@ -+typedef int32_t int_fast16_t; -+typedef int32_t int_fast32_t; -+typedef uint32_t uint_fast16_t; -+typedef uint32_t uint_fast32_t; -+ -+#define INT_FAST16_MIN INT32_MIN -+#define INT_FAST32_MIN INT32_MIN -+ -+#define INT_FAST16_MAX INT32_MAX -+#define INT_FAST32_MAX INT32_MAX -+ -+#define UINT_FAST16_MAX UINT32_MAX -+#define UINT_FAST32_MAX UINT32_MAX -+ -+#define INTPTR_MIN INT64_MIN //size of pointer is 8 bytes .address is 64 bit -+#define INTPTR_MAX INT64_MAX -+#define UINTPTR_MAX UINT64_MAX -+#define PTRDIFF_MIN INT64_MIN -+#define PTRDIFF_MAX INT64_MAX -+#define SIZE_MAX UINT64_MAX ---- /dev/null -+++ b/arch/mips64/bits/syscall.h -@@ -0,0 +1,644 @@ -+/* -+ * Linux 64-bit syscalls are in the range from 5000 to 5999. -+ */ -+#define __NR_Linux 5000 -+#define __NR_read (__NR_Linux + 0) -+#define __NR_write (__NR_Linux + 1) -+#define __NR_open (__NR_Linux + 2) -+#define __NR_close (__NR_Linux + 3) -+#define __NR_stat (__NR_Linux + 4) -+#define __NR_fstat (__NR_Linux + 5) -+#define __NR_lstat (__NR_Linux + 6) -+#define __NR_poll (__NR_Linux + 7) -+#define __NR_lseek (__NR_Linux + 8) -+#define __NR_mmap (__NR_Linux + 9) -+#define __NR_mprotect (__NR_Linux + 10) -+#define __NR_munmap (__NR_Linux + 11) -+#define __NR_brk (__NR_Linux + 12) -+#define __NR_rt_sigaction (__NR_Linux + 13) -+#define __NR_rt_sigprocmask (__NR_Linux + 14) -+#define __NR_ioctl (__NR_Linux + 15) -+#define __NR_pread64 (__NR_Linux + 16) -+#define __NR_pwrite64 (__NR_Linux + 17) -+#define __NR_readv (__NR_Linux + 18) -+#define __NR_writev (__NR_Linux + 19) -+#define __NR_access (__NR_Linux + 20) -+#define __NR_pipe (__NR_Linux + 21) -+#define __NR__newselect (__NR_Linux + 22) -+#define __NR_sched_yield (__NR_Linux + 23) -+#define __NR_mremap (__NR_Linux + 24) -+#define __NR_msync (__NR_Linux + 25) -+#define __NR_mincore (__NR_Linux + 26) -+#define __NR_madvise (__NR_Linux + 27) -+#define __NR_shmget (__NR_Linux + 28) -+#define __NR_shmat (__NR_Linux + 29) -+#define __NR_shmctl (__NR_Linux + 30) -+#define __NR_dup (__NR_Linux + 31) -+#define __NR_dup2 (__NR_Linux + 32) -+#define __NR_pause (__NR_Linux + 33) -+#define __NR_nanosleep (__NR_Linux + 34) -+#define __NR_getitimer (__NR_Linux + 35) -+#define __NR_setitimer (__NR_Linux + 36) -+#define __NR_alarm (__NR_Linux + 37) -+#define __NR_getpid (__NR_Linux + 38) -+#define __NR_sendfile (__NR_Linux + 39) -+#define __NR_socket (__NR_Linux + 40) -+#define __NR_connect (__NR_Linux + 41) -+#define __NR_accept (__NR_Linux + 42) -+#define __NR_sendto (__NR_Linux + 43) -+#define __NR_recvfrom (__NR_Linux + 44) -+#define __NR_sendmsg (__NR_Linux + 45) -+#define __NR_recvmsg (__NR_Linux + 46) -+#define __NR_shutdown (__NR_Linux + 47) -+#define __NR_bind (__NR_Linux + 48) -+#define __NR_listen (__NR_Linux + 49) -+#define __NR_getsockname (__NR_Linux + 50) -+#define __NR_getpeername (__NR_Linux + 51) -+#define __NR_socketpair (__NR_Linux + 52) -+#define __NR_setsockopt (__NR_Linux + 53) -+#define __NR_getsockopt (__NR_Linux + 54) -+#define __NR_clone (__NR_Linux + 55) -+#define __NR_fork (__NR_Linux + 56) -+#define __NR_execve (__NR_Linux + 57) -+#define __NR_exit (__NR_Linux + 58) -+#define __NR_wait4 (__NR_Linux + 59) -+#define __NR_kill (__NR_Linux + 60) -+#define __NR_uname (__NR_Linux + 61) -+#define __NR_semget (__NR_Linux + 62) -+#define __NR_semop (__NR_Linux + 63) -+#define __NR_semctl (__NR_Linux + 64) -+#define __NR_shmdt (__NR_Linux + 65) -+#define __NR_msgget (__NR_Linux + 66) -+#define __NR_msgsnd (__NR_Linux + 67) -+#define __NR_msgrcv (__NR_Linux + 68) -+#define __NR_msgctl (__NR_Linux + 69) -+#define __NR_fcntl (__NR_Linux + 70) -+#define __NR_flock (__NR_Linux + 71) -+#define __NR_fsync (__NR_Linux + 72) -+#define __NR_fdatasync (__NR_Linux + 73) -+#define __NR_truncate (__NR_Linux + 74) -+#define __NR_ftruncate (__NR_Linux + 75) -+#define __NR_getdents (__NR_Linux + 76) -+#define __NR_getcwd (__NR_Linux + 77) -+#define __NR_chdir (__NR_Linux + 78) -+#define __NR_fchdir (__NR_Linux + 79) -+#define __NR_rename (__NR_Linux + 80) -+#define __NR_mkdir (__NR_Linux + 81) -+#define __NR_rmdir (__NR_Linux + 82) -+#define __NR_creat (__NR_Linux + 83) -+#define __NR_link (__NR_Linux + 84) -+#define __NR_unlink (__NR_Linux + 85) -+#define __NR_symlink (__NR_Linux + 86) -+#define __NR_readlink (__NR_Linux + 87) -+#define __NR_chmod (__NR_Linux + 88) -+#define __NR_fchmod (__NR_Linux + 89) -+#define __NR_chown (__NR_Linux + 90) -+#define __NR_fchown (__NR_Linux + 91) -+#define __NR_lchown (__NR_Linux + 92) -+#define __NR_umask (__NR_Linux + 93) -+#define __NR_gettimeofday (__NR_Linux + 94) -+#define __NR_getrlimit (__NR_Linux + 95) -+#define __NR_getrusage (__NR_Linux + 96) -+#define __NR_sysinfo (__NR_Linux + 97) -+#define __NR_times (__NR_Linux + 98) -+#define __NR_ptrace (__NR_Linux + 99) -+#define __NR_getuid (__NR_Linux + 100) -+#define __NR_syslog (__NR_Linux + 101) -+#define __NR_getgid (__NR_Linux + 102) -+#define __NR_setuid (__NR_Linux + 103) -+#define __NR_setgid (__NR_Linux + 104) -+#define __NR_geteuid (__NR_Linux + 105) -+#define __NR_getegid (__NR_Linux + 106) -+#define __NR_setpgid (__NR_Linux + 107) -+#define __NR_getppid (__NR_Linux + 108) -+#define __NR_getpgrp (__NR_Linux + 109) -+#define __NR_setsid (__NR_Linux + 110) -+#define __NR_setreuid (__NR_Linux + 111) -+#define __NR_setregid (__NR_Linux + 112) -+#define __NR_getgroups (__NR_Linux + 113) -+#define __NR_setgroups (__NR_Linux + 114) -+#define __NR_setresuid (__NR_Linux + 115) -+#define __NR_getresuid (__NR_Linux + 116) -+#define __NR_setresgid (__NR_Linux + 117) -+#define __NR_getresgid (__NR_Linux + 118) -+#define __NR_getpgid (__NR_Linux + 119) -+#define __NR_setfsuid (__NR_Linux + 120) -+#define __NR_setfsgid (__NR_Linux + 121) -+#define __NR_getsid (__NR_Linux + 122) -+#define __NR_capget (__NR_Linux + 123) -+#define __NR_capset (__NR_Linux + 124) -+#define __NR_rt_sigpending (__NR_Linux + 125) -+#define __NR_rt_sigtimedwait (__NR_Linux + 126) -+#define __NR_rt_sigqueueinfo (__NR_Linux + 127) -+#define __NR_rt_sigsuspend (__NR_Linux + 128) -+#define __NR_sigaltstack (__NR_Linux + 129) -+#define __NR_utime (__NR_Linux + 130) -+#define __NR_mknod (__NR_Linux + 131) -+#define __NR_personality (__NR_Linux + 132) -+#define __NR_ustat (__NR_Linux + 133) -+#define __NR_statfs (__NR_Linux + 134) -+#define __NR_fstatfs (__NR_Linux + 135) -+#define __NR_sysfs (__NR_Linux + 136) -+#define __NR_getpriority (__NR_Linux + 137) -+#define __NR_setpriority (__NR_Linux + 138) -+#define __NR_sched_setparam (__NR_Linux + 139) -+#define __NR_sched_getparam (__NR_Linux + 140) -+#define __NR_sched_setscheduler (__NR_Linux + 141) -+#define __NR_sched_getscheduler (__NR_Linux + 142) -+#define __NR_sched_get_priority_max (__NR_Linux + 143) -+#define __NR_sched_get_priority_min (__NR_Linux + 144) -+#define __NR_sched_rr_get_interval (__NR_Linux + 145) -+#define __NR_mlock (__NR_Linux + 146) -+#define __NR_munlock (__NR_Linux + 147) -+#define __NR_mlockall (__NR_Linux + 148) -+#define __NR_munlockall (__NR_Linux + 149) -+#define __NR_vhangup (__NR_Linux + 150) -+#define __NR_pivot_root (__NR_Linux + 151) -+#define __NR__sysctl (__NR_Linux + 152) -+#define __NR_prctl (__NR_Linux + 153) -+#define __NR_adjtimex (__NR_Linux + 154) -+#define __NR_setrlimit (__NR_Linux + 155) -+#define __NR_chroot (__NR_Linux + 156) -+#define __NR_sync (__NR_Linux + 157) -+#define __NR_acct (__NR_Linux + 158) -+#define __NR_settimeofday (__NR_Linux + 159) -+#define __NR_mount (__NR_Linux + 160) -+#define __NR_umount2 (__NR_Linux + 161) -+#define __NR_swapon (__NR_Linux + 162) -+#define __NR_swapoff (__NR_Linux + 163) -+#define __NR_reboot (__NR_Linux + 164) -+#define __NR_sethostname (__NR_Linux + 165) -+#define __NR_setdomainname (__NR_Linux + 166) -+#define __NR_create_module (__NR_Linux + 167) -+#define __NR_init_module (__NR_Linux + 168) -+#define __NR_delete_module (__NR_Linux + 169) -+#define __NR_get_kernel_syms (__NR_Linux + 170) -+#define __NR_query_module (__NR_Linux + 171) -+#define __NR_quotactl (__NR_Linux + 172) -+#define __NR_nfsservctl (__NR_Linux + 173) -+#define __NR_getpmsg (__NR_Linux + 174) -+#define __NR_putpmsg (__NR_Linux + 175) -+#define __NR_afs_syscall (__NR_Linux + 176) -+#define __NR_reserved177 (__NR_Linux + 177) -+#define __NR_gettid (__NR_Linux + 178) -+#define __NR_readahead (__NR_Linux + 179) -+#define __NR_setxattr (__NR_Linux + 180) -+#define __NR_lsetxattr (__NR_Linux + 181) -+#define __NR_fsetxattr (__NR_Linux + 182) -+#define __NR_getxattr (__NR_Linux + 183) -+#define __NR_lgetxattr (__NR_Linux + 184) -+#define __NR_fgetxattr (__NR_Linux + 185) -+#define __NR_listxattr (__NR_Linux + 186) -+#define __NR_llistxattr (__NR_Linux + 187) -+#define __NR_flistxattr (__NR_Linux + 188) -+#define __NR_removexattr (__NR_Linux + 189) -+#define __NR_lremovexattr (__NR_Linux + 190) -+#define __NR_fremovexattr (__NR_Linux + 191) -+#define __NR_tkill (__NR_Linux + 192) -+#define __NR_reserved193 (__NR_Linux + 193) -+#define __NR_futex (__NR_Linux + 194) -+#define __NR_sched_setaffinity (__NR_Linux + 195) -+#define __NR_sched_getaffinity (__NR_Linux + 196) -+#define __NR_cacheflush (__NR_Linux + 197) -+#define __NR_cachectl (__NR_Linux + 198) -+#define __NR_sysmips (__NR_Linux + 199) -+#define __NR_io_setup (__NR_Linux + 200) -+#define __NR_io_destroy (__NR_Linux + 201) -+#define __NR_io_getevents (__NR_Linux + 202) -+#define __NR_io_submit (__NR_Linux + 203) -+#define __NR_io_cancel (__NR_Linux + 204) -+#define __NR_exit_group (__NR_Linux + 205) -+#define __NR_lookup_dcookie (__NR_Linux + 206) -+#define __NR_epoll_create (__NR_Linux + 207) -+#define __NR_epoll_ctl (__NR_Linux + 208) -+#define __NR_epoll_wait (__NR_Linux + 209) -+#define __NR_remap_file_pages (__NR_Linux + 210) -+#define __NR_rt_sigreturn (__NR_Linux + 211) -+#define __NR_set_tid_address (__NR_Linux + 212) -+#define __NR_restart_syscall (__NR_Linux + 213) -+#define __NR_semtimedop (__NR_Linux + 214) -+#define __NR_fadvise64 (__NR_Linux + 215) -+#define __NR_timer_create (__NR_Linux + 216) -+#define __NR_timer_settime (__NR_Linux + 217) -+#define __NR_timer_gettime (__NR_Linux + 218) -+#define __NR_timer_getoverrun (__NR_Linux + 219) -+#define __NR_timer_delete (__NR_Linux + 220) -+#define __NR_clock_settime (__NR_Linux + 221) -+#define __NR_clock_gettime (__NR_Linux + 222) -+#define __NR_clock_getres (__NR_Linux + 223) -+#define __NR_clock_nanosleep (__NR_Linux + 224) -+#define __NR_tgkill (__NR_Linux + 225) -+#define __NR_utimes (__NR_Linux + 226) -+#define __NR_mbind (__NR_Linux + 227) -+#define __NR_get_mempolicy (__NR_Linux + 228) -+#define __NR_set_mempolicy (__NR_Linux + 229) -+#define __NR_mq_open (__NR_Linux + 230) -+#define __NR_mq_unlink (__NR_Linux + 231) -+#define __NR_mq_timedsend (__NR_Linux + 232) -+#define __NR_mq_timedreceive (__NR_Linux + 233) -+#define __NR_mq_notify (__NR_Linux + 234) -+#define __NR_mq_getsetattr (__NR_Linux + 235) -+#define __NR_vserver (__NR_Linux + 236) -+#define __NR_waitid (__NR_Linux + 237) -+/* #define __NR_sys_setaltroot (__NR_Linux + 238) */ -+#define __NR_add_key (__NR_Linux + 239) -+#define __NR_request_key (__NR_Linux + 240) -+#define __NR_keyctl (__NR_Linux + 241) -+#define __NR_set_thread_area (__NR_Linux + 242) -+#define __NR_inotify_init (__NR_Linux + 243) -+#define __NR_inotify_add_watch (__NR_Linux + 244) -+#define __NR_inotify_rm_watch (__NR_Linux + 245) -+#define __NR_migrate_pages (__NR_Linux + 246) -+#define __NR_openat (__NR_Linux + 247) -+#define __NR_mkdirat (__NR_Linux + 248) -+#define __NR_mknodat (__NR_Linux + 249) -+#define __NR_fchownat (__NR_Linux + 250) -+#define __NR_futimesat (__NR_Linux + 251) -+#define __NR_newfstatat (__NR_Linux + 252) -+#define __NR_unlinkat (__NR_Linux + 253) -+#define __NR_renameat (__NR_Linux + 254) -+#define __NR_linkat (__NR_Linux + 255) -+#define __NR_symlinkat (__NR_Linux + 256) -+#define __NR_readlinkat (__NR_Linux + 257) -+#define __NR_fchmodat (__NR_Linux + 258) -+#define __NR_faccessat (__NR_Linux + 259) -+#define __NR_pselect6 (__NR_Linux + 260) -+#define __NR_ppoll (__NR_Linux + 261) -+#define __NR_unshare (__NR_Linux + 262) -+#define __NR_splice (__NR_Linux + 263) -+#define __NR_sync_file_range (__NR_Linux + 264) -+#define __NR_tee (__NR_Linux + 265) -+#define __NR_vmsplice (__NR_Linux + 266) -+#define __NR_move_pages (__NR_Linux + 267) -+#define __NR_set_robust_list (__NR_Linux + 268) -+#define __NR_get_robust_list (__NR_Linux + 269) -+#define __NR_kexec_load (__NR_Linux + 270) -+#define __NR_getcpu (__NR_Linux + 271) -+#define __NR_epoll_pwait (__NR_Linux + 272) -+#define __NR_ioprio_set (__NR_Linux + 273) -+#define __NR_ioprio_get (__NR_Linux + 274) -+#define __NR_utimensat (__NR_Linux + 275) -+#define __NR_signalfd (__NR_Linux + 276) -+#define __NR_timerfd (__NR_Linux + 277) -+#define __NR_eventfd (__NR_Linux + 278) -+#define __NR_fallocate (__NR_Linux + 279) -+#define __NR_timerfd_create (__NR_Linux + 280) -+#define __NR_timerfd_gettime (__NR_Linux + 281) -+#define __NR_timerfd_settime (__NR_Linux + 282) -+#define __NR_signalfd4 (__NR_Linux + 283) -+#define __NR_eventfd2 (__NR_Linux + 284) -+#define __NR_epoll_create1 (__NR_Linux + 285) -+#define __NR_dup3 (__NR_Linux + 286) -+#define __NR_pipe2 (__NR_Linux + 287) -+#define __NR_inotify_init1 (__NR_Linux + 288) -+#define __NR_preadv (__NR_Linux + 289) -+#define __NR_pwritev (__NR_Linux + 290) -+#define __NR_rt_tgsigqueueinfo (__NR_Linux + 291) -+#define __NR_perf_event_open (__NR_Linux + 292) -+#define __NR_accept4 (__NR_Linux + 293) -+#define __NR_recvmmsg (__NR_Linux + 294) -+#define __NR_fanotify_init (__NR_Linux + 295) -+#define __NR_fanotify_mark (__NR_Linux + 296) -+#define __NR_prlimit64 (__NR_Linux + 297) -+#define __NR_name_to_handle_at (__NR_Linux + 298) -+#define __NR_open_by_handle_at (__NR_Linux + 299) -+#define __NR_clock_adjtime (__NR_Linux + 300) -+#define __NR_syncfs (__NR_Linux + 301) -+#define __NR_sendmmsg (__NR_Linux + 302) -+#define __NR_setns (__NR_Linux + 303) -+#define __NR_process_vm_readv (__NR_Linux + 304) -+#define __NR_process_vm_writev (__NR_Linux + 305) -+#define __NR_kcmp (__NR_Linux + 306) -+#define __NR_finit_module (__NR_Linux + 307) -+#define __NR_getdents64 (__NR_Linux + 308) -+#define __NR_sched_setattr (__NR_Linux + 309) -+#define __NR_sched_getattr (__NR_Linux + 310) -+#define __NR_renameat2 (__NR_Linux + 311) -+#define __NR_seccomp (__NR_Linux + 312) -+#define __NR_getrandom (__NR_Linux + 313) -+#define __NR_memfd_create (__NR_Linux + 314) -+#define __NR_bpf (__NR_Linux + 315) -+#define __NR_execveat (__NR_Linux + 316) -+ -+/* Repeated with SYS_ prefix */ -+#define SYS_Linux 5000 -+#define SYS_read (SYS_Linux + 0) -+#define SYS_write (SYS_Linux + 1) -+#define SYS_open (SYS_Linux + 2) -+#define SYS_close (SYS_Linux + 3) -+#define SYS_stat (SYS_Linux + 4) -+#define SYS_fstat (SYS_Linux + 5) -+#define SYS_lstat (SYS_Linux + 6) -+#define SYS_poll (SYS_Linux + 7) -+#define SYS_lseek (SYS_Linux + 8) -+#define SYS_mmap (SYS_Linux + 9) -+#define SYS_mprotect (SYS_Linux + 10) -+#define SYS_munmap (SYS_Linux + 11) -+#define SYS_brk (SYS_Linux + 12) -+#define SYS_rt_sigaction (SYS_Linux + 13) -+#define SYS_rt_sigprocmask (SYS_Linux + 14) -+#define SYS_ioctl (SYS_Linux + 15) -+#define SYS_pread64 (SYS_Linux + 16) -+#define SYS_pwrite64 (SYS_Linux + 17) -+#define SYS_readv (SYS_Linux + 18) -+#define SYS_writev (SYS_Linux + 19) -+#define SYS_access (SYS_Linux + 20) -+#define SYS_pipe (SYS_Linux + 21) -+#define SYS__newselect (SYS_Linux + 22) -+#define SYS_sched_yield (SYS_Linux + 23) -+#define SYS_mremap (SYS_Linux + 24) -+#define SYS_msync (SYS_Linux + 25) -+#define SYS_mincore (SYS_Linux + 26) -+#define SYS_madvise (SYS_Linux + 27) -+#define SYS_shmget (SYS_Linux + 28) -+#define SYS_shmat (SYS_Linux + 29) -+#define SYS_shmctl (SYS_Linux + 30) -+#define SYS_dup (SYS_Linux + 31) -+#define SYS_dup2 (SYS_Linux + 32) -+#define SYS_pause (SYS_Linux + 33) -+#define SYS_nanosleep (SYS_Linux + 34) -+#define SYS_getitimer (SYS_Linux + 35) -+#define SYS_setitimer (SYS_Linux + 36) -+#define SYS_alarm (SYS_Linux + 37) -+#define SYS_getpid (SYS_Linux + 38) -+#define SYS_sendfile (SYS_Linux + 39) -+#define SYS_socket (SYS_Linux + 40) -+#define SYS_connect (SYS_Linux + 41) -+#define SYS_accept (SYS_Linux + 42) -+#define SYS_sendto (SYS_Linux + 43) -+#define SYS_recvfrom (SYS_Linux + 44) -+#define SYS_sendmsg (SYS_Linux + 45) -+#define SYS_recvmsg (SYS_Linux + 46) -+#define SYS_shutdown (SYS_Linux + 47) -+#define SYS_bind (SYS_Linux + 48) -+#define SYS_listen (SYS_Linux + 49) -+#define SYS_getsockname (SYS_Linux + 50) -+#define SYS_getpeername (SYS_Linux + 51) -+#define SYS_socketpair (SYS_Linux + 52) -+#define SYS_setsockopt (SYS_Linux + 53) -+#define SYS_getsockopt (SYS_Linux + 54) -+#define SYS_clone (SYS_Linux + 55) -+#define SYS_fork (SYS_Linux + 56) -+#define SYS_execve (SYS_Linux + 57) -+#define SYS_exit (SYS_Linux + 58) -+#define SYS_wait4 (SYS_Linux + 59) -+#define SYS_kill (SYS_Linux + 60) -+#define SYS_uname (SYS_Linux + 61) -+#define SYS_semget (SYS_Linux + 62) -+#define SYS_semop (SYS_Linux + 63) -+#define SYS_semctl (SYS_Linux + 64) -+#define SYS_shmdt (SYS_Linux + 65) -+#define SYS_msgget (SYS_Linux + 66) -+#define SYS_msgsnd (SYS_Linux + 67) -+#define SYS_msgrcv (SYS_Linux + 68) -+#define SYS_msgctl (SYS_Linux + 69) -+#define SYS_fcntl (SYS_Linux + 70) -+#define SYS_flock (SYS_Linux + 71) -+#define SYS_fsync (SYS_Linux + 72) -+#define SYS_fdatasync (SYS_Linux + 73) -+#define SYS_truncate (SYS_Linux + 74) -+#define SYS_ftruncate (SYS_Linux + 75) -+#define SYS_getdents (SYS_Linux + 76) -+#define SYS_getcwd (SYS_Linux + 77) -+#define SYS_chdir (SYS_Linux + 78) -+#define SYS_fchdir (SYS_Linux + 79) -+#define SYS_rename (SYS_Linux + 80) -+#define SYS_mkdir (SYS_Linux + 81) -+#define SYS_rmdir (SYS_Linux + 82) -+#define SYS_creat (SYS_Linux + 83) -+#define SYS_link (SYS_Linux + 84) -+#define SYS_unlink (SYS_Linux + 85) -+#define SYS_symlink (SYS_Linux + 86) -+#define SYS_readlink (SYS_Linux + 87) -+#define SYS_chmod (SYS_Linux + 88) -+#define SYS_fchmod (SYS_Linux + 89) -+#define SYS_chown (SYS_Linux + 90) -+#define SYS_fchown (SYS_Linux + 91) -+#define SYS_lchown (SYS_Linux + 92) -+#define SYS_umask (SYS_Linux + 93) -+#define SYS_gettimeofday (SYS_Linux + 94) -+#define SYS_getrlimit (SYS_Linux + 95) -+#define SYS_getrusage (SYS_Linux + 96) -+#define SYS_sysinfo (SYS_Linux + 97) -+#define SYS_times (SYS_Linux + 98) -+#define SYS_ptrace (SYS_Linux + 99) -+#define SYS_getuid (SYS_Linux + 100) -+#define SYS_syslog (SYS_Linux + 101) -+#define SYS_getgid (SYS_Linux + 102) -+#define SYS_setuid (SYS_Linux + 103) -+#define SYS_setgid (SYS_Linux + 104) -+#define SYS_geteuid (SYS_Linux + 105) -+#define SYS_getegid (SYS_Linux + 106) -+#define SYS_setpgid (SYS_Linux + 107) -+#define SYS_getppid (SYS_Linux + 108) -+#define SYS_getpgrp (SYS_Linux + 109) -+#define SYS_setsid (SYS_Linux + 110) -+#define SYS_setreuid (SYS_Linux + 111) -+#define SYS_setregid (SYS_Linux + 112) -+#define SYS_getgroups (SYS_Linux + 113) -+#define SYS_setgroups (SYS_Linux + 114) -+#define SYS_setresuid (SYS_Linux + 115) -+#define SYS_getresuid (SYS_Linux + 116) -+#define SYS_setresgid (SYS_Linux + 117) -+#define SYS_getresgid (SYS_Linux + 118) -+#define SYS_getpgid (SYS_Linux + 119) -+#define SYS_setfsuid (SYS_Linux + 120) -+#define SYS_setfsgid (SYS_Linux + 121) -+#define SYS_getsid (SYS_Linux + 122) -+#define SYS_capget (SYS_Linux + 123) -+#define SYS_capset (SYS_Linux + 124) -+#define SYS_rt_sigpending (SYS_Linux + 125) -+#define SYS_rt_sigtimedwait (SYS_Linux + 126) -+#define SYS_rt_sigqueueinfo (SYS_Linux + 127) -+#define SYS_rt_sigsuspend (SYS_Linux + 128) -+#define SYS_sigaltstack (SYS_Linux + 129) -+#define SYS_utime (SYS_Linux + 130) -+#define SYS_mknod (SYS_Linux + 131) -+#define SYS_personality (SYS_Linux + 132) -+#define SYS_ustat (SYS_Linux + 133) -+#define SYS_statfs (SYS_Linux + 134) -+#define SYS_fstatfs (SYS_Linux + 135) -+#define SYS_sysfs (SYS_Linux + 136) -+#define SYS_getpriority (SYS_Linux + 137) -+#define SYS_setpriority (SYS_Linux + 138) -+#define SYS_sched_setparam (SYS_Linux + 139) -+#define SYS_sched_getparam (SYS_Linux + 140) -+#define SYS_sched_setscheduler (SYS_Linux + 141) -+#define SYS_sched_getscheduler (SYS_Linux + 142) -+#define SYS_sched_get_priority_max (SYS_Linux + 143) -+#define SYS_sched_get_priority_min (SYS_Linux + 144) -+#define SYS_sched_rr_get_interval (SYS_Linux + 145) -+#define SYS_mlock (SYS_Linux + 146) -+#define SYS_munlock (SYS_Linux + 147) -+#define SYS_mlockall (SYS_Linux + 148) -+#define SYS_munlockall (SYS_Linux + 149) -+#define SYS_vhangup (SYS_Linux + 150) -+#define SYS_pivot_root (SYS_Linux + 151) -+#define SYS__sysctl (SYS_Linux + 152) -+#define SYS_prctl (SYS_Linux + 153) -+#define SYS_adjtimex (SYS_Linux + 154) -+#define SYS_setrlimit (SYS_Linux + 155) -+#define SYS_chroot (SYS_Linux + 156) -+#define SYS_sync (SYS_Linux + 157) -+#define SYS_acct (SYS_Linux + 158) -+#define SYS_settimeofday (SYS_Linux + 159) -+#define SYS_mount (SYS_Linux + 160) -+#define SYS_umount2 (SYS_Linux + 161) -+#define SYS_swapon (SYS_Linux + 162) -+#define SYS_swapoff (SYS_Linux + 163) -+#define SYS_reboot (SYS_Linux + 164) -+#define SYS_sethostname (SYS_Linux + 165) -+#define SYS_setdomainname (SYS_Linux + 166) -+#define SYS_create_module (SYS_Linux + 167) -+#define SYS_init_module (SYS_Linux + 168) -+#define SYS_delete_module (SYS_Linux + 169) -+#define SYS_get_kernel_syms (SYS_Linux + 170) -+#define SYS_query_module (SYS_Linux + 171) -+#define SYS_quotactl (SYS_Linux + 172) -+#define SYS_nfsservctl (SYS_Linux + 173) -+#define SYS_getpmsg (SYS_Linux + 174) -+#define SYS_putpmsg (SYS_Linux + 175) -+#define SYS_afs_syscall (SYS_Linux + 176) -+#define SYS_reserved177 (SYS_Linux + 177) -+#define SYS_gettid (SYS_Linux + 178) -+#define SYS_readahead (SYS_Linux + 179) -+#define SYS_setxattr (SYS_Linux + 180) -+#define SYS_lsetxattr (SYS_Linux + 181) -+#define SYS_fsetxattr (SYS_Linux + 182) -+#define SYS_getxattr (SYS_Linux + 183) -+#define SYS_lgetxattr (SYS_Linux + 184) -+#define SYS_fgetxattr (SYS_Linux + 185) -+#define SYS_listxattr (SYS_Linux + 186) -+#define SYS_llistxattr (SYS_Linux + 187) -+#define SYS_flistxattr (SYS_Linux + 188) -+#define SYS_removexattr (SYS_Linux + 189) -+#define SYS_lremovexattr (SYS_Linux + 190) -+#define SYS_fremovexattr (SYS_Linux + 191) -+#define SYS_tkill (SYS_Linux + 192) -+#define SYS_reserved193 (SYS_Linux + 193) -+#define SYS_futex (SYS_Linux + 194) -+#define SYS_sched_setaffinity (SYS_Linux + 195) -+#define SYS_sched_getaffinity (SYS_Linux + 196) -+#define SYS_cacheflush (SYS_Linux + 197) -+#define SYS_cachectl (SYS_Linux + 198) -+#define SYS_sysmips (SYS_Linux + 199) -+#define SYS_io_setup (SYS_Linux + 200) -+#define SYS_io_destroy (SYS_Linux + 201) -+#define SYS_io_getevents (SYS_Linux + 202) -+#define SYS_io_submit (SYS_Linux + 203) -+#define SYS_io_cancel (SYS_Linux + 204) -+#define SYS_exit_group (SYS_Linux + 205) -+#define SYS_lookup_dcookie (SYS_Linux + 206) -+#define SYS_epoll_create (SYS_Linux + 207) -+#define SYS_epoll_ctl (SYS_Linux + 208) -+#define SYS_epoll_wait (SYS_Linux + 209) -+#define SYS_remap_file_pages (SYS_Linux + 210) -+#define SYS_rt_sigreturn (SYS_Linux + 211) -+#define SYS_set_tid_address (SYS_Linux + 212) -+#define SYS_restart_syscall (SYS_Linux + 213) -+#define SYS_semtimedop (SYS_Linux + 214) -+#define SYS_fadvise64 (SYS_Linux + 215) -+#define SYS_timer_create (SYS_Linux + 216) -+#define SYS_timer_settime (SYS_Linux + 217) -+#define SYS_timer_gettime (SYS_Linux + 218) -+#define SYS_timer_getoverrun (SYS_Linux + 219) -+#define SYS_timer_delete (SYS_Linux + 220) -+#define SYS_clock_settime (SYS_Linux + 221) -+#define SYS_clock_gettime (SYS_Linux + 222) -+#define SYS_clock_getres (SYS_Linux + 223) -+#define SYS_clock_nanosleep (SYS_Linux + 224) -+#define SYS_tgkill (SYS_Linux + 225) -+#define SYS_utimes (SYS_Linux + 226) -+#define SYS_mbind (SYS_Linux + 227) -+#define SYS_get_mempolicy (SYS_Linux + 228) -+#define SYS_set_mempolicy (SYS_Linux + 229) -+#define SYS_mq_open (SYS_Linux + 230) -+#define SYS_mq_unlink (SYS_Linux + 231) -+#define SYS_mq_timedsend (SYS_Linux + 232) -+#define SYS_mq_timedreceive (SYS_Linux + 233) -+#define SYS_mq_notify (SYS_Linux + 234) -+#define SYS_mq_getsetattr (SYS_Linux + 235) -+#define SYS_vserver (SYS_Linux + 236) -+#define SYS_waitid (SYS_Linux + 237) -+/* #define SYS_sys_setaltroot (SYS_Linux + 238) */ -+#define SYS_add_key (SYS_Linux + 239) -+#define SYS_request_key (SYS_Linux + 240) -+#define SYS_keyctl (SYS_Linux + 241) -+#define SYS_set_thread_area (SYS_Linux + 242) -+#define SYS_inotify_init (SYS_Linux + 243) -+#define SYS_inotify_add_watch (SYS_Linux + 244) -+#define SYS_inotify_rm_watch (SYS_Linux + 245) -+#define SYS_migrate_pages (SYS_Linux + 246) -+#define SYS_openat (SYS_Linux + 247) -+#define SYS_mkdirat (SYS_Linux + 248) -+#define SYS_mknodat (SYS_Linux + 249) -+#define SYS_fchownat (SYS_Linux + 250) -+#define SYS_futimesat (SYS_Linux + 251) -+#define SYS_newfstatat (SYS_Linux + 252) -+#define SYS_unlinkat (SYS_Linux + 253) -+#define SYS_renameat (SYS_Linux + 254) -+#define SYS_linkat (SYS_Linux + 255) -+#define SYS_symlinkat (SYS_Linux + 256) -+#define SYS_readlinkat (SYS_Linux + 257) -+#define SYS_fchmodat (SYS_Linux + 258) -+#define SYS_faccessat (SYS_Linux + 259) -+#define SYS_pselect6 (SYS_Linux + 260) -+#define SYS_ppoll (SYS_Linux + 261) -+#define SYS_unshare (SYS_Linux + 262) -+#define SYS_splice (SYS_Linux + 263) -+#define SYS_sync_file_range (SYS_Linux + 264) -+#define SYS_tee (SYS_Linux + 265) -+#define SYS_vmsplice (SYS_Linux + 266) -+#define SYS_move_pages (SYS_Linux + 267) -+#define SYS_set_robust_list (SYS_Linux + 268) -+#define SYS_get_robust_list (SYS_Linux + 269) -+#define SYS_kexec_load (SYS_Linux + 270) -+#define SYS_getcpu (SYS_Linux + 271) -+#define SYS_epoll_pwait (SYS_Linux + 272) -+#define SYS_ioprio_set (SYS_Linux + 273) -+#define SYS_ioprio_get (SYS_Linux + 274) -+#define SYS_utimensat (SYS_Linux + 275) -+#define SYS_signalfd (SYS_Linux + 276) -+#define SYS_timerfd (SYS_Linux + 277) -+#define SYS_eventfd (SYS_Linux + 278) -+#define SYS_fallocate (SYS_Linux + 279) -+#define SYS_timerfd_create (SYS_Linux + 280) -+#define SYS_timerfd_gettime (SYS_Linux + 281) -+#define SYS_timerfd_settime (SYS_Linux + 282) -+#define SYS_signalfd4 (SYS_Linux + 283) -+#define SYS_eventfd2 (SYS_Linux + 284) -+#define SYS_epoll_create1 (SYS_Linux + 285) -+#define SYS_dup3 (SYS_Linux + 286) -+#define SYS_pipe2 (SYS_Linux + 287) -+#define SYS_inotify_init1 (SYS_Linux + 288) -+#define SYS_preadv (SYS_Linux + 289) -+#define SYS_pwritev (SYS_Linux + 290) -+#define SYS_rt_tgsigqueueinfo (SYS_Linux + 291) -+#define SYS_perf_event_open (SYS_Linux + 292) -+#define SYS_accept4 (SYS_Linux + 293) -+#define SYS_recvmmsg (SYS_Linux + 294) -+#define SYS_fanotify_init (SYS_Linux + 295) -+#define SYS_fanotify_mark (SYS_Linux + 296) -+#define SYS_prlimit64 (SYS_Linux + 297) -+#define SYS_name_to_handle_at (SYS_Linux + 298) -+#define SYS_open_by_handle_at (SYS_Linux + 299) -+#define SYS_clock_adjtime (SYS_Linux + 300) -+#define SYS_syncfs (SYS_Linux + 301) -+#define SYS_sendmmsg (SYS_Linux + 302) -+#define SYS_setns (SYS_Linux + 303) -+#define SYS_process_vm_readv (SYS_Linux + 304) -+#define SYS_process_vm_writev (SYS_Linux + 305) -+#define SYS_kcmp (SYS_Linux + 306) -+#define SYS_finit_module (SYS_Linux + 307) -+#define SYS_getdents64 (SYS_Linux + 308) -+#define SYS_sched_setattr (SYS_Linux + 309) -+#define SYS_sched_getattr (SYS_Linux + 310) -+#define SYS_renameat2 (SYS_Linux + 311) -+#define SYS_seccomp (SYS_Linux + 312) -+#define SYS_getrandom (SYS_Linux + 313) -+#define SYS_memfd_create (SYS_Linux + 314) -+#define SYS_bpf (SYS_Linux + 315) -+#define SYS_execveat (SYS_Linux + 316) -+ -+ -+ ---- /dev/null -+++ b/arch/mips64/bits/termios.h -@@ -0,0 +1,167 @@ -+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]; -+}; -+ -+#define VINTR 0 -+#define VQUIT 1 -+#define VERASE 2 -+#define VKILL 3 -+#define VMIN 4 -+#define VTIME 5 -+#define VEOL2 6 -+#define VSWTC 7 -+#define VSWTCH 7 -+#define VSTART 8 -+#define VSTOP 9 -+#define VSUSP 10 -+#define VREPRINT 12 -+#define VDISCARD 13 -+#define VWERASE 14 -+#define VLNEXT 15 -+#define VEOF 16 -+#define VEOL 17 -+ -+#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 IUTF8 0040000 -+ -+#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 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 EXTA 0000016 -+#define EXTB 0000017 -+ -+#define BOTHER 0010000 -+#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 ISIG 0000001 -+#define ICANON 0000002 -+#define XCASE 0000004 -+#define ECHO 0000010 -+#define ECHOE 0000020 -+#define ECHOK 0000040 -+#define ECHONL 0000100 -+#define NOFLSH 0000200 -+#define IEXTEN 0000400 -+#define ECHOCTL 0001000 -+#define ECHOPRT 0002000 -+#define ECHOKE 0004000 -+#define FLUSHO 0020000 -+#define PENDIN 0040000 -+#define TOSTOP 0100000 -+#define ITOSTOP 0100000 -+ -+#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 -+ -+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -+#define CBAUDEX 0010000 -+#define CIBAUD 002003600000 -+#define IBSHIFT 16 -+#define CMSPAR 010000000000 -+#define CRTSCTS 020000000000 -+#define EXTPROC 0200000 -+#define XTABS 0014000 -+#define TIOCSER_TEMT 1 -+#endif ---- /dev/null -+++ b/arch/mips64/bits/user.h -@@ -0,0 +1,13 @@ -+struct user { -+ unsigned long regs[38+64]; -+ unsigned long u_tsize, u_dsize, u_ssize; -+ unsigned long long start_code, start_data, start_stack; -+ long long signal; -+ unsigned long long *u_ar0; -+ unsigned long long magic; -+ char u_comm[32]; -+}; -+#define ELF_NGREG 45 -+#define ELF_NFPREG 33 -+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; -+typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG]; ---- /dev/null -+++ b/arch/mips64/crt_arch.h -@@ -0,0 +1,33 @@ -+__asm__( -+".set push\n" -+".set noreorder\n" -+".text \n" -+".global _" START "\n" -+".global " START "\n" -+".global " START "_data\n" -+".type _" START ", @function\n" -+".type " START ", @function\n" -+".type " START "_data, @function\n" -+"_" START ":\n" -+"" START ":\n" -+".align 8 \n" -+" bal 1f \n" -+" move $fp, $0 \n" -+"" START "_data: \n" -+" .gpdword " START "_data \n" -+" .gpdword " START "_c \n" -+".weak _DYNAMIC \n" -+".hidden _DYNAMIC \n" -+" .gpdword _DYNAMIC \n" -+"1: ld $gp, 0($ra) \n" -+" dsubu $gp, $ra, $gp \n" -+" move $4, $sp \n" -+" ld $5, 16($ra) \n" -+" daddu $5, $5, $gp \n" -+" ld $25, 8($ra) \n" -+" daddu $25, $25, $gp \n" -+" and $sp, $sp, -16 \n" -+" jalr $25 \n" -+" nop \n" -+".set pop \n" -+); ---- /dev/null -+++ b/arch/mips64/ksigaction.h -@@ -0,0 +1,11 @@ -+struct k_sigaction { -+ unsigned flags; -+ void (*handler)(int); -+ unsigned long mask[2]; /*mask [128/(sizeof(long)*8)] -+ /* The following field is past the end of the structure the -+ * kernel will read or write, and exists only to avoid having -+ * mips-specific preprocessor conditionals in sigaction.c. */ -+ void (*restorer)(); -+}; -+ -+void __restore(), __restore_rt(); ---- /dev/null -+++ b/arch/mips64/pthread_arch.h -@@ -0,0 +1,18 @@ -+static inline struct pthread *__pthread_self() -+{ -+#ifdef __clang__ -+ char *tp; -+ __asm__ __volatile__ (".word 0x7c03e83b ; move %0, $3" : "=r" (tp) : : "$3" ); -+#else -+ register char *tp __asm__("$3"); -+ __asm__ __volatile__ (".word 0x7c03e83b" : "=r" (tp) ); -+#endif -+ return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); -+} -+ -+#define TLS_ABOVE_TP -+#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) -+ -+#define DTP_OFFSET 0x8000 -+ -+#define MC_PC pc ---- /dev/null -+++ b/arch/mips64/reloc.h -@@ -0,0 +1,52 @@ -+#ifndef __RELOC_H__ -+#define __RELOC_H__ -+ -+#include <endian.h> -+ -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+#define ENDIAN_SUFFIX "el" -+#else -+#define ENDIAN_SUFFIX "" -+#endif -+ -+#ifdef __mips_soft_float -+#define FP_SUFFIX "-sf" -+#else -+#define FP_SUFFIX "" -+#endif -+ -+#define LDSO_ARCH "mips64" ENDIAN_SUFFIX FP_SUFFIX -+ -+#define TPOFF_K (-0x7000) -+ -+#define REL_SYM_OR_REL 4611 /* (R_MIPS_64 << 8) | R_MIPS_REL32 */ -+#define REL_PLT R_MIPS_JUMP_SLOT -+#define REL_COPY R_MIPS_COPY -+#define REL_DTPMOD R_MIPS_TLS_DTPMOD64 -+#define REL_DTPOFF R_MIPS_TLS_DTPREL64 -+#define REL_TPOFF R_MIPS_TLS_TPREL64 -+ -+#define NEED_MIPS_GOT_RELOCS 1 -+#define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP -+#define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT)) -+ -+#define CRTJMP(pc,sp) __asm__ __volatile__( \ -+ "move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) -+ -+#define GETFUNCSYM(fp, sym, got) __asm__ ( \ -+ ".hidden " #sym "\n" \ -+ ".set push \n" \ -+ ".set noreorder \n" \ -+ ".align 8 \n" \ -+ " bal 1f \n" \ -+ " nop \n" \ -+ " .gpdword . \n" \ -+ " .gpdword " #sym " \n" \ -+ "1: ld %0, ($ra) \n" \ -+ " dsubu %0, $ra, %0 \n" \ -+ " ld $ra, 8($ra) \n" \ -+ " daddu %0, %0, $ra \n" \ -+ ".set pop \n" \ -+ : "=r"(*(fp)) : : "memory", "ra" ) -+ -+#endif ---- /dev/null -+++ b/arch/mips64/syscall_arch.h -@@ -0,0 +1,213 @@ -+#define __SYSCALL_LL_E(x) (x) -+#define __SYSCALL_LL_O(x) (x) -+ -+__attribute__((visibility("hidden"))) -+long (__syscall)(long, ...); -+ -+#define SYSCALL_RLIM_INFINITY (-1UL/2) -+ -+#include <sys/stat.h> -+struct kernel_stat { -+ unsigned int st_dev; -+ unsigned int __pad1[3]; -+ unsigned long long st_ino; -+ unsigned int st_mode; -+ unsigned int st_nlink; -+ int st_uid; -+ int st_gid; -+ unsigned int st_rdev; -+ unsigned int __pad2[3]; -+ long long st_size; -+ unsigned int st_atime_sec; -+ unsigned int st_atime_nsec; -+ unsigned int st_mtime_sec; -+ unsigned int st_mtime_nsec; -+ unsigned int st_ctime_sec; -+ unsigned int st_ctime_nsec; -+ unsigned int st_blksize; -+ unsigned int __pad3; -+ unsigned long long st_blocks; -+}; -+ -+static void __stat_fix(struct kernel_stat *kst, struct stat *st) -+{ -+ extern void *memset(void *s, int c, size_t n); -+ -+ st->st_dev = kst->st_dev; -+ memset (&st->st_pad1, 0, sizeof (st->st_pad1)); -+ st->st_ino = kst->st_ino; -+ st->st_mode = kst->st_mode; -+ st->st_nlink = kst->st_nlink; -+ st->st_uid = kst->st_uid; -+ st->st_gid = kst->st_gid; -+ st->st_rdev = kst->st_rdev; -+ memset (&st->st_pad2, 0, sizeof (st->st_pad2)); -+ st->st_size = kst->st_size; -+ st->st_pad3 = 0; -+ st->st_atim.tv_sec = kst->st_atime_sec; -+ st->st_atim.tv_nsec = kst->st_atime_nsec; -+ st->st_mtim.tv_sec = kst->st_mtime_sec; -+ st->st_mtim.tv_nsec = kst->st_mtime_nsec; -+ st->st_ctim.tv_sec = kst->st_ctime_sec; -+ st->st_ctim.tv_nsec = kst->st_ctime_nsec; -+ st->st_blksize = kst->st_blksize; -+ st->st_blocks = kst->st_blocks; -+ memset (&st->st_pad5, 0, sizeof (st->st_pad5)); -+ return; -+} -+ -+#ifndef __clang__ -+ -+static inline long __syscall0(long n) -+{ -+ register long r7 __asm__("$7"); -+ register long r2 __asm__("$2"); -+ __asm__ __volatile__ ( -+ "daddu $2,$0,%2 ; syscall" -+ : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7) -+ : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", -+ "$14", "$15", "$24", "$25", "hi", "lo", "memory"); -+ return r7 ? -r2 : r2; -+} -+ -+static inline long __syscall1(long n, long a) -+{ -+ register long r4 __asm__("$4") = a; -+ register long r7 __asm__("$7"); -+ register long r2 __asm__("$2"); -+ __asm__ __volatile__ ( -+ "daddu $2,$0,%2 ; syscall" -+ : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), -+ "r"(r4) -+ : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", -+ "$14", "$15", "$24", "$25", "hi", "lo", "memory"); -+ return r7 ? -r2 : r2; -+} -+ -+static inline long __syscall2(long n, long a, long b) -+{ -+ struct kernel_stat kst = {0,}; -+ long ret; -+ register long r4 __asm__("$4"); -+ register long r5 __asm__("$5"); -+ register long r7 __asm__("$7"); -+ register long r2 __asm__("$2"); -+ -+ r5 = b; -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ r5 = (long) &kst; -+ -+ r4 = a; -+ __asm__ __volatile__ ( -+ "daddu $2,$0,%2 ; syscall" -+ : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), -+ "r"(r4), "r"(r5) -+ : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", -+ "$14", "$15", "$24", "$25", "hi", "lo", "memory"); -+ -+ if (r7) return -r2; -+ ret = r2; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ __stat_fix(&kst, (struct stat *)b); -+ -+ return ret; -+} -+ -+static inline long __syscall3(long n, long a, long b, long c) -+{ -+ register long r4 __asm__("$4") = a; -+ register long r5 __asm__("$5") = b; -+ register long r6 __asm__("$6") = c; -+ register long r7 __asm__("$7"); -+ register long r2 __asm__("$2"); -+ __asm__ __volatile__ ( -+ "daddu $2,$0,%2 ; syscall" -+ : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), -+ "r"(r4), "r"(r5), "r"(r6) -+ : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", -+ "$14", "$15", "$24", "$25", "hi", "lo", "memory"); -+ return r7 ? -r2 : r2; -+} -+ -+static inline long __syscall4(long n, long a, long b, long c, long d) -+{ -+ register long r4 __asm__("$4") = a; -+ register long r5 __asm__("$5") = b; -+ register long r6 __asm__("$6") = c; -+ register long r7 __asm__("$7") = d; -+ register long r2 __asm__("$2"); -+ __asm__ __volatile__ ( -+ "daddu $2,$0,%2 ; syscall" -+ : "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7), -+ "r"(r4), "r"(r5), "r"(r6) -+ : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13", -+ "$14", "$15", "$24", "$25", "hi", "lo", "memory"); -+ return r7 ? -r2 : r2; -+} -+ -+#else -+ -+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) -+{ -+ long r2; -+ long old_b = b; -+ struct kernel_stat kst = {0,}; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ b = (long) &kst; -+ -+ r2 = (__syscall)(n, a, b); -+ -+ if (r2 > -4096UL) -+ return r2; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ __stat_fix(kst, old_b); -+ -+ return r2; -+} -+ -+static inline long __syscall3(long n, long a, long b, long c) -+{ -+ long r2 = (__syscall)(n, a, b, c); -+ if (r2 > -4096UL) return r2; -+ return r2; -+} -+ -+static inline long __syscall4(long n, long a, long b, long c, long d) -+{ -+ long r2 = (__syscall)(n, a, b, c, d); -+ if (r2 > -4096UL) return r2; -+ return r2; -+} -+ -+#endif -+ -+static inline long __syscall5(long n, long a, long b, long c, long d, long e) -+{ -+ long r2 = (__syscall)(n, a, b, c, d, e); -+ if (r2 > -4096UL) return r2; -+ return r2; -+} -+ -+static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) -+{ -+ long r2 = (__syscall)(n, a, b, c, d, e, f); -+ if (r2 > -4096UL) return r2; -+ return r2; -+} -+ -+#define VDSO_USEFUL -+#define VDSO_CGT_SYM "__vdso_clock_gettime" -+#define VDSO_CGT_VER "LINUX_2.6" ---- a/configure -+++ b/configure -@@ -299,7 +299,7 @@ printf "%s\n" "$target" - # - case "$target" in - # Catch these early to simplify matching for 32-bit archs --mips64*|powerpc64*) fail "$0: unsupported target \"$target\"" ;; -+powerpc64*) fail "$0: unsupported target \"$target\"" ;; - arm*) ARCH=arm ;; - aarch64*) ARCH=aarch64 ;; - i?86-nt32*) ARCH=nt32 ;; -@@ -307,6 +307,7 @@ i?86*) ARCH=i386 ;; - x86_64-x32*|x32*|x86_64*x32) ARCH=x32 ;; - x86_64-nt64*) ARCH=nt64 ;; - x86_64*) ARCH=x86_64 ;; -+mips64*) ARCH=mips64 ;; - mips*) ARCH=mips ;; - microblaze*) ARCH=microblaze ;; - or1k*) ARCH=or1k ;; -@@ -619,6 +620,11 @@ if test "$ARCH" = "powerpc" ; then - trycppif _SOFT_FLOAT "$t" && SUBARCH=${SUBARCH}-sf - fi - -+if test "$ARCH" = "mips64" ; then -+trycppif "_MIPSEL || __MIPSEL || __MIPSEL__" "$t" && SUBARCH=${SUBARCH}el -+trycppif __mips_soft_float "$t" && SUBARCH=${SUBARCH}-sf -+fi -+ - test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ - && SUBARCH=${SUBARCH}el - ---- /dev/null -+++ b/crt/mips64/crti.s -@@ -0,0 +1,17 @@ -+.set noreorder -+ -+.section .init -+.global _init -+.align 3 -+_init: -+ dsubu $sp, $sp, 32 -+ sd $gp, 16($sp) -+ sd $ra, 24($sp) -+ -+.section .fini -+.global _fini -+.align 3 -+_fini: -+ dsubu $sp, $sp, 32 -+ sd $gp, 16($sp) -+ sd $ra, 24($sp) ---- /dev/null -+++ b/crt/mips64/crtn.s -@@ -0,0 +1,13 @@ -+.set noreorder -+ -+.section .init -+ ld $gp,16($sp) -+ ld $ra,24($sp) -+ j $ra -+ daddu $sp,$sp,32 -+ -+.section .fini -+ ld $gp,16($sp) -+ ld $ra,24($sp) -+ j $ra -+ daddu $sp,$sp,32 ---- a/ldso/dynlink.c -+++ b/ldso/dynlink.c -@@ -1134,7 +1134,7 @@ static void do_mips_relocs(struct dso *p - Sym *sym = p->syms + j; - rel[0] = (unsigned char *)got - base; - for (i-=j; i; i--, sym++, rel[0]+=sizeof(size_t)) { -- rel[1] = sym-p->syms << 8 | R_MIPS_JUMP_SLOT; -+ rel[1] = R_INFO(sym-p->syms, R_MIPS_JUMP_SLOT); - do_relocs(p, rel, sizeof rel, 2); - } - } ---- /dev/null -+++ b/src/fenv/mips64/fenv-sf.c -@@ -0,0 +1,3 @@ -+#ifdef __mips_soft_float -+#include "../fenv.c" -+#endif ---- /dev/null -+++ b/src/fenv/mips64/fenv.S -@@ -0,0 +1,71 @@ -+#ifndef __mips_soft_float -+ -+.set noreorder -+ -+.global feclearexcept -+.type feclearexcept,@function -+feclearexcept: -+ and $4, $4, 0x7c -+ cfc1 $5, $31 -+ or $5, $5, $4 -+ xor $5, $5, $4 -+ ctc1 $5, $31 -+ jr $ra -+ li $2, 0 -+ -+.global feraiseexcept -+.type feraiseexcept,@function -+feraiseexcept: -+ and $4, $4, 0x7c -+ cfc1 $5, $31 -+ or $5, $5, $4 -+ ctc1 $5, $31 -+ jr $ra -+ li $2, 0 -+ -+.global fetestexcept -+.type fetestexcept,@function -+fetestexcept: -+ and $4, $4, 0x7c -+ cfc1 $2, $31 -+ jr $ra -+ and $2, $2, $4 -+ -+.global fegetround -+.type fegetround,@function -+fegetround: -+ cfc1 $2, $31 -+ jr $ra -+ andi $2, $2, 3 -+ -+.global __fesetround -+.type __fesetround,@function -+__fesetround: -+ cfc1 $5, $31 -+ li $6, -4 -+ and $5, $5, $6 -+ or $5, $5, $4 -+ ctc1 $5, $31 -+ jr $ra -+ li $2, 0 -+ -+.global fegetenv -+.type fegetenv,@function -+fegetenv: -+ cfc1 $5, $31 -+ sw $5, 0($4) -+ jr $ra -+ li $2, 0 -+ -+.global fesetenv -+.type fesetenv,@function -+fesetenv: -+ daddiu $5, $4, 1 -+ beq $5, $0, 1f -+ nop -+ lw $5, 0($4) -+1: ctc1 $5, $31 -+ jr $ra -+ li $2, 0 -+ -+#endif ---- a/src/internal/dynlink.h -+++ b/src/internal/dynlink.h -@@ -11,12 +11,25 @@ typedef Elf32_Phdr Phdr; - typedef Elf32_Sym Sym; - #define R_TYPE(x) ((x)&255) - #define R_SYM(x) ((x)>>8) -+#define R_INFO ELF32_R_INFO - #else - typedef Elf64_Ehdr Ehdr; - typedef Elf64_Phdr Phdr; - typedef Elf64_Sym Sym; - #define R_TYPE(x) ((x)&0x7fffffff) - #define R_SYM(x) ((x)>>32) -+#define R_INFO ELF64_R_INFO -+#endif -+ -+#ifdef __mips64 -+#define _GNU_SOURCE -+#include <endian.h> -+#undef R_TYPE -+#undef R_SYM -+#undef R_INFO -+#define R_TYPE(x) (be64toh(x)&0x7fffffff) -+#define R_SYM(x) (be32toh(be64toh(x)>>32)) -+#define R_INFO(s,t) (htobe64((uint64_t)htobe32(s)<<32 | (uint64_t)t)) - #endif - - /* These enum constants provide unmatchable default values for ---- /dev/null -+++ b/src/internal/mips64/syscall.s -@@ -0,0 +1,20 @@ -+.set noreorder -+ -+.global __syscall -+.hidden __syscall -+.type __syscall,@function -+__syscall: -+ move $2, $4 -+ move $4, $5 -+ move $5, $6 -+ move $6, $7 -+ move $7, $8 -+ move $8, $9 -+ move $9, $10 -+ move $10, $11 -+ syscall -+ beq $7, $0, 1f -+ nop -+ dsubu $2, $0, $2 -+1: jr $ra -+ nop ---- /dev/null -+++ b/src/ldso/mips64/dlsym.s -@@ -0,0 +1,17 @@ -+.set noreorder -+.global dlsym -+.hidden __dlsym -+.type dlsym,@function -+dlsym: -+ lui $3, %hi(%neg(%gp_rel(dlsym))) -+ daddiu $3, $3, %lo(%neg(%gp_rel(dlsym))) -+ daddu $3, $3, $25 -+ move $6, $ra -+ ld $25, %got_disp(__dlsym)($3) -+ daddiu $sp, $sp, -32 -+ sd $ra, 24($sp) -+ jalr $25 -+ nop -+ ld $ra, 24($sp) -+ jr $ra -+ daddiu $sp, $sp, 32 ---- /dev/null -+++ b/src/setjmp/mips64/longjmp.S -@@ -0,0 +1,37 @@ -+.set noreorder -+ -+.global _longjmp -+.global longjmp -+.type _longjmp,@function -+.type longjmp,@function -+_longjmp: -+longjmp: -+ move $2, $5 -+ bne $2, $0, 1f # if return value is 0, make it as 1 else no changes made in $2 -+ nop -+ daddu $2, $2, 1 -+1: -+#ifndef __mips_soft_float -+ ldc1 $24, 96($4) -+ ldc1 $25, 104($4) -+ ldc1 $26, 112($4) -+ ldc1 $27, 120($4) -+ ldc1 $28, 128($4) -+ ldc1 $29, 136($4) -+ ldc1 $30, 144($4) -+ ldc1 $31, 152($4) -+#endif -+ ld $ra, 0($4) -+ ld $sp, 8($4) -+ ld $gp, 16($4) -+ ld $16, 24($4) -+ ld $17, 32($4) -+ ld $18, 40($4) -+ ld $19, 48($4) -+ ld $20, 56($4) -+ ld $21, 64($4) -+ ld $22, 72($4) -+ ld $23, 80($4) -+ ld $30, 88($4) -+ jr $ra -+ nop ---- /dev/null -+++ b/src/setjmp/mips64/setjmp.S -@@ -0,0 +1,34 @@ -+.set noreorder -+.global __setjmp -+.global _setjmp -+.global setjmp -+.type __setjmp,@function -+.type _setjmp,@function -+.type setjmp,@function -+__setjmp: -+_setjmp: -+setjmp: -+ sd $ra, 0($4) -+ sd $sp, 8($4) -+ sd $gp, 16($4) # $gp is callee save register -+ sd $16, 24($4) # saving gp callee save registers -+ sd $17, 32($4) -+ sd $18, 40($4) -+ sd $19, 48($4) -+ sd $20, 56($4) -+ sd $21, 64($4) -+ sd $22, 72($4) -+ sd $23, 80($4) -+ sd $30, 88($4) -+#ifndef __mips_soft_float -+ sdc1 $24, 96($4) # saving FP callee save registers -+ sdc1 $25, 104($4) -+ sdc1 $26, 112($4) -+ sdc1 $27, 120($4) -+ sdc1 $28, 128($4) -+ sdc1 $29, 136($4) -+ sdc1 $30, 144($4) -+ sdc1 $31, 152($4) -+#endif -+ jr $ra -+ li $2, 0 # making return value as zero ---- /dev/null -+++ b/src/signal/mips64/restore.s -@@ -0,0 +1,11 @@ -+# to return from signal handler and cleanup stack frame -+.set noreorder -+ -+.global __restore_rt -+.global __restore -+.type __restore_rt,@function -+.type __restore,@function -+__restore_rt: -+__restore: -+ li $2, 5211 # __NR_rt_sigreturn,n64 and n32 have rt_sigreturn -+ syscall ---- /dev/null -+++ b/src/signal/mips64/sigsetjmp.s -@@ -0,0 +1,40 @@ -+ .set noreorder -+ .global sigsetjmp -+ .global __sigsetjmp -+ .type sigsetjmp,@function -+ .type __sigsetjmp,@function -+sigsetjmp: -+__sigsetjmp: -+ lui $3, %hi(%neg(%gp_rel(sigsetjmp))) -+ daddiu $3, $3, %lo(%neg(%gp_rel(sigsetjmp))) -+ -+ # Comparing save mask with 0, if equals to 0 then -+ # sigsetjmp is equal to setjmp. -+ beq $5, $0, 1f -+ daddu $3, $3, $25 -+ -+ sd $ra, 168($4) -+ sd $16, 176($4) -+ -+ # save base of got so that we can use it later onec we return from 'longjmp' -+ sd $3, 184($4) -+ ld $25, %got_disp(setjmp)($3) -+ jalr $25 -+ # Move pointer-to-sigjmp_buf (i.e. $4) to $16 and save it at '24($4)' in 'setjmp' -+ # We have already saved $16 of sigsetjmp at 168($4). -+ move $16, $4 -+ -+ move $5, $2 # Return from 'setjmp' or 'longjmp' -+ move $4, $16 # Restore the pointer-to-sigjmp_buf -+ ld $ra, 168($4) # Restore ra of sigsetjmp -+ ld $16, 176($4) # Restore $16 of sigsetjmp -+ ld $3, 184($4) # Restore base of got -+ -+ .hidden __sigsetjmp_tail -+ ld $25, %got_disp(__sigsetjmp_tail)($3) -+ jr $25 -+ nop -+1: -+ ld $25, %got_disp(setjmp)($3) -+ jr $25 -+ nop ---- /dev/null -+++ b/src/thread/mips64/__unmapself.s -@@ -0,0 +1,10 @@ -+.set noreorder -+.global __unmapself -+.type __unmapself, @function -+__unmapself: -+ li $2, 5011 -+ syscall -+ li $4, 0 -+ li $2, 5058 -+ syscall -+ ---- /dev/null -+++ b/src/thread/mips64/clone.s -@@ -0,0 +1,29 @@ -+.set noreorder -+.global __clone -+.type __clone,@function -+__clone: -+ # Save function pointer and argument pointer on new thread stack -+ and $5, $5, -16 # aligning stack to double word -+ dsubu $5, $5, 16 -+ sd $4, 0($5) # save function pointer -+ sd $7, 8($5) # save argument pointer -+ # Shuffle (fn,sp,fl,arg,ptid,tls,ctid) to (fl,sp,ptid,tls,ctid) -+ # sys_clone(u64 flags, u64 ustack_base, u64 parent_tidptr, u64 child_tidptr, u64 tls) -+ move $4, $6 -+ move $6, $8 -+ move $7, $9 -+ move $8, $10 -+ li $2, 5055 # system call number of sys_clone for mips n64 ABI -+ syscall -+ beq $7, $0, 1f -+ nop # delay slot -+ jr $ra -+ dsubu $2, $0, $2 # delay slot -+1: beq $2, $0, 1f -+ nop # delay slot -+ jr $ra -+ nop # delay slot -+1: ld $25, 0($sp) # function pointer -+ ld $4, 8($sp) # argument pointer -+ jr $25 # call the user's function -+ nop ---- /dev/null -+++ b/src/thread/mips64/syscall_cp.s -@@ -0,0 +1,53 @@ -+.set noreorder -+ -+.global __cp_begin -+.hidden __cp_begin -+.type __cp_begin,@function -+.global __cp_end -+.hidden __cp_end -+.type __cp_end,@function -+.global __cp_cancel -+.hidden __cp_cancel -+.type __cp_cancel,@function -+.global __cp_cancel_data -+.hidden __cp_cancel_data -+.type __cp_cancel_data,@function -+.hidden __cancel -+.global __syscall_cp_asm -+.hidden __syscall_cp_asm -+.type __syscall_cp_asm,@function -+__syscall_cp_asm: -+__cp_begin: -+ lw $4, 0($4) -+ bne $4, $0, __cp_cancel # __syscall_cp_asm has 8 arguments and $4 will contain the -+ # cancellation flag and $5 is syscall number and passing remaining -+ # 6 arguments to _cancel system call -+ move $2, $5 -+ move $4, $6 -+ move $5, $7 -+ move $6, $8 -+ move $7, $9 -+ move $8, $10 -+ move $9, $11 -+ ld $10, 0($sp) -+ syscall -+__cp_end: -+ beq $7, $0, 1f # checking for summary overflow -+ nop -+ dsubu $2, $0, $2 -+1: jr $ra -+ nop -+__cp_cancel: # if cancellation flag is 1 then call __cancel -+ move $2, $ra -+.align 8 -+ bal 1f -+ nop -+__cp_cancel_data: -+ .gpdword __cp_cancel_data -+ .gpdword __cancel -+1: ld $3, ($ra) -+ dsubu $3, $ra, $3 -+ ld $25, 8($ra) -+ daddu $25, $25, $3 -+ jr $25 -+ move $ra, $2 ---- /dev/null -+++ b/src/unistd/mips64/pipe.s -@@ -0,0 +1,20 @@ -+.set noreorder -+ -+.global pipe -+.type pipe,@function -+pipe: -+ lui $3, %hi(%neg(%gp_rel(pipe))) #using temporary reg $3 as $gp -+ daddiu $3, $3, %lo(%neg(%gp_rel(pipe))) -+ daddu $3, $3, $25 -+ li $2, 5021 -+ syscall -+ beq $7, $0, 1f -+ nop -+ ld $25, %got_disp(__syscall_ret)($3) -+ jr $25 -+ dsubu $4, $0, $2 -+1: sw $2, 0($4) -+ sw $3, 4($4) -+ move $2, $0 -+ jr $ra -+ nop |