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