From: Hauke Mehrtens Date: Wed, 13 Jul 2016 10:24:34 +0000 (+0200) Subject: musl: update musl to version 1.1.15 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=9816d2f5f52ef54958a207c83840224749c0c4cb;p=openwrt%2Fstaging%2Frobimarko.git musl: update musl to version 1.1.15 The removed patch is already integrated in upstream musl. Add one additional patch which fixes a regression on mips. Signed-off-by: Hauke Mehrtens --- diff --git a/toolchain/musl/Config.version b/toolchain/musl/Config.version index caaf7f1f71..537f3d834b 100644 --- a/toolchain/musl/Config.version +++ b/toolchain/musl/Config.version @@ -3,6 +3,6 @@ if USE_MUSL config MUSL_VERSION string depends on USE_MUSL - default "1.1.14" + default "1.1.15" endif diff --git a/toolchain/musl/common.mk b/toolchain/musl/common.mk index 0f45aa3735..de00ea0434 100644 --- a/toolchain/musl/common.mk +++ b/toolchain/musl/common.mk @@ -11,7 +11,7 @@ PKG_NAME:=musl PKG_VERSION:=$(call qstrip,$(CONFIG_MUSL_VERSION)) PKG_RELEASE=1 -PKG_MD5SUM:=d529ce4a2f7f79d8c3fd4b8329417b57 +PKG_MD5SUM:=9590a9d47ee64f220b3c12f7afb864ca PKG_SOURCE_URL:=http://www.musl-libc.org/releases PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz diff --git a/toolchain/musl/patches/001-update-to-git-2016-03-06.patch b/toolchain/musl/patches/001-update-to-git-2016-03-06.patch deleted file mode 100644 index d74d816274..0000000000 --- a/toolchain/musl/patches/001-update-to-git-2016-03-06.patch +++ /dev/null @@ -1,3736 +0,0 @@ -commit 636a4799dd5bf11a1fcd209906c088ed948b821c -Author: Rich Felker -Date: Sun Mar 6 17:11:29 2016 -0500 - - make configure check for unsupported (SPE) powerpc hard-float models - - the SPE ABI may be compatible with soft-float, but actually making it - work requires some additional work, so for now it's best to make sure - broken builds don't happen. - -commit 5a92dd95c77cee81755f1a441ae0b71e3ae2bcdb -Author: Felix Fietkau -Date: Mon Jan 25 13:20:52 2016 +0100 - - add powerpc soft-float support - - Some PowerPC CPUs (e.g. Freescale MPC85xx) have a completely different - instruction set for floating point operations (SPE). - Executing regular PowerPC floating point instructions results in - "Illegal instruction" errors. - - Make it possible to run these devices in soft-float mode. - -commit 9543656cc32fda48fc463f332ee20e91eed2b768 -Author: Alexander Monakov -Date: Sun Mar 6 20:22:38 2016 +0300 - - env: avoid leaving dangling pointers in __env_map - - This is the minimal fix for __putenv leaving a pointer to freed heap - storage in __env_map array, which could later on lead to errors such - as double-free. - -commit 589aefa5b061647e8b9ad9bca3aaa8dc6222460a -Author: Rich Felker -Date: Sun Mar 6 17:48:58 2016 +0000 - - update documentation files for mips64 port - -commit 83933573aff71a5d178ab71912f177d2d844e63e -Author: Rich Felker -Date: Sun Mar 6 17:41:56 2016 +0000 - - add mips64 port - - patch by Mahesh Bodapati and Jaydeep Patil of Imagination - Technologies. - -commit 71392a91c333d47b6b3c8f99c897e3b5a7eb6d58 -Author: Rich Felker -Date: Sun Mar 6 17:25:52 2016 +0000 - - generalize mips-specific reloc code not to hard-code sym/type encoding - - this change is made in preparation for adding the mips64 port, which - needs a 64-bit (and mips64-specific) form of the R_INFO macro, but - it's a better abstraction anyway. - - based on part of the mips64 port patch by Mahesh Bodapati and Jaydeep - Patil of Imagination Technologies. - -commit b023c03b574acdfd73418314a5dcaa83e5cea5a0 -Author: Szabolcs Nagy -Date: Fri Mar 4 21:23:33 2016 +0000 - - math: fix expf(-NAN) and exp2f(-NAN) to return -NAN instead of 0 - - expf(-NAN) was treated as expf(-large) which unconditionally - returns +0, so special case +-NAN. - reported by Petr Hosek. - -commit db66ef1f7db7c5b672591a97a97bc789c9efe2f3 -Author: Nathan Zadoks -Date: Wed Mar 2 17:26:27 2016 +0100 - - add sched_getcpu vDSO support - - This brings the call to an actually usable speed. - Quick unscientific benchmark: 14ns : 102ns :: vDSO : syscall - -commit 98d335735d64ee34a34cb9c08ea2cb51a076d2a1 -Author: Nathan Zadoks -Date: Wed Mar 2 17:26:26 2016 +0100 - - add sched_getcpu - - This is a GNU extension, but a fairly minor one, for a system call that - otherwise has no libc wrapper. - -commit 29b13575376509bb21539711f30c1deaf0823033 -Author: Szabolcs Nagy -Date: Mon Feb 29 16:36:25 2016 +0000 - - fix ^* at the start of a complete BRE - - This is a workaround to treat * as literal * at the start of a BRE. - - Ideally ^ would be treated as an anchor at the start of any BRE - subexpression and similarly $ would be an anchor at the end of any - subexpression. This is not required by the standard and hard to do - with the current code, but it's the existing practice. If it is - changed, * should be treated as literal after such anchor as well. - -commit 39ea71fb8afddda879a1999f2a203dfdaf57a639 -Author: Szabolcs Nagy -Date: Mon Feb 29 15:04:46 2016 +0000 - - fix * at the start of a BRE subexpression - - commit 7eaa76fc2e7993582989d3838b1ac32dd8abac09 made * invalid at - the start of a BRE subexpression, but it should be accepted as - literal * there according to the standard. - - This patch does not fix subexpressions starting with ^*. - -commit 6e694d6960d9d50a119e8660c95bf9308e609053 -Author: Michael Meeuwisse -Date: Tue Feb 23 23:49:57 2016 +0100 - - explicitly include stdio.h to get EOF definition needed by wctob - -commit 6d70c08a2c37745df637b231711f6dec79dbc6e1 -Author: Rich Felker -Date: Wed Mar 2 00:34:51 2016 -0500 - - handle non-matching address family entries in hosts file - - name_from_hosts failed to account for the possibility of an address - family error from name_from_numeric, wrongly counting such a return as - success and using the uninitialized address data as part of the - results passed up to the caller. - - non-matching address family entries cannot simply be ignored or - results would be inconsistent with respect to whether AF_UNSPEC or a - specific address family is queried. instead, record that a - non-matching entry was seen, and fail the lookup with EAI_NONAME of no - matching-family entries are found. - -commit fd224a800b68843c4d8d1002b07dd91041a7fa32 -Author: Rich Felker -Date: Tue Feb 23 13:04:56 2016 -0500 - - make aarch64 atomic_arch.h report that it defines pointer-sized ll/sc - - at present this is done only for consistency, since this file defines - its own a_cas_p rather than using the new generic one from atomic.h - added in commit 225f6a6b5b7173b6655e4f5d49b5b9fea70bf3bb. these - definitions may however be useful if we ever need to add other - pointer-sized atomic operations. - -commit 225f6a6b5b7173b6655e4f5d49b5b9fea70bf3bb -Author: Bobby Bingham -Date: Mon Feb 22 21:14:23 2016 -0600 - - allow implementing a_cas_p with pointer-sized ll/sc - - No current ports do this, but it will be useful for porting to 64-bit ll/sc - architectures, such as mips64 and powerpc64. - ---- a/COPYRIGHT -+++ b/COPYRIGHT -@@ -43,6 +43,7 @@ Gianluca Anzolin - Hauke Mehrtens - Hiltjo Posthuma - Isaac Dunham -+Jaydeep Patil - Jens Gustedt - Jeremy Huntwork - Jo-Philipp Wich -@@ -55,6 +56,7 @@ Kylie McClain - Luca Barbato - Luka Perkov - M Farkas-Dyck (Strake) -+Mahesh Bodapati - Michael Forney - Natanael Copa - Nicholas J. Kain -@@ -123,6 +125,9 @@ Pennington for use in the ellcc project. - by Rich Felker for build system and code conventions during upstream - integration. It is licensed under the standard MIT terms. - -+The mips64 port was contributed by Imagination Technologies and is -+licensed under the standard MIT terms. -+ - The powerpc port was also originally written by Richard Pennington, - and later supplemented and integrated by John Spencer. It is licensed - under the standard MIT terms. ---- a/INSTALL -+++ b/INSTALL -@@ -62,6 +62,12 @@ and ABI combinations: - * MIPS2 or later, or kernel emulation of ll/sc (standard in Linux) - is required - -+* MIPS64 -+ * ABI is n64 (LP64) -+ * Big-endian default; little-endian variants also supported -+ * Default ABI variant uses FPU registers; alternate soft-float ABI -+ that does not use FPU registers or instructions is available -+ - * PowerPC - * Only 32-bit is supported - * Compiler toolchain must provide 64-bit long double, not IBM ---- a/arch/aarch64/atomic_arch.h -+++ b/arch/aarch64/atomic_arch.h -@@ -34,6 +34,7 @@ static inline int a_cas(volatile int *p, - return old; - } - -+#define a_ll_p a_ll_p - static inline void *a_ll_p(volatile void *p) - { - void *v; -@@ -41,6 +42,7 @@ static inline void *a_ll_p(volatile void - return v; - } - -+#define a_sc_p a_sc_p - static inline int a_sc_p(volatile int *p, void *v) - { - int r; ---- /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 void *a_ll_p(volatile long *p) -+{ -+ void *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[14]; volatile int __vi[14]; unsigned long __s[7]; } __u; } pthread_attr_t; -+TYPEDEF struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } pthread_mutex_t; -+TYPEDEF struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } mtx_t; -+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } pthread_cond_t; -+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } cnd_t; -+TYPEDEF struct { union { int __i[14]; volatile int __vi[14]; void *__p[7]; } __u; } pthread_rwlock_t; -+TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; void *__p[4]; } __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 -+#define TCGETX 0x5432 -+#define TCSETX 0x5433 -+#define TCSETXF 0x5434 -+#define TCSETXW 0x5435 -+ -+#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,14 @@ -+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,13 @@ -+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[23]; ---- /dev/null -+++ b/arch/mips64/bits/shm.h -@@ -0,0 +1,24 @@ -+#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 long long __mc1[32]; -+ double __mc2[32]; -+ unsigned long long __mc3[9]; -+ unsigned __mc4[4]; -+} 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,68 @@ -+#include -+ -+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,23 @@ -+#include -+#include -+ -+struct stat { -+ dev_t st_dev; -+ int __pad1[3]; -+ ino_t st_ino; -+ mode_t st_mode; -+ nlink_t st_nlink; -+ uid_t st_uid; -+ gid_t st_gid; -+ dev_t st_rdev; -+ unsigned int __pad2[2]; -+ off_t st_size; -+ int __pad3; -+ struct timespec st_atim; -+ struct timespec st_mtim; -+ struct timespec st_ctim; -+ blksize_t st_blksize; -+ unsigned int __pad4; -+ blkcnt_t st_blocks; -+ int __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/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 -+#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,633 @@ -+#define __NR_read 5000 -+#define __NR_write 5001 -+#define __NR_open 5002 -+#define __NR_close 5003 -+#define __NR_stat 5004 -+#define __NR_fstat 5005 -+#define __NR_lstat 5006 -+#define __NR_poll 5007 -+#define __NR_lseek 5008 -+#define __NR_mmap 5009 -+#define __NR_mprotect 5010 -+#define __NR_munmap 5011 -+#define __NR_brk 5012 -+#define __NR_rt_sigaction 5013 -+#define __NR_rt_sigprocmask 5014 -+#define __NR_ioctl 5015 -+#define __NR_pread64 5016 -+#define __NR_pwrite64 5017 -+#define __NR_readv 5018 -+#define __NR_writev 5019 -+#define __NR_access 5020 -+#define __NR_pipe 5021 -+#define __NR__newselect 5022 -+#define __NR_sched_yield 5023 -+#define __NR_mremap 5024 -+#define __NR_msync 5025 -+#define __NR_mincore 5026 -+#define __NR_madvise 5027 -+#define __NR_shmget 5028 -+#define __NR_shmat 5029 -+#define __NR_shmctl 5030 -+#define __NR_dup 5031 -+#define __NR_dup2 5032 -+#define __NR_pause 5033 -+#define __NR_nanosleep 5034 -+#define __NR_getitimer 5035 -+#define __NR_setitimer 5036 -+#define __NR_alarm 5037 -+#define __NR_getpid 5038 -+#define __NR_sendfile 5039 -+#define __NR_socket 5040 -+#define __NR_connect 5041 -+#define __NR_accept 5042 -+#define __NR_sendto 5043 -+#define __NR_recvfrom 5044 -+#define __NR_sendmsg 5045 -+#define __NR_recvmsg 5046 -+#define __NR_shutdown 5047 -+#define __NR_bind 5048 -+#define __NR_listen 5049 -+#define __NR_getsockname 5050 -+#define __NR_getpeername 5051 -+#define __NR_socketpair 5052 -+#define __NR_setsockopt 5053 -+#define __NR_getsockopt 5054 -+#define __NR_clone 5055 -+#define __NR_fork 5056 -+#define __NR_execve 5057 -+#define __NR_exit 5058 -+#define __NR_wait4 5059 -+#define __NR_kill 5060 -+#define __NR_uname 5061 -+#define __NR_semget 5062 -+#define __NR_semop 5063 -+#define __NR_semctl 5064 -+#define __NR_shmdt 5065 -+#define __NR_msgget 5066 -+#define __NR_msgsnd 5067 -+#define __NR_msgrcv 5068 -+#define __NR_msgctl 5069 -+#define __NR_fcntl 5070 -+#define __NR_flock 5071 -+#define __NR_fsync 5072 -+#define __NR_fdatasync 5073 -+#define __NR_truncate 5074 -+#define __NR_ftruncate 5075 -+#define __NR_getdents 5076 -+#define __NR_getcwd 5077 -+#define __NR_chdir 5078 -+#define __NR_fchdir 5079 -+#define __NR_rename 5080 -+#define __NR_mkdir 5081 -+#define __NR_rmdir 5082 -+#define __NR_creat 5083 -+#define __NR_link 5084 -+#define __NR_unlink 5085 -+#define __NR_symlink 5086 -+#define __NR_readlink 5087 -+#define __NR_chmod 5088 -+#define __NR_fchmod 5089 -+#define __NR_chown 5090 -+#define __NR_fchown 5091 -+#define __NR_lchown 5092 -+#define __NR_umask 5093 -+#define __NR_gettimeofday 5094 -+#define __NR_getrlimit 5095 -+#define __NR_getrusage 5096 -+#define __NR_sysinfo 5097 -+#define __NR_times 5098 -+#define __NR_ptrace 5099 -+#define __NR_getuid 5100 -+#define __NR_syslog 5101 -+#define __NR_getgid 5102 -+#define __NR_setuid 5103 -+#define __NR_setgid 5104 -+#define __NR_geteuid 5105 -+#define __NR_getegid 5106 -+#define __NR_setpgid 5107 -+#define __NR_getppid 5108 -+#define __NR_getpgrp 5109 -+#define __NR_setsid 5110 -+#define __NR_setreuid 5111 -+#define __NR_setregid 5112 -+#define __NR_getgroups 5113 -+#define __NR_setgroups 5114 -+#define __NR_setresuid 5115 -+#define __NR_getresuid 5116 -+#define __NR_setresgid 5117 -+#define __NR_getresgid 5118 -+#define __NR_getpgid 5119 -+#define __NR_setfsuid 5120 -+#define __NR_setfsgid 5121 -+#define __NR_getsid 5122 -+#define __NR_capget 5123 -+#define __NR_capset 5124 -+#define __NR_rt_sigpending 5125 -+#define __NR_rt_sigtimedwait 5126 -+#define __NR_rt_sigqueueinfo 5127 -+#define __NR_rt_sigsuspend 5128 -+#define __NR_sigaltstack 5129 -+#define __NR_utime 5130 -+#define __NR_mknod 5131 -+#define __NR_personality 5132 -+#define __NR_ustat 5133 -+#define __NR_statfs 5134 -+#define __NR_fstatfs 5135 -+#define __NR_sysfs 5136 -+#define __NR_getpriority 5137 -+#define __NR_setpriority 5138 -+#define __NR_sched_setparam 5139 -+#define __NR_sched_getparam 5140 -+#define __NR_sched_setscheduler 5141 -+#define __NR_sched_getscheduler 5142 -+#define __NR_sched_get_priority_max 5143 -+#define __NR_sched_get_priority_min 5144 -+#define __NR_sched_rr_get_interval 5145 -+#define __NR_mlock 5146 -+#define __NR_munlock 5147 -+#define __NR_mlockall 5148 -+#define __NR_munlockall 5149 -+#define __NR_vhangup 5150 -+#define __NR_pivot_root 5151 -+#define __NR__sysctl 5152 -+#define __NR_prctl 5153 -+#define __NR_adjtimex 5154 -+#define __NR_setrlimit 5155 -+#define __NR_chroot 5156 -+#define __NR_sync 5157 -+#define __NR_acct 5158 -+#define __NR_settimeofday 5159 -+#define __NR_mount 5160 -+#define __NR_umount2 5161 -+#define __NR_swapon 5162 -+#define __NR_swapoff 5163 -+#define __NR_reboot 5164 -+#define __NR_sethostname 5165 -+#define __NR_setdomainname 5166 -+#define __NR_create_module 5167 -+#define __NR_init_module 5168 -+#define __NR_delete_module 5169 -+#define __NR_get_kernel_syms 5170 -+#define __NR_query_module 5171 -+#define __NR_quotactl 5172 -+#define __NR_nfsservctl 5173 -+#define __NR_getpmsg 5174 -+#define __NR_putpmsg 5175 -+#define __NR_afs_syscall 5176 -+#define __NR_reserved177 5177 -+#define __NR_gettid 5178 -+#define __NR_readahead 5179 -+#define __NR_setxattr 5180 -+#define __NR_lsetxattr 5181 -+#define __NR_fsetxattr 5182 -+#define __NR_getxattr 5183 -+#define __NR_lgetxattr 5184 -+#define __NR_fgetxattr 5185 -+#define __NR_listxattr 5186 -+#define __NR_llistxattr 5187 -+#define __NR_flistxattr 5188 -+#define __NR_removexattr 5189 -+#define __NR_lremovexattr 5190 -+#define __NR_fremovexattr 5191 -+#define __NR_tkill 5192 -+#define __NR_reserved193 5193 -+#define __NR_futex 5194 -+#define __NR_sched_setaffinity 5195 -+#define __NR_sched_getaffinity 5196 -+#define __NR_cacheflush 5197 -+#define __NR_cachectl 5198 -+#define __NR_sysmips 5199 -+#define __NR_io_setup 5200 -+#define __NR_io_destroy 5201 -+#define __NR_io_getevents 5202 -+#define __NR_io_submit 5203 -+#define __NR_io_cancel 5204 -+#define __NR_exit_group 5205 -+#define __NR_lookup_dcookie 5206 -+#define __NR_epoll_create 5207 -+#define __NR_epoll_ctl 5208 -+#define __NR_epoll_wait 5209 -+#define __NR_remap_file_pages 5210 -+#define __NR_rt_sigreturn 5211 -+#define __NR_set_tid_address 5212 -+#define __NR_restart_syscall 5213 -+#define __NR_semtimedop 5214 -+#define __NR_fadvise64 5215 -+#define __NR_timer_create 5216 -+#define __NR_timer_settime 5217 -+#define __NR_timer_gettime 5218 -+#define __NR_timer_getoverrun 5219 -+#define __NR_timer_delete 5220 -+#define __NR_clock_settime 5221 -+#define __NR_clock_gettime 5222 -+#define __NR_clock_getres 5223 -+#define __NR_clock_nanosleep 5224 -+#define __NR_tgkill 5225 -+#define __NR_utimes 5226 -+#define __NR_mbind 5227 -+#define __NR_get_mempolicy 5228 -+#define __NR_set_mempolicy 5229 -+#define __NR_mq_open 5230 -+#define __NR_mq_unlink 5231 -+#define __NR_mq_timedsend 5232 -+#define __NR_mq_timedreceive 5233 -+#define __NR_mq_notify 5234 -+#define __NR_mq_getsetattr 5235 -+#define __NR_vserver 5236 -+#define __NR_waitid 5237 -+#define __NR_add_key 5239 -+#define __NR_request_key 5240 -+#define __NR_keyctl 5241 -+#define __NR_set_thread_area 5242 -+#define __NR_inotify_init 5243 -+#define __NR_inotify_add_watch 5244 -+#define __NR_inotify_rm_watch 5245 -+#define __NR_migrate_pages 5246 -+#define __NR_openat 5247 -+#define __NR_mkdirat 5248 -+#define __NR_mknodat 5249 -+#define __NR_fchownat 5250 -+#define __NR_futimesat 5251 -+#define __NR_newfstatat 5252 -+#define __NR_unlinkat 5253 -+#define __NR_renameat 5254 -+#define __NR_linkat 5255 -+#define __NR_symlinkat 5256 -+#define __NR_readlinkat 5257 -+#define __NR_fchmodat 5258 -+#define __NR_faccessat 5259 -+#define __NR_pselect6 5260 -+#define __NR_ppoll 5261 -+#define __NR_unshare 5262 -+#define __NR_splice 5263 -+#define __NR_sync_file_range 5264 -+#define __NR_tee 5265 -+#define __NR_vmsplice 5266 -+#define __NR_move_pages 5267 -+#define __NR_set_robust_list 5268 -+#define __NR_get_robust_list 5269 -+#define __NR_kexec_load 5270 -+#define __NR_getcpu 5271 -+#define __NR_epoll_pwait 5272 -+#define __NR_ioprio_set 5273 -+#define __NR_ioprio_get 5274 -+#define __NR_utimensat 5275 -+#define __NR_signalfd 5276 -+#define __NR_timerfd 5277 -+#define __NR_eventfd 5278 -+#define __NR_fallocate 5279 -+#define __NR_timerfd_create 5280 -+#define __NR_timerfd_gettime 5281 -+#define __NR_timerfd_settime 5282 -+#define __NR_signalfd4 5283 -+#define __NR_eventfd2 5284 -+#define __NR_epoll_create1 5285 -+#define __NR_dup3 5286 -+#define __NR_pipe2 5287 -+#define __NR_inotify_init1 5288 -+#define __NR_preadv 5289 -+#define __NR_pwritev 5290 -+#define __NR_rt_tgsigqueueinfo 5291 -+#define __NR_perf_event_open 5292 -+#define __NR_accept4 5293 -+#define __NR_recvmmsg 5294 -+#define __NR_fanotify_init 5295 -+#define __NR_fanotify_mark 5296 -+#define __NR_prlimit64 5297 -+#define __NR_name_to_handle_at 5298 -+#define __NR_open_by_handle_at 5299 -+#define __NR_clock_adjtime 5300 -+#define __NR_syncfs 5301 -+#define __NR_sendmmsg 5302 -+#define __NR_setns 5303 -+#define __NR_process_vm_readv 5304 -+#define __NR_process_vm_writev 5305 -+#define __NR_kcmp 5306 -+#define __NR_finit_module 5307 -+#define __NR_getdents64 5308 -+#define __NR_sched_setattr 5309 -+#define __NR_sched_getattr 5310 -+#define __NR_renameat2 5311 -+#define __NR_seccomp 5312 -+#define __NR_getrandom 5313 -+#define __NR_memfd_create 5314 -+#define __NR_bpf 5315 -+#define __NR_execveat 5316 -+ -+#define SYS_read 5000 -+#define SYS_write 5001 -+#define SYS_open 5002 -+#define SYS_close 5003 -+#define SYS_stat 5004 -+#define SYS_fstat 5005 -+#define SYS_lstat 5006 -+#define SYS_poll 5007 -+#define SYS_lseek 5008 -+#define SYS_mmap 5009 -+#define SYS_mprotect 5010 -+#define SYS_munmap 5011 -+#define SYS_brk 5012 -+#define SYS_rt_sigaction 5013 -+#define SYS_rt_sigprocmask 5014 -+#define SYS_ioctl 5015 -+#define SYS_pread64 5016 -+#define SYS_pwrite64 5017 -+#define SYS_readv 5018 -+#define SYS_writev 5019 -+#define SYS_access 5020 -+#define SYS_pipe 5021 -+#define SYS__newselect 5022 -+#define SYS_sched_yield 5023 -+#define SYS_mremap 5024 -+#define SYS_msync 5025 -+#define SYS_mincore 5026 -+#define SYS_madvise 5027 -+#define SYS_shmget 5028 -+#define SYS_shmat 5029 -+#define SYS_shmctl 5030 -+#define SYS_dup 5031 -+#define SYS_dup2 5032 -+#define SYS_pause 5033 -+#define SYS_nanosleep 5034 -+#define SYS_getitimer 5035 -+#define SYS_setitimer 5036 -+#define SYS_alarm 5037 -+#define SYS_getpid 5038 -+#define SYS_sendfile 5039 -+#define SYS_socket 5040 -+#define SYS_connect 5041 -+#define SYS_accept 5042 -+#define SYS_sendto 5043 -+#define SYS_recvfrom 5044 -+#define SYS_sendmsg 5045 -+#define SYS_recvmsg 5046 -+#define SYS_shutdown 5047 -+#define SYS_bind 5048 -+#define SYS_listen 5049 -+#define SYS_getsockname 5050 -+#define SYS_getpeername 5051 -+#define SYS_socketpair 5052 -+#define SYS_setsockopt 5053 -+#define SYS_getsockopt 5054 -+#define SYS_clone 5055 -+#define SYS_fork 5056 -+#define SYS_execve 5057 -+#define SYS_exit 5058 -+#define SYS_wait4 5059 -+#define SYS_kill 5060 -+#define SYS_uname 5061 -+#define SYS_semget 5062 -+#define SYS_semop 5063 -+#define SYS_semctl 5064 -+#define SYS_shmdt 5065 -+#define SYS_msgget 5066 -+#define SYS_msgsnd 5067 -+#define SYS_msgrcv 5068 -+#define SYS_msgctl 5069 -+#define SYS_fcntl 5070 -+#define SYS_flock 5071 -+#define SYS_fsync 5072 -+#define SYS_fdatasync 5073 -+#define SYS_truncate 5074 -+#define SYS_ftruncate 5075 -+#define SYS_getdents 5076 -+#define SYS_getcwd 5077 -+#define SYS_chdir 5078 -+#define SYS_fchdir 5079 -+#define SYS_rename 5080 -+#define SYS_mkdir 5081 -+#define SYS_rmdir 5082 -+#define SYS_creat 5083 -+#define SYS_link 5084 -+#define SYS_unlink 5085 -+#define SYS_symlink 5086 -+#define SYS_readlink 5087 -+#define SYS_chmod 5088 -+#define SYS_fchmod 5089 -+#define SYS_chown 5090 -+#define SYS_fchown 5091 -+#define SYS_lchown 5092 -+#define SYS_umask 5093 -+#define SYS_gettimeofday 5094 -+#define SYS_getrlimit 5095 -+#define SYS_getrusage 5096 -+#define SYS_sysinfo 5097 -+#define SYS_times 5098 -+#define SYS_ptrace 5099 -+#define SYS_getuid 5100 -+#define SYS_syslog 5101 -+#define SYS_getgid 5102 -+#define SYS_setuid 5103 -+#define SYS_setgid 5104 -+#define SYS_geteuid 5105 -+#define SYS_getegid 5106 -+#define SYS_setpgid 5107 -+#define SYS_getppid 5108 -+#define SYS_getpgrp 5109 -+#define SYS_setsid 5110 -+#define SYS_setreuid 5111 -+#define SYS_setregid 5112 -+#define SYS_getgroups 5113 -+#define SYS_setgroups 5114 -+#define SYS_setresuid 5115 -+#define SYS_getresuid 5116 -+#define SYS_setresgid 5117 -+#define SYS_getresgid 5118 -+#define SYS_getpgid 5119 -+#define SYS_setfsuid 5120 -+#define SYS_setfsgid 5121 -+#define SYS_getsid 5122 -+#define SYS_capget 5123 -+#define SYS_capset 5124 -+#define SYS_rt_sigpending 5125 -+#define SYS_rt_sigtimedwait 5126 -+#define SYS_rt_sigqueueinfo 5127 -+#define SYS_rt_sigsuspend 5128 -+#define SYS_sigaltstack 5129 -+#define SYS_utime 5130 -+#define SYS_mknod 5131 -+#define SYS_personality 5132 -+#define SYS_ustat 5133 -+#define SYS_statfs 5134 -+#define SYS_fstatfs 5135 -+#define SYS_sysfs 5136 -+#define SYS_getpriority 5137 -+#define SYS_setpriority 5138 -+#define SYS_sched_setparam 5139 -+#define SYS_sched_getparam 5140 -+#define SYS_sched_setscheduler 5141 -+#define SYS_sched_getscheduler 5142 -+#define SYS_sched_get_priority_max 5143 -+#define SYS_sched_get_priority_min 5144 -+#define SYS_sched_rr_get_interval 5145 -+#define SYS_mlock 5146 -+#define SYS_munlock 5147 -+#define SYS_mlockall 5148 -+#define SYS_munlockall 5149 -+#define SYS_vhangup 5150 -+#define SYS_pivot_root 5151 -+#define SYS__sysctl 5152 -+#define SYS_prctl 5153 -+#define SYS_adjtimex 5154 -+#define SYS_setrlimit 5155 -+#define SYS_chroot 5156 -+#define SYS_sync 5157 -+#define SYS_acct 5158 -+#define SYS_settimeofday 5159 -+#define SYS_mount 5160 -+#define SYS_umount2 5161 -+#define SYS_swapon 5162 -+#define SYS_swapoff 5163 -+#define SYS_reboot 5164 -+#define SYS_sethostname 5165 -+#define SYS_setdomainname 5166 -+#define SYS_create_module 5167 -+#define SYS_init_module 5168 -+#define SYS_delete_module 5169 -+#define SYS_get_kernel_syms 5170 -+#define SYS_query_module 5171 -+#define SYS_quotactl 5172 -+#define SYS_nfsservctl 5173 -+#define SYS_getpmsg 5174 -+#define SYS_putpmsg 5175 -+#define SYS_afs_syscall 5176 -+#define SYS_reserved177 5177 -+#define SYS_gettid 5178 -+#define SYS_readahead 5179 -+#define SYS_setxattr 5180 -+#define SYS_lsetxattr 5181 -+#define SYS_fsetxattr 5182 -+#define SYS_getxattr 5183 -+#define SYS_lgetxattr 5184 -+#define SYS_fgetxattr 5185 -+#define SYS_listxattr 5186 -+#define SYS_llistxattr 5187 -+#define SYS_flistxattr 5188 -+#define SYS_removexattr 5189 -+#define SYS_lremovexattr 5190 -+#define SYS_fremovexattr 5191 -+#define SYS_tkill 5192 -+#define SYS_reserved193 5193 -+#define SYS_futex 5194 -+#define SYS_sched_setaffinity 5195 -+#define SYS_sched_getaffinity 5196 -+#define SYS_cacheflush 5197 -+#define SYS_cachectl 5198 -+#define SYS_sysmips 5199 -+#define SYS_io_setup 5200 -+#define SYS_io_destroy 5201 -+#define SYS_io_getevents 5202 -+#define SYS_io_submit 5203 -+#define SYS_io_cancel 5204 -+#define SYS_exit_group 5205 -+#define SYS_lookup_dcookie 5206 -+#define SYS_epoll_create 5207 -+#define SYS_epoll_ctl 5208 -+#define SYS_epoll_wait 5209 -+#define SYS_remap_file_pages 5210 -+#define SYS_rt_sigreturn 5211 -+#define SYS_set_tid_address 5212 -+#define SYS_restart_syscall 5213 -+#define SYS_semtimedop 5214 -+#define SYS_fadvise64 5215 -+#define SYS_timer_create 5216 -+#define SYS_timer_settime 5217 -+#define SYS_timer_gettime 5218 -+#define SYS_timer_getoverrun 5219 -+#define SYS_timer_delete 5220 -+#define SYS_clock_settime 5221 -+#define SYS_clock_gettime 5222 -+#define SYS_clock_getres 5223 -+#define SYS_clock_nanosleep 5224 -+#define SYS_tgkill 5225 -+#define SYS_utimes 5226 -+#define SYS_mbind 5227 -+#define SYS_get_mempolicy 5228 -+#define SYS_set_mempolicy 5229 -+#define SYS_mq_open 5230 -+#define SYS_mq_unlink 5231 -+#define SYS_mq_timedsend 5232 -+#define SYS_mq_timedreceive 5233 -+#define SYS_mq_notify 5234 -+#define SYS_mq_getsetattr 5235 -+#define SYS_vserver 5236 -+#define SYS_waitid 5237 -+#define SYS_add_key 5239 -+#define SYS_request_key 5240 -+#define SYS_keyctl 5241 -+#define SYS_set_thread_area 5242 -+#define SYS_inotify_init 5243 -+#define SYS_inotify_add_watch 5244 -+#define SYS_inotify_rm_watch 5245 -+#define SYS_migrate_pages 5246 -+#define SYS_openat 5247 -+#define SYS_mkdirat 5248 -+#define SYS_mknodat 5249 -+#define SYS_fchownat 5250 -+#define SYS_futimesat 5251 -+#define SYS_newfstatat 5252 -+#define SYS_unlinkat 5253 -+#define SYS_renameat 5254 -+#define SYS_linkat 5255 -+#define SYS_symlinkat 5256 -+#define SYS_readlinkat 5257 -+#define SYS_fchmodat 5258 -+#define SYS_faccessat 5259 -+#define SYS_pselect6 5260 -+#define SYS_ppoll 5261 -+#define SYS_unshare 5262 -+#define SYS_splice 5263 -+#define SYS_sync_file_range 5264 -+#define SYS_tee 5265 -+#define SYS_vmsplice 5266 -+#define SYS_move_pages 5267 -+#define SYS_set_robust_list 5268 -+#define SYS_get_robust_list 5269 -+#define SYS_kexec_load 5270 -+#define SYS_getcpu 5271 -+#define SYS_epoll_pwait 5272 -+#define SYS_ioprio_set 5273 -+#define SYS_ioprio_get 5274 -+#define SYS_utimensat 5275 -+#define SYS_signalfd 5276 -+#define SYS_timerfd 5277 -+#define SYS_eventfd 5278 -+#define SYS_fallocate 5279 -+#define SYS_timerfd_create 5280 -+#define SYS_timerfd_gettime 5281 -+#define SYS_timerfd_settime 5282 -+#define SYS_signalfd4 5283 -+#define SYS_eventfd2 5284 -+#define SYS_epoll_create1 5285 -+#define SYS_dup3 5286 -+#define SYS_pipe2 5287 -+#define SYS_inotify_init1 5288 -+#define SYS_preadv 5289 -+#define SYS_pwritev 5290 -+#define SYS_rt_tgsigqueueinfo 5291 -+#define SYS_perf_event_open 5292 -+#define SYS_accept4 5293 -+#define SYS_recvmmsg 5294 -+#define SYS_fanotify_init 5295 -+#define SYS_fanotify_mark 5296 -+#define SYS_prlimit64 5297 -+#define SYS_name_to_handle_at 5298 -+#define SYS_open_by_handle_at 5299 -+#define SYS_clock_adjtime 5300 -+#define SYS_syncfs 5301 -+#define SYS_sendmmsg 5302 -+#define SYS_setns 5303 -+#define SYS_process_vm_readv 5304 -+#define SYS_process_vm_writev 5305 -+#define SYS_kcmp 5306 -+#define SYS_finit_module 5307 -+#define SYS_getdents64 5308 -+#define SYS_sched_setattr 5309 -+#define SYS_sched_getattr 5310 -+#define SYS_renameat2 5311 -+#define SYS_seccomp 5312 -+#define SYS_getrandom 5313 -+#define SYS_memfd_create 5314 -+#define SYS_bpf 5315 -+#define SYS_execveat 5316 ---- /dev/null -+++ b/arch/mips64/bits/termios.h -@@ -0,0 +1,166 @@ -+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,15 @@ -+struct user { -+ unsigned long regs[102]; -+ 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,8 @@ -+struct k_sigaction { -+ unsigned flags; -+ void (*handler)(int); -+ unsigned long mask[2]; -+ 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,60 @@ -+#ifndef __RELOC_H__ -+#define __RELOC_H__ -+ -+#define _GNU_SOURCE -+#include -+ -+#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 -+#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 -+ -+#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)) -+ -+#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,281 @@ -+#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 -+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) -+{ -+ st->st_dev = kst->st_dev; -+ 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; -+ st->st_size = kst->st_size; -+ 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; -+} -+ -+#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; -+ 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) -+{ -+ struct kernel_stat kst; -+ long ret; -+ register long r4 __asm__("$4"); -+ register long r5 __asm__("$5"); -+ register long r6 __asm__("$6"); -+ 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; -+ r6 = c; -+ __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"); -+ -+ 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 __syscall4(long n, long a, long b, long c, long d) -+{ -+ struct kernel_stat kst; -+ long ret; -+ register long r4 __asm__("$4"); -+ register long r5 __asm__("$5"); -+ register long r6 __asm__("$6"); -+ 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; -+ r6 = c; -+ r7 = d; -+ __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"); -+ -+ if (r7) return -r2; -+ ret = r2; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ __stat_fix(&kst, (struct stat *)b); -+ -+ return ret; -+} -+ -+#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; -+ -+ 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, (struct stat *)old_b); -+ -+ return r2; -+} -+ -+static inline long __syscall3(long n, long a, long b, long c) -+{ -+ long r2; -+ long old_b = b; -+ struct kernel_stat kst; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ b = (long) &kst; -+ -+ r2 = (__syscall)(n, a, b, c); -+ if (r2 > -4096UL) return r2; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ __stat_fix(&kst, (struct stat *)old_b); -+ -+ return r2; -+} -+ -+static inline long __syscall4(long n, long a, long b, long c, long d) -+{ -+ long r2; -+ long old_b = b; -+ struct kernel_stat kst; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ b = (long) &kst; -+ -+ r2 = (__syscall)(n, a, b, c, d); -+ if (r2 > -4096UL) return r2; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ __stat_fix(&kst, (struct stat *)old_b); -+ -+ return r2; -+} -+ -+#endif -+ -+static inline long __syscall5(long n, long a, long b, long c, long d, long e) -+{ -+ long r2; -+ long old_b = b; -+ struct kernel_stat kst; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ b = (long) &kst; -+ -+ r2 = (__syscall)(n, a, b, c, d, e); -+ if (r2 > -4096UL) return r2; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ __stat_fix(&kst, (struct stat *)old_b); -+ -+ return r2; -+} -+ -+static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) -+{ -+ long r2; -+ long old_b = b; -+ struct kernel_stat kst; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ b = (long) &kst; -+ -+ r2 = (__syscall)(n, a, b, c, d, e, f); -+ if (r2 > -4096UL) return r2; -+ -+ if (n == SYS_stat || n == SYS_fstat || n == SYS_lstat) -+ __stat_fix(&kst, (struct stat *)old_b); -+ -+ return r2; -+} -+ -+#define VDSO_USEFUL -+#define VDSO_CGT_SYM "__vdso_clock_gettime" -+#define VDSO_CGT_VER "LINUX_2.6" ---- a/arch/powerpc/bits/fenv.h -+++ b/arch/powerpc/bits/fenv.h -@@ -1,3 +1,7 @@ -+#ifdef _SOFT_FLOAT -+#define FE_ALL_EXCEPT 0 -+#define FE_TONEAREST 0 -+#else - #define FE_TONEAREST 0 - #define FE_TOWARDZERO 1 - #define FE_UPWARD 2 -@@ -24,6 +28,7 @@ - - #define FE_ALL_INVALID 0x01f80700 - #endif -+#endif - - typedef unsigned fexcept_t; - typedef double fenv_t; ---- a/arch/powerpc/reloc.h -+++ b/arch/powerpc/reloc.h -@@ -1,4 +1,10 @@ --#define LDSO_ARCH "powerpc" -+#ifdef _SOFT_FLOAT -+#define FP_SUFFIX "-sf" -+#else -+#define FP_SUFFIX "" -+#endif -+ -+#define LDSO_ARCH "powerpc" FP_SUFFIX - - #define TPOFF_K (-0x7000) - ---- a/arch/x86_64/syscall_arch.h -+++ b/arch/x86_64/syscall_arch.h -@@ -64,3 +64,5 @@ static __inline long __syscall6(long n, - #define VDSO_USEFUL - #define VDSO_CGT_SYM "__vdso_clock_gettime" - #define VDSO_CGT_VER "LINUX_2.6" -+#define VDSO_GETCPU_SYM "__vdso_getcpu" -+#define VDSO_GETCPU_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 ;; -@@ -615,6 +616,17 @@ trycppif "_MIPSEL || __MIPSEL || __MIPSE - trycppif __mips_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 -+ -+if test "$ARCH" = "powerpc" ; then -+trycppif "__NO_FPRS__ && !_SOFT_FLOAT" "$t" && fail \ -+ "$0: error: compiler's floating point configuration is unsupported" -+trycppif _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/include/sched.h -+++ b/include/sched.h -@@ -76,6 +76,7 @@ void free(void *); - - typedef struct cpu_set_t { unsigned long __bits[128/sizeof(long)]; } cpu_set_t; - int __sched_cpucount(size_t, const cpu_set_t *); -+int sched_getcpu(void); - int sched_getaffinity(pid_t, size_t, cpu_set_t *); - int sched_setaffinity(pid_t, size_t, const cpu_set_t *); - ---- 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); - } - } ---- a/src/env/putenv.c -+++ b/src/env/putenv.c -@@ -30,6 +30,7 @@ int __putenv(char *s, int a) - } - } else { - free(__env_map[j]); -+ __env_map[j] = s; - } - } - } ---- /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 ---- /dev/null -+++ b/src/fenv/powerpc/fenv-sf.c -@@ -0,0 +1,3 @@ -+#ifdef _SOFT_FLOAT -+#include "../fenv.c" -+#endif ---- /dev/null -+++ b/src/fenv/powerpc/fenv.S -@@ -0,0 +1,129 @@ -+#ifndef _SOFT_FLOAT -+.global feclearexcept -+.type feclearexcept,@function -+feclearexcept: -+ andis. 3,3,0x3e00 -+ /* if (r3 & FE_INVALID) r3 |= all_invalid_flags */ -+ andis. 0,3,0x2000 -+ stwu 1,-16(1) -+ beq- 0,1f -+ oris 3,3,0x01f8 -+ ori 3,3,0x0700 -+1: -+ /* -+ * note: fpscr contains various fpu status and control -+ * flags and we dont check if r3 may alter other flags -+ * than the exception related ones -+ * ufpscr &= ~r3 -+ */ -+ mffs 0 -+ stfd 0,8(1) -+ lwz 9,12(1) -+ andc 9,9,3 -+ stw 9,12(1) -+ lfd 0,8(1) -+ mtfsf 255,0 -+ -+ /* return 0 */ -+ li 3,0 -+ addi 1,1,16 -+ blr -+ -+.global feraiseexcept -+.type feraiseexcept,@function -+feraiseexcept: -+ andis. 3,3,0x3e00 -+ /* if (r3 & FE_INVALID) r3 |= software_invalid_flag */ -+ andis. 0,3,0x2000 -+ stwu 1,-16(1) -+ beq- 0,1f -+ ori 3,3,0x0400 -+1: -+ /* fpscr |= r3 */ -+ mffs 0 -+ stfd 0,8(1) -+ lwz 9,12(1) -+ or 9,9,3 -+ stw 9,12(1) -+ lfd 0,8(1) -+ mtfsf 255,0 -+ -+ /* return 0 */ -+ li 3,0 -+ addi 1,1,16 -+ blr -+ -+.global fetestexcept -+.type fetestexcept,@function -+fetestexcept: -+ andis. 3,3,0x3e00 -+ /* return r3 & fpscr */ -+ stwu 1,-16(1) -+ mffs 0 -+ stfd 0,8(1) -+ lwz 9,12(1) -+ addi 1,1,16 -+ and 3,3,9 -+ blr -+ -+.global fegetround -+.type fegetround,@function -+fegetround: -+ /* return fpscr & 3 */ -+ stwu 1,-16(1) -+ mffs 0 -+ stfd 0,8(1) -+ lwz 3,12(1) -+ addi 1,1,16 -+ clrlwi 3,3,30 -+ blr -+ -+.global __fesetround -+.type __fesetround,@function -+__fesetround: -+ /* -+ * note: invalid input is not checked, r3 < 4 must hold -+ * fpscr = (fpscr & -4U) | r3 -+ */ -+ stwu 1,-16(1) -+ mffs 0 -+ stfd 0,8(1) -+ lwz 9,12(1) -+ clrrwi 9,9,2 -+ or 9,9,3 -+ stw 9,12(1) -+ lfd 0,8(1) -+ mtfsf 255,0 -+ -+ /* return 0 */ -+ li 3,0 -+ addi 1,1,16 -+ blr -+ -+.global fegetenv -+.type fegetenv,@function -+fegetenv: -+ /* *r3 = fpscr */ -+ mffs 0 -+ stfd 0,0(3) -+ /* return 0 */ -+ li 3,0 -+ blr -+ -+.global fesetenv -+.type fesetenv,@function -+fesetenv: -+ cmpwi 3, -1 -+ bne 1f -+ mflr 4 -+ bl 2f -+ .zero 8 -+2: mflr 3 -+ mtlr 4 -+1: /* fpscr = *r3 */ -+ lfd 0,0(3) -+ mtfsf 255,0 -+ /* return 0 */ -+ li 3,0 -+ blr -+#endif ---- a/src/fenv/powerpc/fenv.s -+++ /dev/null -@@ -1,123 +0,0 @@ --.global feclearexcept --.type feclearexcept,@function --feclearexcept: -- andis. 3,3,0x3e00 -- # if (r3 & FE_INVALID) r3 |= all_invalid_flags -- andis. 0,3,0x2000 -- stwu 1,-16(1) -- beq- 0,1f -- oris 3,3,0x01f8 -- ori 3,3,0x0700 --1: -- # note: fpscr contains various fpu status and control -- # flags and we dont check if r3 may alter other flags -- # than the exception related ones -- # fpscr &= ~r3 -- mffs 0 -- stfd 0,8(1) -- lwz 9,12(1) -- andc 9,9,3 -- stw 9,12(1) -- lfd 0,8(1) -- mtfsf 255,0 -- -- # return 0 -- li 3,0 -- addi 1,1,16 -- blr -- --.global feraiseexcept --.type feraiseexcept,@function --feraiseexcept: -- andis. 3,3,0x3e00 -- # if (r3 & FE_INVALID) r3 |= software_invalid_flag -- andis. 0,3,0x2000 -- stwu 1,-16(1) -- beq- 0,1f -- ori 3,3,0x0400 --1: -- # fpscr |= r3 -- mffs 0 -- stfd 0,8(1) -- lwz 9,12(1) -- or 9,9,3 -- stw 9,12(1) -- lfd 0,8(1) -- mtfsf 255,0 -- -- # return 0 -- li 3,0 -- addi 1,1,16 -- blr -- --.global fetestexcept --.type fetestexcept,@function --fetestexcept: -- andis. 3,3,0x3e00 -- # return r3 & fpscr -- stwu 1,-16(1) -- mffs 0 -- stfd 0,8(1) -- lwz 9,12(1) -- addi 1,1,16 -- and 3,3,9 -- blr -- --.global fegetround --.type fegetround,@function --fegetround: -- # return fpscr & 3 -- stwu 1,-16(1) -- mffs 0 -- stfd 0,8(1) -- lwz 3,12(1) -- addi 1,1,16 -- clrlwi 3,3,30 -- blr -- --.global __fesetround --.type __fesetround,@function --__fesetround: -- # note: invalid input is not checked, r3 < 4 must hold -- # fpscr = (fpscr & -4U) | r3 -- stwu 1,-16(1) -- mffs 0 -- stfd 0,8(1) -- lwz 9,12(1) -- clrrwi 9,9,2 -- or 9,9,3 -- stw 9,12(1) -- lfd 0,8(1) -- mtfsf 255,0 -- -- # return 0 -- li 3,0 -- addi 1,1,16 -- blr -- --.global fegetenv --.type fegetenv,@function --fegetenv: -- # *r3 = fpscr -- mffs 0 -- stfd 0,0(3) -- # return 0 -- li 3,0 -- blr -- --.global fesetenv --.type fesetenv,@function --fesetenv: -- cmpwi 3, -1 -- bne 1f -- mflr 4 -- bl 2f -- .zero 8 --2: mflr 3 -- mtlr 4 --1: # fpscr = *r3 -- lfd 0,0(3) -- mtfsf 255,0 -- # return 0 -- li 3,0 -- blr ---- a/src/internal/atomic.h -+++ b/src/internal/atomic.h -@@ -82,6 +82,23 @@ static inline int a_fetch_or(volatile in - - #endif - -+#ifdef a_ll_p -+ -+#ifndef a_cas_p -+#define a_cas_p a_cas_p -+static inline void *a_cas_p(volatile void *p, void *t, void *s) -+{ -+ void *old; -+ a_pre_llsc(); -+ do old = a_ll_p(p); -+ while (old==t && !a_sc_p(p, s)); -+ a_post_llsc(); -+ return old; -+} -+#endif -+ -+#endif -+ - #ifndef a_cas - #error missing definition of a_cas - #endif -@@ -209,6 +226,7 @@ static inline void a_or_64(volatile uint - #endif - - #ifndef a_cas_p -+typedef char a_cas_p_undefined_but_pointer_not_32bit[-sizeof(char) == 0xffffffff ? 1 : -1]; - #define a_cas_p a_cas_p - static inline void *a_cas_p(volatile void *p, void *t, void *s) - { ---- a/src/internal/dynlink.h -+++ b/src/internal/dynlink.h -@@ -11,12 +11,14 @@ 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 - - /* These enum constants provide unmatchable default values for ---- /dev/null -+++ b/src/internal/mips64/syscall.s -@@ -0,0 +1,19 @@ -+.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 ---- a/src/math/exp2f.c -+++ b/src/math/exp2f.c -@@ -91,6 +91,8 @@ float exp2f(float x) - /* Filter out exceptional cases. */ - ix = u.i & 0x7fffffff; - if (ix > 0x42fc0000) { /* |x| > 126 */ -+ if (ix > 0x7f800000) /* NaN */ -+ return x; - if (u.i >= 0x43000000 && u.i < 0x80000000) { /* x >= 128 */ - x *= 0x1p127f; - return x; ---- a/src/math/expf.c -+++ b/src/math/expf.c -@@ -39,6 +39,8 @@ float expf(float x) - - /* special cases */ - if (hx >= 0x42aeac50) { /* if |x| >= -87.33655f or NaN */ -+ if (hx > 0x7f800000) /* NaN */ -+ return x; - if (hx >= 0x42b17218 && !sign) { /* x >= 88.722839f */ - /* overflow */ - x *= 0x1p127f; ---- a/src/multibyte/wctob.c -+++ b/src/multibyte/wctob.c -@@ -1,4 +1,5 @@ - #include -+#include - #include - #include "internal.h" - ---- a/src/network/lookup_name.c -+++ b/src/network/lookup_name.c -@@ -49,7 +49,7 @@ static int name_from_hosts(struct addres - { - char line[512]; - size_t l = strlen(name); -- int cnt = 0; -+ int cnt = 0, badfam = 0; - unsigned char _buf[1032]; - FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf); - if (!f) switch (errno) { -@@ -71,8 +71,16 @@ static int name_from_hosts(struct addres - /* Isolate IP address to parse */ - for (p=line; *p && !isspace(*p); p++); - *p++ = 0; -- if (name_from_numeric(buf+cnt, line, family)) -+ switch (name_from_numeric(buf+cnt, line, family)) { -+ case 1: - cnt++; -+ break; -+ case 0: -+ continue; -+ default: -+ badfam = EAI_NONAME; -+ continue; -+ } - - /* Extract first name as canonical name */ - for (; *p && isspace(*p); p++); -@@ -81,7 +89,7 @@ static int name_from_hosts(struct addres - if (is_valid_hostname(p)) memcpy(canon, p, z-p+1); - } - __fclose_ca(f); -- return cnt; -+ return cnt ? cnt : badfam; - } - - struct dpc_ctx { ---- a/src/regex/regcomp.c -+++ b/src/regex/regcomp.c -@@ -889,7 +889,6 @@ static reg_errcode_t parse_atom(tre_pars - s++; - break; - case '*': -- return REG_BADPAT; - case '{': - case '+': - case '?': -@@ -978,9 +977,6 @@ static reg_errcode_t tre_parse(tre_parse - } - - parse_iter: -- /* extension: repetitions are rejected after an empty node -- eg. (+), |*, {2}, but assertions are not treated as empty -- so ^* or $? are accepted currently. */ - for (;;) { - int min, max; - -@@ -998,6 +994,10 @@ static reg_errcode_t tre_parse(tre_parse - if (*s=='\\') - s++; - -+ /* handle ^* at the start of a complete BRE. */ -+ if (!ere && s==ctx->re+1 && s[-1]=='^') -+ break; -+ - /* extension: multiple consecutive *+?{,} is unspecified, - but (a+)+ has to be supported so accepting a++ makes - sense, note however that the RE_DUP_MAX limit can be ---- /dev/null -+++ b/src/sched/sched_getcpu.c -@@ -0,0 +1,44 @@ -+#define _GNU_SOURCE -+#include -+#include -+#include "syscall.h" -+#include "atomic.h" -+ -+#ifdef VDSO_GETCPU_SYM -+ -+void *__vdsosym(const char *, const char *); -+ -+static void *volatile vdso_func; -+ -+typedef long (*getcpu_f)(unsigned *, unsigned *, void *); -+ -+static long getcpu_init(unsigned *cpu, unsigned *node, void *unused) -+{ -+ void *p = __vdsosym(VDSO_GETCPU_VER, VDSO_GETCPU_SYM); -+ getcpu_f f = (getcpu_f)p; -+ a_cas_p(&vdso_func, (void *)getcpu_init, p); -+ return f ? f(cpu, node, unused) : -ENOSYS; -+} -+ -+static void *volatile vdso_func = (void *)getcpu_init; -+ -+#endif -+ -+int sched_getcpu(void) -+{ -+ int r; -+ unsigned cpu; -+ -+#ifdef VDSO_GETCPU_SYM -+ getcpu_f f = (getcpu_f)vdso_func; -+ if (f) { -+ r = f(&cpu, 0, 0); -+ if (!r) return cpu; -+ if (r != -ENOSYS) return __syscall_ret(r); -+ } -+#endif -+ -+ r = __syscall(SYS_getcpu, &cpu, 0, 0); -+ if (!r) return cpu; -+ return __syscall_ret(r); -+} ---- /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 -+ 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) -+ sd $16, 24($4) -+ 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) -+ 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 ---- /dev/null -+++ b/src/setjmp/powerpc/longjmp.S -@@ -0,0 +1,69 @@ -+ .global _longjmp -+ .global longjmp -+ .type _longjmp,@function -+ .type longjmp,@function -+_longjmp: -+longjmp: -+ /* -+ * void longjmp(jmp_buf env, int val); -+ * put val into return register and restore the env saved in setjmp -+ * if val(r4) is 0, put 1 there. -+ */ -+ /* 0) move old return address into r0 */ -+ lwz 0, 0(3) -+ /* 1) put it into link reg */ -+ mtlr 0 -+ /* 2 ) restore stack ptr */ -+ lwz 1, 4(3) -+ /* 3) restore control reg */ -+ lwz 0, 8(3) -+ mtcr 0 -+ /* 4) restore r14-r31 */ -+ lwz 14, 12(3) -+ lwz 15, 16(3) -+ lwz 16, 20(3) -+ lwz 17, 24(3) -+ lwz 18, 28(3) -+ lwz 19, 32(3) -+ lwz 20, 36(3) -+ lwz 21, 40(3) -+ lwz 22, 44(3) -+ lwz 23, 48(3) -+ lwz 24, 52(3) -+ lwz 25, 56(3) -+ lwz 26, 60(3) -+ lwz 27, 64(3) -+ lwz 28, 68(3) -+ lwz 29, 72(3) -+ lwz 30, 76(3) -+ lwz 31, 80(3) -+#ifndef _SOFT_FLOAT -+ lfd 14,88(3) -+ lfd 15,96(3) -+ lfd 16,104(3) -+ lfd 17,112(3) -+ lfd 18,120(3) -+ lfd 19,128(3) -+ lfd 20,136(3) -+ lfd 21,144(3) -+ lfd 22,152(3) -+ lfd 23,160(3) -+ lfd 24,168(3) -+ lfd 25,176(3) -+ lfd 26,184(3) -+ lfd 27,192(3) -+ lfd 28,200(3) -+ lfd 29,208(3) -+ lfd 30,216(3) -+ lfd 31,224(3) -+#endif -+ /* 5) put val into return reg r3 */ -+ mr 3, 4 -+ -+ /* 6) check if return value is 0, make it 1 in that case */ -+ cmpwi cr7, 4, 0 -+ bne cr7, 1f -+ li 3, 1 -+1: -+ blr -+ ---- a/src/setjmp/powerpc/longjmp.s -+++ /dev/null -@@ -1,65 +0,0 @@ -- .global _longjmp -- .global longjmp -- .type _longjmp,@function -- .type longjmp,@function --_longjmp: --longjmp: --# void longjmp(jmp_buf env, int val); --# put val into return register and restore the env saved in setjmp --# if val(r4) is 0, put 1 there. -- # 0) move old return address into r0 -- lwz 0, 0(3) -- # 1) put it into link reg -- mtlr 0 -- #2 ) restore stack ptr -- lwz 1, 4(3) -- #3) restore control reg -- lwz 0, 8(3) -- mtcr 0 -- #4) restore r14-r31 -- lwz 14, 12(3) -- lwz 15, 16(3) -- lwz 16, 20(3) -- lwz 17, 24(3) -- lwz 18, 28(3) -- lwz 19, 32(3) -- lwz 20, 36(3) -- lwz 21, 40(3) -- lwz 22, 44(3) -- lwz 23, 48(3) -- lwz 24, 52(3) -- lwz 25, 56(3) -- lwz 26, 60(3) -- lwz 27, 64(3) -- lwz 28, 68(3) -- lwz 29, 72(3) -- lwz 30, 76(3) -- lwz 31, 80(3) -- lfd 14,88(3) -- lfd 15,96(3) -- lfd 16,104(3) -- lfd 17,112(3) -- lfd 18,120(3) -- lfd 19,128(3) -- lfd 20,136(3) -- lfd 21,144(3) -- lfd 22,152(3) -- lfd 23,160(3) -- lfd 24,168(3) -- lfd 25,176(3) -- lfd 26,184(3) -- lfd 27,192(3) -- lfd 28,200(3) -- lfd 29,208(3) -- lfd 30,216(3) -- lfd 31,224(3) -- #5) put val into return reg r3 -- mr 3, 4 -- -- #6) check if return value is 0, make it 1 in that case -- cmpwi cr7, 4, 0 -- bne cr7, 1f -- li 3, 1 --1: -- blr -- ---- /dev/null -+++ b/src/setjmp/powerpc/setjmp.S -@@ -0,0 +1,63 @@ -+ .global ___setjmp -+ .hidden ___setjmp -+ .global __setjmp -+ .global _setjmp -+ .global setjmp -+ .type __setjmp,@function -+ .type _setjmp,@function -+ .type setjmp,@function -+___setjmp: -+__setjmp: -+_setjmp: -+setjmp: -+ /* 0) store IP int 0, then into the jmpbuf pointed to by r3 (first arg) */ -+ mflr 0 -+ stw 0, 0(3) -+ /* 1) store reg1 (SP) */ -+ stw 1, 4(3) -+ /* 2) store cr */ -+ mfcr 0 -+ stw 0, 8(3) -+ /* 3) store r14-31 */ -+ stw 14, 12(3) -+ stw 15, 16(3) -+ stw 16, 20(3) -+ stw 17, 24(3) -+ stw 18, 28(3) -+ stw 19, 32(3) -+ stw 20, 36(3) -+ stw 21, 40(3) -+ stw 22, 44(3) -+ stw 23, 48(3) -+ stw 24, 52(3) -+ stw 25, 56(3) -+ stw 26, 60(3) -+ stw 27, 64(3) -+ stw 28, 68(3) -+ stw 29, 72(3) -+ stw 30, 76(3) -+ stw 31, 80(3) -+#ifndef _SOFT_FLOAT -+ stfd 14,88(3) -+ stfd 15,96(3) -+ stfd 16,104(3) -+ stfd 17,112(3) -+ stfd 18,120(3) -+ stfd 19,128(3) -+ stfd 20,136(3) -+ stfd 21,144(3) -+ stfd 22,152(3) -+ stfd 23,160(3) -+ stfd 24,168(3) -+ stfd 25,176(3) -+ stfd 26,184(3) -+ stfd 27,192(3) -+ stfd 28,200(3) -+ stfd 29,208(3) -+ stfd 30,216(3) -+ stfd 31,224(3) -+#endif -+ /* 4) set return value to 0 */ -+ li 3, 0 -+ /* 5) return */ -+ blr ---- a/src/setjmp/powerpc/setjmp.s -+++ /dev/null -@@ -1,61 +0,0 @@ -- .global ___setjmp -- .hidden ___setjmp -- .global __setjmp -- .global _setjmp -- .global setjmp -- .type __setjmp,@function -- .type _setjmp,@function -- .type setjmp,@function --___setjmp: --__setjmp: --_setjmp: --setjmp: -- # 0) store IP int 0, then into the jmpbuf pointed to by r3 (first arg) -- mflr 0 -- stw 0, 0(3) -- # 1) store reg1 (SP) -- stw 1, 4(3) -- # 2) store cr -- mfcr 0 -- stw 0, 8(3) -- # 3) store r14-31 -- stw 14, 12(3) -- stw 15, 16(3) -- stw 16, 20(3) -- stw 17, 24(3) -- stw 18, 28(3) -- stw 19, 32(3) -- stw 20, 36(3) -- stw 21, 40(3) -- stw 22, 44(3) -- stw 23, 48(3) -- stw 24, 52(3) -- stw 25, 56(3) -- stw 26, 60(3) -- stw 27, 64(3) -- stw 28, 68(3) -- stw 29, 72(3) -- stw 30, 76(3) -- stw 31, 80(3) -- stfd 14,88(3) -- stfd 15,96(3) -- stfd 16,104(3) -- stfd 17,112(3) -- stfd 18,120(3) -- stfd 19,128(3) -- stfd 20,136(3) -- stfd 21,144(3) -- stfd 22,152(3) -- stfd 23,160(3) -- stfd 24,168(3) -- stfd 25,176(3) -- stfd 26,184(3) -- stfd 27,192(3) -- stfd 28,200(3) -- stfd 29,208(3) -- stfd 30,216(3) -- stfd 31,224(3) -- # 4) set return value to 0 -- li 3, 0 -- # 5) return -- blr ---- /dev/null -+++ b/src/signal/mips64/restore.s -@@ -0,0 +1,9 @@ -+.set noreorder -+.global __restore_rt -+.global __restore -+.type __restore_rt,@function -+.type __restore,@function -+__restore_rt: -+__restore: -+ li $2,5211 -+ syscall ---- /dev/null -+++ b/src/signal/mips64/sigsetjmp.s -@@ -0,0 +1,38 @@ -+.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, 160($4) -+ sd $16, 168($4) -+ -+ # save base of got so that we can use it later -+ # once we return from 'longjmp' -+ sd $3, 176($4) -+ ld $25, %got_disp(setjmp)($3) -+ jalr $25 -+ move $16, $4 -+ -+ move $5, $2 # Return from 'setjmp' or 'longjmp' -+ move $4, $16 # Restore the pointer-to-sigjmp_buf -+ ld $ra, 160($4) # Restore ra of sigsetjmp -+ ld $16, 168($4) # Restore $16 of sigsetjmp -+ ld $3, 176($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,9 @@ -+.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,30 @@ -+.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 -+ syscall -+ beq $7, $0, 1f -+ nop -+ jr $ra -+ dsubu $2, $0, $2 -+1: beq $2, $0, 1f -+ nop -+ jr $ra -+ nop -+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,52 @@ -+.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 -+ 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 -+ nop -+ dsubu $2, $0, $2 -+1: jr $ra -+ nop -+ -+ # if cancellation flag is 1 then call __cancel -+__cp_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,19 @@ -+.set noreorder -+.global pipe -+.type pipe,@function -+pipe: -+ lui $3, %hi(%neg(%gp_rel(pipe))) -+ 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 diff --git a/toolchain/musl/patches/010-fix-regression-in-tcsetattr-on-all-mips-archs.patch b/toolchain/musl/patches/010-fix-regression-in-tcsetattr-on-all-mips-archs.patch new file mode 100644 index 0000000000..f3def26b2a --- /dev/null +++ b/toolchain/musl/patches/010-fix-regression-in-tcsetattr-on-all-mips-archs.patch @@ -0,0 +1,67 @@ +From cff5747c74c41b22f1ce1340978b1c226a8cdf32 Mon Sep 17 00:00:00 2001 +From: Rich Felker +Date: Wed, 13 Jul 2016 15:04:30 -0400 +Subject: [PATCH] fix regression in tcsetattr on all mips archs + +revert commit 8c316e9e49d37ad92c2e7493e16166a2afca419f. it was wrong +and does not match how the kernel API works. +--- + arch/mips/bits/termios.h | 6 +++--- + arch/mips64/bits/termios.h | 6 +++--- + arch/mipsn32/bits/termios.h | 6 +++--- + 4 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/arch/mips/bits/termios.h b/arch/mips/bits/termios.h +index f559f76..6a1205d 100644 +--- a/arch/mips/bits/termios.h ++++ b/arch/mips/bits/termios.h +@@ -141,9 +141,9 @@ struct termios { + #define TCOFLUSH 1 + #define TCIOFLUSH 2 + +-#define TCSANOW 0x540e +-#define TCSADRAIN 0x540f +-#define TCSAFLUSH 0x5410 ++#define TCSANOW 0 ++#define TCSADRAIN 1 ++#define TCSAFLUSH 2 + + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + #define EXTA 0000016 +diff --git a/arch/mips64/bits/termios.h b/arch/mips64/bits/termios.h +index f559f76..6a1205d 100644 +--- a/arch/mips64/bits/termios.h ++++ b/arch/mips64/bits/termios.h +@@ -141,9 +141,9 @@ struct termios { + #define TCOFLUSH 1 + #define TCIOFLUSH 2 + +-#define TCSANOW 0x540e +-#define TCSADRAIN 0x540f +-#define TCSAFLUSH 0x5410 ++#define TCSANOW 0 ++#define TCSADRAIN 1 ++#define TCSAFLUSH 2 + + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + #define EXTA 0000016 +diff --git a/arch/mipsn32/bits/termios.h b/arch/mipsn32/bits/termios.h +index f559f76..6a1205d 100644 +--- a/arch/mipsn32/bits/termios.h ++++ b/arch/mipsn32/bits/termios.h +@@ -141,9 +141,9 @@ struct termios { + #define TCOFLUSH 1 + #define TCIOFLUSH 2 + +-#define TCSANOW 0x540e +-#define TCSADRAIN 0x540f +-#define TCSAFLUSH 0x5410 ++#define TCSANOW 0 ++#define TCSADRAIN 1 ++#define TCSAFLUSH 2 + + #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + #define EXTA 0000016 +-- +2.8.1 + diff --git a/toolchain/musl/patches/200-add_libssp_nonshared.patch b/toolchain/musl/patches/200-add_libssp_nonshared.patch index 7a2909461b..218ca41402 100644 --- a/toolchain/musl/patches/200-add_libssp_nonshared.patch +++ b/toolchain/musl/patches/200-add_libssp_nonshared.patch @@ -21,7 +21,7 @@ Signed-off-by: Steven Barth ALL_TOOLS = obj/musl-gcc WRAPCC_GCC = gcc -@@ -125,7 +125,8 @@ NOSSP_SRCS = $(wildcard crt/*.c) \ +@@ -129,7 +129,8 @@ NOSSP_SRCS = $(wildcard crt/*.c) \ src/thread/__set_thread_area.c src/thread/$(ARCH)/__set_thread_area.c \ src/string/memset.c src/string/$(ARCH)/memset.c \ src/string/memcpy.c src/string/$(ARCH)/memcpy.c \ @@ -31,7 +31,7 @@ Signed-off-by: Steven Barth $(NOSSP_SRCS:%.c=obj/%.o) $(NOSSP_SRCS:%.c=obj/%.lo): CFLAGS_ALL += $(CFLAGS_NOSSP) $(CRT_OBJS): CFLAGS_ALL += -DCRT -@@ -168,6 +169,11 @@ lib/libc.a: $(AOBJS) +@@ -172,6 +173,11 @@ lib/libc.a: $(AOBJS) $(AR) rc $@ $(AOBJS) $(RANLIB) $@ diff --git a/toolchain/musl/patches/300-relative.patch b/toolchain/musl/patches/300-relative.patch index 7e1eb7d6bc..e34e60a09d 100644 --- a/toolchain/musl/patches/300-relative.patch +++ b/toolchain/musl/patches/300-relative.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -217,7 +217,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc +@@ -215,7 +215,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc $(INSTALL) -D -m 644 $< $@ $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so