From aacd348637e38795dd7ae3c7c8c908d8c0cd24fd Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Thu, 27 Feb 2014 22:03:25 -0500 Subject: rename superh port to "sh" for consistency linux, gcc, etc. all use "sh" as the name for the superh arch. there was already some inconsistency internally in musl: the dynamic linker was searching for "ld-musl-sh.path" as its path file despite its own name being "ld-musl-superh.so.1". there was some sentiment in both directions as to how to resolve the inconsistency, but overall "sh" was favored. --- arch/sh/atomic.h | 87 +++++ arch/sh/bits/alltypes.h.in | 23 ++ arch/sh/bits/endian.h | 5 + arch/sh/bits/errno.h | 134 +++++++ arch/sh/bits/fcntl.h | 39 ++ arch/sh/bits/fenv.h | 17 + arch/sh/bits/float.h | 17 + arch/sh/bits/io.h | 0 arch/sh/bits/ioctl.h | 205 ++++++++++ arch/sh/bits/ipc.h | 14 + arch/sh/bits/limits.h | 8 + arch/sh/bits/mman.h | 62 +++ arch/sh/bits/msg.h | 16 + arch/sh/bits/posix.h | 2 + arch/sh/bits/setjmp.h | 1 + arch/sh/bits/shm.h | 28 ++ arch/sh/bits/signal.h | 76 ++++ arch/sh/bits/socket.h | 17 + arch/sh/bits/stat.h | 22 ++ arch/sh/bits/statfs.h | 7 + arch/sh/bits/stdarg.h | 4 + arch/sh/bits/stdint.h | 20 + arch/sh/bits/syscall.h | 684 ++++++++++++++++++++++++++++++++++ arch/sh/bits/termios.h | 160 ++++++++ arch/sh/crt_arch.h | 9 + arch/sh/pthread_arch.h | 11 + arch/sh/reloc.h | 47 +++ arch/sh/src/__fpsrc_values.c | 2 + arch/sh/src/atomic.c | 146 ++++++++ arch/sh/syscall_arch.h | 87 +++++ arch/superh/atomic.h | 87 ----- arch/superh/bits/alltypes.h.in | 23 -- arch/superh/bits/endian.h | 5 - arch/superh/bits/errno.h | 134 ------- arch/superh/bits/fcntl.h | 39 -- arch/superh/bits/fenv.h | 17 - arch/superh/bits/float.h | 17 - arch/superh/bits/io.h | 0 arch/superh/bits/ioctl.h | 205 ---------- arch/superh/bits/ipc.h | 14 - arch/superh/bits/limits.h | 8 - arch/superh/bits/mman.h | 62 --- arch/superh/bits/msg.h | 16 - arch/superh/bits/posix.h | 2 - arch/superh/bits/setjmp.h | 1 - arch/superh/bits/shm.h | 28 -- arch/superh/bits/signal.h | 76 ---- arch/superh/bits/socket.h | 17 - arch/superh/bits/stat.h | 22 -- arch/superh/bits/statfs.h | 7 - arch/superh/bits/stdarg.h | 4 - arch/superh/bits/stdint.h | 20 - arch/superh/bits/syscall.h | 684 ---------------------------------- arch/superh/bits/termios.h | 160 -------- arch/superh/crt_arch.h | 9 - arch/superh/pthread_arch.h | 11 - arch/superh/reloc.h | 47 --- arch/superh/src/__fpsrc_values.c | 2 - arch/superh/src/atomic.c | 146 -------- arch/superh/syscall_arch.h | 87 ----- configure | 4 +- src/fenv/sh/fenv.s | 74 ++++ src/fenv/superh/fenv.s | 74 ---- src/internal/sh/syscall.s | 22 ++ src/internal/superh/syscall.s | 22 -- src/ldso/sh/dlsym.s | 10 + src/ldso/sh/start.s | 26 ++ src/ldso/superh/dlsym.s | 10 - src/ldso/superh/start.s | 26 -- src/setjmp/sh/longjmp.s | 26 ++ src/setjmp/sh/setjmp.s | 25 ++ src/setjmp/superh/longjmp.s | 26 -- src/setjmp/superh/setjmp.s | 25 -- src/signal/sh/restore.s | 24 ++ src/signal/sh/sigsetjmp.s | 27 ++ src/signal/superh/restore.s | 24 -- src/signal/superh/sigsetjmp.s | 27 -- src/thread/sh/__set_thread_area.s | 5 + src/thread/sh/__unmapself.s | 22 ++ src/thread/sh/clone.s | 47 +++ src/thread/sh/syscall_cp.s | 39 ++ src/thread/superh/__set_thread_area.s | 5 - src/thread/superh/__unmapself.s | 22 -- src/thread/superh/clone.s | 47 --- src/thread/superh/syscall_cp.s | 39 -- src/unistd/sh/pipe.s | 27 ++ src/unistd/superh/pipe.s | 27 -- 87 files changed, 2326 insertions(+), 2326 deletions(-) create mode 100644 arch/sh/atomic.h create mode 100644 arch/sh/bits/alltypes.h.in create mode 100644 arch/sh/bits/endian.h create mode 100644 arch/sh/bits/errno.h create mode 100644 arch/sh/bits/fcntl.h create mode 100644 arch/sh/bits/fenv.h create mode 100644 arch/sh/bits/float.h create mode 100644 arch/sh/bits/io.h create mode 100644 arch/sh/bits/ioctl.h create mode 100644 arch/sh/bits/ipc.h create mode 100644 arch/sh/bits/limits.h create mode 100644 arch/sh/bits/mman.h create mode 100644 arch/sh/bits/msg.h create mode 100644 arch/sh/bits/posix.h create mode 100644 arch/sh/bits/setjmp.h create mode 100644 arch/sh/bits/shm.h create mode 100644 arch/sh/bits/signal.h create mode 100644 arch/sh/bits/socket.h create mode 100644 arch/sh/bits/stat.h create mode 100644 arch/sh/bits/statfs.h create mode 100644 arch/sh/bits/stdarg.h create mode 100644 arch/sh/bits/stdint.h create mode 100644 arch/sh/bits/syscall.h create mode 100644 arch/sh/bits/termios.h create mode 100644 arch/sh/crt_arch.h create mode 100644 arch/sh/pthread_arch.h create mode 100644 arch/sh/reloc.h create mode 100644 arch/sh/src/__fpsrc_values.c create mode 100644 arch/sh/src/atomic.c create mode 100644 arch/sh/syscall_arch.h delete mode 100644 arch/superh/atomic.h delete mode 100644 arch/superh/bits/alltypes.h.in delete mode 100644 arch/superh/bits/endian.h delete mode 100644 arch/superh/bits/errno.h delete mode 100644 arch/superh/bits/fcntl.h delete mode 100644 arch/superh/bits/fenv.h delete mode 100644 arch/superh/bits/float.h delete mode 100644 arch/superh/bits/io.h delete mode 100644 arch/superh/bits/ioctl.h delete mode 100644 arch/superh/bits/ipc.h delete mode 100644 arch/superh/bits/limits.h delete mode 100644 arch/superh/bits/mman.h delete mode 100644 arch/superh/bits/msg.h delete mode 100644 arch/superh/bits/posix.h delete mode 100644 arch/superh/bits/setjmp.h delete mode 100644 arch/superh/bits/shm.h delete mode 100644 arch/superh/bits/signal.h delete mode 100644 arch/superh/bits/socket.h delete mode 100644 arch/superh/bits/stat.h delete mode 100644 arch/superh/bits/statfs.h delete mode 100644 arch/superh/bits/stdarg.h delete mode 100644 arch/superh/bits/stdint.h delete mode 100644 arch/superh/bits/syscall.h delete mode 100644 arch/superh/bits/termios.h delete mode 100644 arch/superh/crt_arch.h delete mode 100644 arch/superh/pthread_arch.h delete mode 100644 arch/superh/reloc.h delete mode 100644 arch/superh/src/__fpsrc_values.c delete mode 100644 arch/superh/src/atomic.c delete mode 100644 arch/superh/syscall_arch.h create mode 100644 src/fenv/sh/fenv.s delete mode 100644 src/fenv/superh/fenv.s create mode 100644 src/internal/sh/syscall.s delete mode 100644 src/internal/superh/syscall.s create mode 100644 src/ldso/sh/dlsym.s create mode 100644 src/ldso/sh/start.s delete mode 100644 src/ldso/superh/dlsym.s delete mode 100644 src/ldso/superh/start.s create mode 100644 src/setjmp/sh/longjmp.s create mode 100644 src/setjmp/sh/setjmp.s delete mode 100644 src/setjmp/superh/longjmp.s delete mode 100644 src/setjmp/superh/setjmp.s create mode 100644 src/signal/sh/restore.s create mode 100644 src/signal/sh/sigsetjmp.s delete mode 100644 src/signal/superh/restore.s delete mode 100644 src/signal/superh/sigsetjmp.s create mode 100644 src/thread/sh/__set_thread_area.s create mode 100644 src/thread/sh/__unmapself.s create mode 100644 src/thread/sh/clone.s create mode 100644 src/thread/sh/syscall_cp.s delete mode 100644 src/thread/superh/__set_thread_area.s delete mode 100644 src/thread/superh/__unmapself.s delete mode 100644 src/thread/superh/clone.s delete mode 100644 src/thread/superh/syscall_cp.s create mode 100644 src/unistd/sh/pipe.s delete mode 100644 src/unistd/superh/pipe.s diff --git a/arch/sh/atomic.h b/arch/sh/atomic.h new file mode 100644 index 00000000..104a4f12 --- /dev/null +++ b/arch/sh/atomic.h @@ -0,0 +1,87 @@ +#ifndef _INTERNAL_ATOMIC_H +#define _INTERNAL_ATOMIC_H + +#include + +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); +} + +int __sh_cas(volatile int *, int, int); +int __sh_swap(volatile int *, int); +int __sh_fetch_add(volatile int *, int); +void __sh_store(volatile int *, int); +void __sh_and(volatile int *, int); +void __sh_or(volatile int *, int); + +#define a_cas(p,t,s) __sh_cas(p,t,s) +#define a_swap(x,v) __sh_swap(x,v) +#define a_fetch_add(x,v) __sh_fetch_add(x, v) +#define a_store(x,v) __sh_store(x, v) +#define a_and(x,v) __sh_and(x, v) +#define a_or(x,v) __sh_or(x, v) + +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 void a_inc(volatile int *x) +{ + a_fetch_add(x, 1); +} + +static inline void a_dec(volatile int *x) +{ + a_fetch_add(x, -1); +} + +static inline void a_spin() +{ +} + +static inline void a_crash() +{ + *(volatile char *)0=0; +} + +static inline void a_or_l(volatile void *p, long v) +{ + a_or(p, v); +} + +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/sh/bits/alltypes.h.in b/arch/sh/bits/alltypes.h.in new file mode 100644 index 00000000..e9d8dd8a --- /dev/null +++ b/arch/sh/bits/alltypes.h.in @@ -0,0 +1,23 @@ +#define _Addr int +#define _Int64 long long +#define _Reg int + +TYPEDEF __builtin_va_list va_list; +TYPEDEF __builtin_va_list __isoc_va_list; + +#ifndef __cplusplus +TYPEDEF long wchar_t; +#endif +TYPEDEF unsigned wint_t; + +TYPEDEF float float_t; +TYPEDEF double double_t; + +TYPEDEF long time_t; +TYPEDEF long suseconds_t; + +TYPEDEF struct { union { int __i[9]; unsigned __s[9]; } __u; } pthread_attr_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; diff --git a/arch/sh/bits/endian.h b/arch/sh/bits/endian.h new file mode 100644 index 00000000..4744b97d --- /dev/null +++ b/arch/sh/bits/endian.h @@ -0,0 +1,5 @@ +#if __LITTLE_ENDIAN__ +#define __BYTE_ORDER __LITTLE_ENDIAN +#else +#define __BYTE_ORDER __BIG_ENDIAN +#endif diff --git a/arch/sh/bits/errno.h b/arch/sh/bits/errno.h new file mode 100644 index 00000000..d2e1eeee --- /dev/null +++ b/arch/sh/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 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 +#define EHWPOISON 133 diff --git a/arch/sh/bits/fcntl.h b/arch/sh/bits/fcntl.h new file mode 100644 index 00000000..0fa8e19c --- /dev/null +++ b/arch/sh/bits/fcntl.h @@ -0,0 +1,39 @@ +#define O_CREAT 0100 +#define O_EXCL 0200 +#define O_NOCTTY 0400 +#define O_TRUNC 01000 +#define O_APPEND 02000 +#define O_NONBLOCK 04000 +#define O_DSYNC 010000 +#define O_SYNC 04010000 +#define O_RSYNC 04010000 +#define O_DIRECTORY 0200000 +#define O_NOFOLLOW 0400000 +#define O_CLOEXEC 02000000 + +#define O_ASYNC 020000 +#define O_DIRECT 040000 +#define O_LARGEFILE 0100000 +#define O_NOATIME 01000000 +#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 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 + +#define F_GETOWNER_UIDS 17 diff --git a/arch/sh/bits/fenv.h b/arch/sh/bits/fenv.h new file mode 100644 index 00000000..f454a15d --- /dev/null +++ b/arch/sh/bits/fenv.h @@ -0,0 +1,17 @@ +#define FE_TONEAREST 0 +#define FE_TOWARDZERO 1 + +#define FE_INEXACT 0x04 +#define FE_UNDERFLOW 0x08 +#define FE_OVERFLOW 0x10 +#define FE_DIVBYZERO 0x20 +#define FE_INVALID 0x40 +#define FE_ALL_EXCEPT 0x7c + +typedef unsigned long fexcept_t; + +typedef struct { + unsigned long __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/arch/sh/bits/float.h b/arch/sh/bits/float.h new file mode 100644 index 00000000..ec46b94b --- /dev/null +++ b/arch/sh/bits/float.h @@ -0,0 +1,17 @@ +#define FLT_ROUNDS 1 +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 4.94065645841246544177e-324L +#define LDBL_MIN 2.22507385850720138309e-308L +#define LDBL_MAX 1.79769313486231570815e+308L +#define LDBL_EPSILON 2.22044604925031308085e-16L + +#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/sh/bits/io.h b/arch/sh/bits/io.h new file mode 100644 index 00000000..e69de29b diff --git a/arch/sh/bits/ioctl.h b/arch/sh/bits/ioctl.h new file mode 100644 index 00000000..c0b668b2 --- /dev/null +++ b/arch/sh/bits/ioctl.h @@ -0,0 +1,205 @@ +#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE 0U +#define _IOC_WRITE 1U +#define _IOC_READ 2U + +#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 FIOCLEX _IO('f', 1) +#define FIONCLEX _IO('f', 2) +#define FIOASYNC _IOW('f', 125, int) +#define FIONBIO _IOW('f', 126, int) +#define FIONREAD _IOR('f', 127, int) +#define TIOCINQ FIONREAD +#define FIOQSIZE _IOR('f', 128, char[8]) + +#define TCGETA _IOR('t', 23, char[18]) +#define TCSETA _IOW('t', 24, char[18]) +#define TCSETAW _IOW('t', 25, char[18]) +#define TCSETAF _IOW('t', 28, char[18]) + +#define TCSBRK _IO('t', 29) +#define TCXONC _IO('t', 30) +#define TCFLSH _IO('t', 31) + +#define TIOCSWINSZ _IOW('t', 103, char[8]) +#define TIOCGWINSZ _IOR('t', 104, char[8]) +#define TIOCSTART _IO('t', 110) +#define TIOCSTOP _IO('t', 111) +#define TIOCOUTQ _IOR('t', 115, int) + +#define TIOCSPGRP _IOW('t', 118, int) +#define TIOCGPGRP _IOR('t', 119, int) + +#define TIOCEXCL _IO('T', 12) +#define TIOCNXCL _IO('T', 13) +#define TIOCSCTTY _IO('T', 14) + +#define TIOCSTI _IOW('T', 18, char) +#define TIOCMGET _IOR('T', 21, unsigned int) +#define TIOCMBIS _IOW('T', 22, unsigned int) +#define TIOCMBIC _IOW('T', 23, unsigned int) +#define TIOCMSET _IOW('T', 24, unsigned int) +#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 TIOCGSOFTCAR _IOR('T', 25, unsigned int) +#define TIOCSSOFTCAR _IOW('T', 26, unsigned int) +#define TIOCLINUX _IOW('T', 28, char) +#define TIOCCONS _IO('T', 29) +#define TIOCGSERIAL _IOR('T', 30, char[60]) +#define TIOCSSERIAL _IOW('T', 31, char[60]) +#define TIOCPKT _IOW('T', 32, int) +#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 TIOCNOTTY _IO('T', 34) +#define TIOCSETD _IOW('T', 35, int) +#define TIOCGETD _IOR('T', 36, int) +#define TCSBRKP _IOW('T', 37, int) +#define TIOCSBRK _IO('T', 39) +#define TIOCCBRK _IO('T', 40) +#define TIOCGSID _IOR('T', 41, int) +#define TCGETS _IOR('T', 42, char[44]) +#define TCSETS _IOW('T', 43, char[44]) +#define TCSETSW _IOW('T', 44, char[44]) +#define TCSETSF _IOW('T', 45, char[44]) +#define TIOCGPTN _IOR('T', 48, unsigned int) +#define TIOCSPTLCK _IOW('T', 49, int) +#define TIOCGDEV _IOR('T', 50, unsigned int) +#define TIOCSIG _IOW('T', 54, int) +#define TIOCVHANGUP _IO('T', 55) +#define TIOCGPKT _IOR('T', 56, int) +#define TIOCGPTLCK _IOR('T', 57, int) +#define TIOCGEXCL _IOR('T', 64, int) + +#define TIOCSERCONFIG _IO('T', 83) +#define TIOCSERGWILD _IOR('T', 84, int) +#define TIOCSERSWILD _IOW('T', 85, int) +#define TIOCGLCKTRMIOS _IO('T', 86) +#define TIOCSLCKTRMIOS _IO('T', 87) +#define TIOCSERGSTRUCT _IOR('T', 88, char[216]) +#define TIOCSERGETLSR _IOR('T', 89, unsigned int) +#define TIOCSER_TEMT 0x01 +#define TIOCSERGETMULTI _IOR('T', 90, char[168]) +#define TIOCSERSETMULTI _IOW('T', 91, char[168]) + +#define TIOCMIWAIT _IO('T', 92) +#define TIOCGICOUNT _IO('T', 93) + +struct winsize { + unsigned short ws_row; + unsigned short ws_col; + unsigned short ws_xpixel; + unsigned short ws_ypixel; +}; + +#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 FIOGETOWN _IOR('f', 123, int) +#define FIOSETOWN _IOW('f', 124, int) + +#define SIOCATMARK _IOR('s', 7, int) +#define SIOCSPGRP _IOW('s', 8, int) +#define SIOCGPGRP _IOW('s', 9, int) +#define SIOCGSTAMP _IOR('s', 100, char[8]) + +#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/sh/bits/ipc.h b/arch/sh/bits/ipc.h new file mode 100644 index 00000000..b748d3b7 --- /dev/null +++ b/arch/sh/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; + long __pad1; + long __pad2; +}; + +#define IPC_64 0x100 diff --git a/arch/sh/bits/limits.h b/arch/sh/bits/limits.h new file mode 100644 index 00000000..65a3dd64 --- /dev/null +++ b/arch/sh/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/sh/bits/mman.h b/arch/sh/bits/mman.h new file mode 100644 index 00000000..f199f4b4 --- /dev/null +++ b/arch/sh/bits/mman.h @@ -0,0 +1,62 @@ +#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 MAP_NORESERVE 0x4000 +#define MAP_GROWSDOWN 0x0100 +#define MAP_DENYWRITE 0x0800 +#define MAP_EXECUTABLE 0x1000 +#define MAP_LOCKED 0x2000 +#define MAP_POPULATE 0x8000 +#define MAP_NONBLOCK 0x10000 +#define MAP_STACK 0x20000 +#define MAP_HUGETLB 0x40000 + +#define POSIX_MADV_NORMAL 0 +#define POSIX_MADV_RANDOM 1 +#define POSIX_MADV_SEQUENTIAL 2 +#define POSIX_MADV_WILLNEED 3 +#define POSIX_MADV_DONTNEED 4 + +#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_DONTDUMP 16 +#define MADV_DODUMP 17 +#define MADV_HWPOISON 100 +#define MADV_SOFT_OFFLINE 101 + +#define MREMAP_MAYMOVE 1 +#define MREMAP_FIXED 2 +#endif diff --git a/arch/sh/bits/msg.h b/arch/sh/bits/msg.h new file mode 100644 index 00000000..3db8576b --- /dev/null +++ b/arch/sh/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/sh/bits/posix.h b/arch/sh/bits/posix.h new file mode 100644 index 00000000..30a38714 --- /dev/null +++ b/arch/sh/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG 1 +#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/arch/sh/bits/setjmp.h b/arch/sh/bits/setjmp.h new file mode 100644 index 00000000..bef7fe2a --- /dev/null +++ b/arch/sh/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[13]; diff --git a/arch/sh/bits/shm.h b/arch/sh/bits/shm.h new file mode 100644 index 00000000..a210fd4a --- /dev/null +++ b/arch/sh/bits/shm.h @@ -0,0 +1,28 @@ +#define SHMLBA 16384 + +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; +}; + +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; +}; diff --git a/arch/sh/bits/signal.h b/arch/sh/bits/signal.h new file mode 100644 index 00000000..905ae3ac --- /dev/null +++ b/arch/sh/bits/signal.h @@ -0,0 +1,76 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef int greg_t, gregset_t[16]; +typedef int freg_t, fpregset_t[16]; +typedef struct sigcontext { + unsigned long oldmask; + unsigned long sc_regs[16]; + unsigned long sc_pc, sc_pr, sc_sr; + unsigned long sc_gbr, sc_mach, sc_macl; + unsigned long sc_fpregs[16]; + unsigned long sc_xfpregs[16]; + unsigned int sc_fpscr, sc_fpul, sc_ownedfp; +} mcontext_t; +#else +typedef struct { + unsigned long __regs[58]; +} mcontext_t; +#endif + +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 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 + +#endif + +#define SIGHUP 1 +#define SIGINT 2 +#define SIGQUIT 3 +#define SIGILL 4 +#define SIGTRAP 5 +#define SIGABRT 6 +#define SIGIOT SIGABRT +#define SIGBUS 7 +#define SIGFPE 8 +#define SIGKILL 9 +#define SIGUSR1 10 +#define SIGSEGV 11 +#define SIGUSR2 12 +#define SIGPIPE 13 +#define SIGALRM 14 +#define SIGTERM 15 +#define SIGSTKFLT 16 +#define SIGCHLD 17 +#define SIGCONT 18 +#define SIGSTOP 19 +#define SIGTSTP 20 +#define SIGTTIN 21 +#define SIGTTOU 22 +#define SIGURG 23 +#define SIGXCPU 24 +#define SIGXFSZ 25 +#define SIGVTALRM 26 +#define SIGPROF 27 +#define SIGWINCH 28 +#define SIGIO 29 +#define SIGPOLL 29 +#define SIGPWR 30 +#define SIGSYS 31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/arch/sh/bits/socket.h b/arch/sh/bits/socket.h new file mode 100644 index 00000000..36febbc2 --- /dev/null +++ b/arch/sh/bits/socket.h @@ -0,0 +1,17 @@ +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; +}; + +struct cmsghdr +{ + socklen_t cmsg_len; + int cmsg_level; + int cmsg_type; +}; diff --git a/arch/sh/bits/stat.h b/arch/sh/bits/stat.h new file mode 100644 index 00000000..bb9314a5 --- /dev/null +++ b/arch/sh/bits/stat.h @@ -0,0 +1,22 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat +{ + dev_t st_dev; + int __st_dev_padding; + long __st_ino_truncated; + mode_t st_mode; + nlink_t st_nlink; + uid_t st_uid; + gid_t st_gid; + dev_t st_rdev; + int __st_rdev_padding; + off_t st_size; + blksize_t st_blksize; + blkcnt_t st_blocks; + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; + ino_t st_ino; +}; diff --git a/arch/sh/bits/statfs.h b/arch/sh/bits/statfs.h new file mode 100644 index 00000000..f103f4e4 --- /dev/null +++ b/arch/sh/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/sh/bits/stdarg.h b/arch/sh/bits/stdarg.h new file mode 100644 index 00000000..fde37814 --- /dev/null +++ b/arch/sh/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/sh/bits/stdint.h b/arch/sh/bits/stdint.h new file mode 100644 index 00000000..d1b27121 --- /dev/null +++ b/arch/sh/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 INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#define SIZE_MAX UINT32_MAX diff --git a/arch/sh/bits/syscall.h b/arch/sh/bits/syscall.h new file mode 100644 index 00000000..4b363bf2 --- /dev/null +++ b/arch/sh/bits/syscall.h @@ -0,0 +1,684 @@ +#define __NR_restart_syscall 0 +#define __NR_exit 1 +#define __NR_fork 2 +#define __NR_read 3 +#define __NR_write 4 +#define __NR_open 5 +#define __NR_close 6 +#define __NR_waitpid 7 +#define __NR_creat 8 +#define __NR_link 9 +#define __NR_unlink 10 +#define __NR_execve 11 +#define __NR_chdir 12 +#define __NR_time 13 +#define __NR_mknod 14 +#define __NR_chmod 15 +#define __NR_lchown 16 +#define __NR_oldstat 18 +#define __NR_lseek 19 +#define __NR_getpid 20 +#define __NR_mount 21 +#define __NR_umount 22 +#define __NR_setuid 23 +#define __NR_getuid 24 +#define __NR_stime 25 +#define __NR_ptrace 26 +#define __NR_alarm 27 +#define __NR_oldfstat 28 +#define __NR_pause 29 +#define __NR_utime 30 +#define __NR_access 33 +#define __NR_nice 34 +#define __NR_sync 36 +#define __NR_kill 37 +#define __NR_rename 38 +#define __NR_mkdir 39 +#define __NR_rmdir 40 +#define __NR_dup 41 +#define __NR_pipe 42 +#define __NR_times 43 +#define __NR_brk 45 +#define __NR_setgid 46 +#define __NR_getgid 47 +#define __NR_signal 48 +#define __NR_geteuid 49 +#define __NR_getegid 50 +#define __NR_acct 51 +#define __NR_umount2 52 +#define __NR_ioctl 54 +#define __NR_fcntl 55 +#define __NR_setpgid 57 +#define __NR_umask 60 +#define __NR_chroot 61 +#define __NR_ustat 62 +#define __NR_dup2 63 +#define __NR_getppid 64 +#define __NR_getpgrp 65 +#define __NR_setsid 66 +#define __NR_sigaction 67 +#define __NR_sgetmask 68 +#define __NR_ssetmask 69 +#define __NR_setreuid 70 +#define __NR_setregid 71 +#define __NR_sigsuspend 72 +#define __NR_sigpending 73 +#define __NR_sethostname 74 +#define __NR_setrlimit 75 +#define __NR_getrlimit 76 +#define __NR_getrusage 77 +#define __NR_gettimeofday 78 +#define __NR_settimeofday 79 +#define __NR_getgroups 80 +#define __NR_setgroups 81 +#define __NR_symlink 83 +#define __NR_oldlstat 84 +#define __NR_readlink 85 +#define __NR_uselib 86 +#define __NR_swapon 87 +#define __NR_reboot 88 +#define __NR_readdir 89 +#define __NR_mmap 90 +#define __NR_munmap 91 +#define __NR_truncate 92 +#define __NR_ftruncate 93 +#define __NR_fchmod 94 +#define __NR_fchown 95 +#define __NR_getpriority 96 +#define __NR_setpriority 97 +#define __NR_statfs 99 +#define __NR_fstatfs 100 +#define __NR_socketcall 102 +#define __NR_syslog 103 +#define __NR_setitimer 104 +#define __NR_getitimer 105 +#define __NR_stat 106 +#define __NR_lstat 107 +#define __NR_fstat 108 +#define __NR_olduname 109 +#define __NR_vhangup 111 +#define __NR_wait4 114 +#define __NR_swapoff 115 +#define __NR_sysinfo 116 +#define __NR_ipc 117 +#define __NR_fsync 118 +#define __NR_sigreturn 119 +#define __NR_clone 120 +#define __NR_setdomainname 121 +#define __NR_uname 122 +#define __NR_cacheflush 123 +#define __NR_adjtimex 124 +#define __NR_mprotect 125 +#define __NR_sigprocmask 126 +#define __NR_init_module 128 +#define __NR_delete_module 129 +#define __NR_quotactl 131 +#define __NR_getpgid 132 +#define __NR_fchdir 133 +#define __NR_bdflush 134 +#define __NR_sysfs 135 +#define __NR_personality 136 +#define __NR_setfsuid 138 +#define __NR_setfsgid 139 +#define __NR__llseek 140 +#define __NR_getdents 141 +#define __NR__newselect 142 +#define __NR_flock 143 +#define __NR_msync 144 +#define __NR_readv 145 +#define __NR_writev 146 +#define __NR_getsid 147 +#define __NR_fdatasync 148 +#define __NR__sysctl 149 +#define __NR_mlock 150 +#define __NR_munlock 151 +#define __NR_mlockall 152 +#define __NR_munlockall 153 +#define __NR_sched_setparam 154 +#define __NR_sched_getparam 155 +#define __NR_sched_setscheduler 156 +#define __NR_sched_getscheduler 157 +#define __NR_sched_yield 158 +#define __NR_sched_get_priority_max 159 +#define __NR_sched_get_priority_min 160 +#define __NR_sched_rr_get_interval 161 +#define __NR_nanosleep 162 +#define __NR_mremap 163 +#define __NR_setresuid 164 +#define __NR_getresuid 165 +#define __NR_poll 168 +#define __NR_nfsservctl 169 +#define __NR_setresgid 170 +#define __NR_getresgid 171 +#define __NR_prctl 172 +#define __NR_rt_sigreturn 173 +#define __NR_rt_sigaction 174 +#define __NR_rt_sigprocmask 175 +#define __NR_rt_sigpending 176 +#define __NR_rt_sigtimedwait 177 +#define __NR_rt_sigqueueinfo 178 +#define __NR_rt_sigsuspend 179 +#define __NR_pread64 180 +#define __NR_pwrite64 181 +#define __NR_chown 182 +#define __NR_getcwd 183 +#define __NR_capget 184 +#define __NR_capset 185 +#define __NR_sigaltstack 186 +#define __NR_sendfile 187 +#define __NR_vfork 190 +#define __NR_ugetrlimit 191 +#define __NR_mmap2 192 +#define __NR_truncate64 193 +#define __NR_ftruncate64 194 +#define __NR_stat64 195 +#define __NR_lstat64 196 +#define __NR_fstat64 197 +#define __NR_lchown32 198 +#define __NR_getuid32 199 +#define __NR_getgid32 200 +#define __NR_geteuid32 201 +#define __NR_getegid32 202 +#define __NR_setreuid32 203 +#define __NR_setregid32 204 +#define __NR_getgroups32 205 +#define __NR_setgroups32 206 +#define __NR_fchown32 207 +#define __NR_setresuid32 208 +#define __NR_getresuid32 209 +#define __NR_setresgid32 210 +#define __NR_getresgid32 211 +#define __NR_chown32 212 +#define __NR_setuid32 213 +#define __NR_setgid32 214 +#define __NR_setfsuid32 215 +#define __NR_setfsgid32 216 +#define __NR_pivot_root 217 +#define __NR_mincore 218 +#define __NR_madvise 219 +#define __NR_getdents64 220 +#define __NR_fcntl64 221 +#define __NR_gettid 224 +#define __NR_readahead 225 +#define __NR_setxattr 226 +#define __NR_lsetxattr 227 +#define __NR_fsetxattr 228 +#define __NR_getxattr 229 +#define __NR_lgetxattr 230 +#define __NR_fgetxattr 231 +#define __NR_listxattr 232 +#define __NR_llistxattr 233 +#define __NR_flistxattr 234 +#define __NR_removexattr 235 +#define __NR_lremovexattr 236 +#define __NR_fremovexattr 237 +#define __NR_tkill 238 +#define __NR_sendfile64 239 +#define __NR_futex 240 +#define __NR_sched_setaffinity 241 +#define __NR_sched_getaffinity 242 +#define __NR_io_setup 245 +#define __NR_io_destroy 246 +#define __NR_io_getevents 247 +#define __NR_io_submit 248 +#define __NR_io_cancel 249 +#define __NR_fadvise64 250 +#define __NR_exit_group 252 +#define __NR_lookup_dcookie 253 +#define __NR_epoll_create 254 +#define __NR_epoll_ctl 255 +#define __NR_epoll_wait 256 +#define __NR_remap_file_pages 257 +#define __NR_set_tid_address 258 +#define __NR_timer_create 259 +#define __NR_timer_settime 260 +#define __NR_timer_gettime 261 +#define __NR_timer_getoverrun 262 +#define __NR_timer_delete 263 +#define __NR_clock_settime 264 +#define __NR_clock_gettime 265 +#define __NR_clock_getres 266 +#define __NR_clock_nanosleep 267 +#define __NR_statfs64 268 +#define __NR_fstatfs64 269 +#define __NR_tgkill 270 +#define __NR_utimes 271 +#define __NR_fadvise64_64 272 +#define __NR_mbind 274 +#define __NR_get_mempolicy 275 +#define __NR_set_mempolicy 276 +#define __NR_mq_open 277 +#define __NR_mq_unlink 278 +#define __NR_mq_timedsend 279 +#define __NR_mq_timedreceive 280 +#define __NR_mq_notify 281 +#define __NR_mq_getsetattr 282 +#define __NR_kexec_load 283 +#define __NR_waitid 284 +#define __NR_add_key 285 +#define __NR_request_key 286 +#define __NR_keyctl 287 +#define __NR_ioprio_set 288 +#define __NR_ioprio_get 289 +#define __NR_inotify_init 290 +#define __NR_inotify_add_watch 291 +#define __NR_inotify_rm_watch 292 +#define __NR_migrate_pages 294 +#define __NR_openat 295 +#define __NR_mkdirat 296 +#define __NR_mknodat 297 +#define __NR_fchownat 298 +#define __NR_futimesat 299 +#define __NR_fstatat64 300 +#define __NR_unlinkat 301 +#define __NR_renameat 302 +#define __NR_linkat 303 +#define __NR_symlinkat 304 +#define __NR_readlinkat 305 +#define __NR_fchmodat 306 +#define __NR_faccessat 307 +#define __NR_pselect6 308 +#define __NR_ppoll 309 +#define __NR_unshare 310 +#define __NR_set_robust_list 311 +#define __NR_get_robust_list 312 +#define __NR_splice 313 +#define __NR_sync_file_range 314 +#define __NR_tee 315 +#define __NR_vmsplice 316 +#define __NR_move_pages 317 +#define __NR_getcpu 318 +#define __NR_epoll_pwait 319 +#define __NR_utimensat 320 +#define __NR_signalfd 321 +#define __NR_timerfd_create 322 +#define __NR_eventfd 323 +#define __NR_fallocate 324 +#define __NR_timerfd_settime 325 +#define __NR_timerfd_gettime 326 +#define __NR_signalfd4 327 +#define __NR_eventfd2 328 +#define __NR_epoll_create1 329 +#define __NR_dup3 330 +#define __NR_pipe2 331 +#define __NR_inotify_init1 332 +#define __NR_preadv 333 +#define __NR_pwritev 334 +#define __NR_rt_tgsigqueueinfo 335 +#define __NR_perf_event_open 336 +#define __NR_fanotify_init 337 +#define __NR_fanotify_mark 338 +#define __NR_prlimit64 339 +#define __NR_socket 340 +#define __NR_bind 341 +#define __NR_connect 342 +#define __NR_listen 343 +#define __NR_accept 344 +#define __NR_getsockname 345 +#define __NR_getpeername 346 +#define __NR_socketpair 347 +#define __NR_send 348 +#define __NR_sendto 349 +#define __NR_recv 350 +#define __NR_recvfrom 351 +#define __NR_shutdown 352 +#define __NR_setsockopt 353 +#define __NR_getsockopt 354 +#define __NR_sendmsg 355 +#define __NR_recvmsg 356 +#define __NR_recvmmsg 357 +#define __NR_accept4 358 +#define __NR_name_to_handle_at 359 +#define __NR_open_by_handle_at 360 +#define __NR_clock_adjtime 361 +#define __NR_syncfs 362 +#define __NR_sendmmsg 363 +#define __NR_setns 364 +#define __NR_process_vm_readv 365 +#define __NR_process_vm_writev 366 +#define __NR_kcmp 367 +#define __NR_finit_module 368 + + +/* Repeated with SYS_ prefix */ + +#define SYS_restart_syscall 0 +#define SYS_exit 1 +#define SYS_fork 2 +#define SYS_read 3 +#define SYS_write 4 +#define SYS_open 5 +#define SYS_close 6 +#define SYS_waitpid 7 +#define SYS_creat 8 +#define SYS_link 9 +#define SYS_unlink 10 +#define SYS_execve 11 +#define SYS_chdir 12 +#define SYS_time 13 +#define SYS_mknod 14 +#define SYS_chmod 15 +#define SYS_lchown 16 +#define SYS_oldstat 18 +#define SYS_lseek 19 +#define SYS_getpid 20 +#define SYS_mount 21 +#define SYS_umount 22 +#define SYS_setuid 23 +#define SYS_getuid 24 +#define SYS_stime 25 +#define SYS_ptrace 26 +#define SYS_alarm 27 +#define SYS_oldfstat 28 +#define SYS_pause 29 +#define SYS_utime 30 +#define SYS_access 33 +#define SYS_nice 34 +#define SYS_sync 36 +#define SYS_kill 37 +#define SYS_rename 38 +#define SYS_mkdir 39 +#define SYS_rmdir 40 +#define SYS_dup 41 +#define SYS_pipe 42 +#define SYS_times 43 +#define SYS_brk 45 +#define SYS_setgid 46 +#define SYS_getgid 47 +#define SYS_signal 48 +#define SYS_geteuid 49 +#define SYS_getegid 50 +#define SYS_acct 51 +#define SYS_umount2 52 +#define SYS_ioctl 54 +#define SYS_fcntl 55 +#define SYS_setpgid 57 +#define SYS_umask 60 +#define SYS_chroot 61 +#define SYS_ustat 62 +#define SYS_dup2 63 +#define SYS_getppid 64 +#define SYS_getpgrp 65 +#define SYS_setsid 66 +#define SYS_sigaction 67 +#define SYS_sgetmask 68 +#define SYS_ssetmask 69 +#define SYS_setreuid 70 +#define SYS_setregid 71 +#define SYS_sigsuspend 72 +#define SYS_sigpending 73 +#define SYS_sethostname 74 +#define SYS_setrlimit 75 +#define SYS_getrlimit 76 +#define SYS_getrusage 77 +#define SYS_gettimeofday 78 +#define SYS_settimeofday 79 +#define SYS_getgroups 80 +#define SYS_setgroups 81 +#define SYS_symlink 83 +#define SYS_oldlstat 84 +#define SYS_readlink 85 +#define SYS_uselib 86 +#define SYS_swapon 87 +#define SYS_reboot 88 +#define SYS_readdir 89 +#define SYS_mmap 90 +#define SYS_munmap 91 +#define SYS_truncate 92 +#define SYS_ftruncate 93 +#define SYS_fchmod 94 +#define SYS_fchown 95 +#define SYS_getpriority 96 +#define SYS_setpriority 97 +#define SYS_statfs 99 +#define SYS_fstatfs 100 +#define SYS_socketcall 102 +#define SYS_syslog 103 +#define SYS_setitimer 104 +#define SYS_getitimer 105 +#define SYS_stat 106 +#define SYS_lstat 107 +#define SYS_fstat 108 +#define SYS_olduname 109 +#define SYS_vhangup 111 +#define SYS_wait4 114 +#define SYS_swapoff 115 +#define SYS_sysinfo 116 +#define SYS_ipc 117 +#define SYS_fsync 118 +#define SYS_sigreturn 119 +#define SYS_clone 120 +#define SYS_setdomainname 121 +#define SYS_uname 122 +#define SYS_cacheflush 123 +#define SYS_adjtimex 124 +#define SYS_mprotect 125 +#define SYS_sigprocmask 126 +#define SYS_init_module 128 +#define SYS_delete_module 129 +#define SYS_quotactl 131 +#define SYS_getpgid 132 +#define SYS_fchdir 133 +#define SYS_bdflush 134 +#define SYS_sysfs 135 +#define SYS_personality 136 +#define SYS_setfsuid 138 +#define SYS_setfsgid 139 +#define SYS__llseek 140 +#define SYS_getdents 141 +#define SYS__newselect 142 +#define SYS_flock 143 +#define SYS_msync 144 +#define SYS_readv 145 +#define SYS_writev 146 +#define SYS_getsid 147 +#define SYS_fdatasync 148 +#define SYS__sysctl 149 +#define SYS_mlock 150 +#define SYS_munlock 151 +#define SYS_mlockall 152 +#define SYS_munlockall 153 +#define SYS_sched_setparam 154 +#define SYS_sched_getparam 155 +#define SYS_sched_setscheduler 156 +#define SYS_sched_getscheduler 157 +#define SYS_sched_yield 158 +#define SYS_sched_get_priority_max 159 +#define SYS_sched_get_priority_min 160 +#define SYS_sched_rr_get_interval 161 +#define SYS_nanosleep 162 +#define SYS_mremap 163 +#define SYS_setresuid 164 +#define SYS_getresuid 165 +#define SYS_poll 168 +#define SYS_nfsservctl 169 +#define SYS_setresgid 170 +#define SYS_getresgid 171 +#define SYS_prctl 172 +#define SYS_rt_sigreturn 173 +#define SYS_rt_sigaction 174 +#define SYS_rt_sigprocmask 175 +#define SYS_rt_sigpending 176 +#define SYS_rt_sigtimedwait 177 +#define SYS_rt_sigqueueinfo 178 +#define SYS_rt_sigsuspend 179 +#define SYS_pread64 180 +#define SYS_pwrite64 181 +#define SYS_chown 182 +#define SYS_getcwd 183 +#define SYS_capget 184 +#define SYS_capset 185 +#define SYS_sigaltstack 186 +#define SYS_sendfile 187 +#define SYS_vfork 190 +#define SYS_ugetrlimit 191 +#define SYS_mmap2 192 +#define SYS_truncate64 193 +#define SYS_ftruncate64 194 +#define SYS_stat64 195 +#define SYS_lstat64 196 +#define SYS_fstat64 197 +#define SYS_lchown32 198 +#define SYS_getuid32 199 +#define SYS_getgid32 200 +#define SYS_geteuid32 201 +#define SYS_getegid32 202 +#define SYS_setreuid32 203 +#define SYS_setregid32 204 +#define SYS_getgroups32 205 +#define SYS_setgroups32 206 +#define SYS_fchown32 207 +#define SYS_setresuid32 208 +#define SYS_getresuid32 209 +#define SYS_setresgid32 210 +#define SYS_getresgid32 211 +#define SYS_chown32 212 +#define SYS_setuid32 213 +#define SYS_setgid32 214 +#define SYS_setfsuid32 215 +#define SYS_setfsgid32 216 +#define SYS_pivot_root 217 +#define SYS_mincore 218 +#define SYS_madvise 219 +#define SYS_getdents64 220 +#define SYS_fcntl64 221 +#define SYS_gettid 224 +#define SYS_readahead 225 +#define SYS_setxattr 226 +#define SYS_lsetxattr 227 +#define SYS_fsetxattr 228 +#define SYS_getxattr 229 +#define SYS_lgetxattr 230 +#define SYS_fgetxattr 231 +#define SYS_listxattr 232 +#define SYS_llistxattr 233 +#define SYS_flistxattr 234 +#define SYS_removexattr 235 +#define SYS_lremovexattr 236 +#define SYS_fremovexattr 237 +#define SYS_tkill 238 +#define SYS_sendfile64 239 +#define SYS_futex 240 +#define SYS_sched_setaffinity 241 +#define SYS_sched_getaffinity 242 +#define SYS_io_setup 245 +#define SYS_io_destroy 246 +#define SYS_io_getevents 247 +#define SYS_io_submit 248 +#define SYS_io_cancel 249 +#define SYS_fadvise64 250 +#define SYS_exit_group 252 +#define SYS_lookup_dcookie 253 +#define SYS_epoll_create 254 +#define SYS_epoll_ctl 255 +#define SYS_epoll_wait 256 +#define SYS_remap_file_pages 257 +#define SYS_set_tid_address 258 +#define SYS_timer_create 259 +#define SYS_timer_settime 260 +#define SYS_timer_gettime 261 +#define SYS_timer_getoverrun 262 +#define SYS_timer_delete 263 +#define SYS_clock_settime 264 +#define SYS_clock_gettime 265 +#define SYS_clock_getres 266 +#define SYS_clock_nanosleep 267 +#define SYS_statfs64 268 +#define SYS_fstatfs64 269 +#define SYS_tgkill 270 +#define SYS_utimes 271 +#define SYS_fadvise64_64 272 +#define SYS_mbind 274 +#define SYS_get_mempolicy 275 +#define SYS_set_mempolicy 276 +#define SYS_mq_open 277 +#define SYS_mq_unlink 278 +#define SYS_mq_timedsend 279 +#define SYS_mq_timedreceive 280 +#define SYS_mq_notify 281 +#define SYS_mq_getsetattr 282 +#define SYS_kexec_load 283 +#define SYS_waitid 284 +#define SYS_add_key 285 +#define SYS_request_key 286 +#define SYS_keyctl 287 +#define SYS_ioprio_set 288 +#define SYS_ioprio_get 289 +#define SYS_inotify_init 290 +#define SYS_inotify_add_watch 291 +#define SYS_inotify_rm_watch 292 +#define SYS_migrate_pages 294 +#define SYS_openat 295 +#define SYS_mkdirat 296 +#define SYS_mknodat 297 +#define SYS_fchownat 298 +#define SYS_futimesat 299 +#define SYS_fstatat64 300 +#define SYS_unlinkat 301 +#define SYS_renameat 302 +#define SYS_linkat 303 +#define SYS_symlinkat 304 +#define SYS_readlinkat 305 +#define SYS_fchmodat 306 +#define SYS_faccessat 307 +#define SYS_pselect6 308 +#define SYS_ppoll 309 +#define SYS_unshare 310 +#define SYS_set_robust_list 311 +#define SYS_get_robust_list 312 +#define SYS_splice 313 +#define SYS_sync_file_range 314 +#define SYS_tee 315 +#define SYS_vmsplice 316 +#define SYS_move_pages 317 +#define SYS_getcpu 318 +#define SYS_epoll_pwait 319 +#define SYS_utimensat 320 +#define SYS_signalfd 321 +#define SYS_timerfd_create 322 +#define SYS_eventfd 323 +#define SYS_fallocate 324 +#define SYS_timerfd_settime 325 +#define SYS_timerfd_gettime 326 +#define SYS_signalfd4 327 +#define SYS_eventfd2 328 +#define SYS_epoll_create1 329 +#define SYS_dup3 330 +#define SYS_pipe2 331 +#define SYS_inotify_init1 332 +#define SYS_preadv 333 +#define SYS_pwritev 334 +#define SYS_rt_tgsigqueueinfo 335 +#define SYS_perf_event_open 336 +#define SYS_fanotify_init 337 +#define SYS_fanotify_mark 338 +#define SYS_prlimit64 339 +#define SYS_socket 340 +#define SYS_bind 341 +#define SYS_connect 342 +#define SYS_listen 343 +#define SYS_accept 344 +#define SYS_getsockname 345 +#define SYS_getpeername 346 +#define SYS_socketpair 347 +#define SYS_send 348 +#define SYS_sendto 349 +#define SYS_recv 350 +#define SYS_recvfrom 351 +#define SYS_shutdown 352 +#define SYS_setsockopt 353 +#define SYS_getsockopt 354 +#define SYS_sendmsg 355 +#define SYS_recvmsg 356 +#define SYS_recvmmsg 357 +#define SYS_accept4 358 +#define SYS_name_to_handle_at 359 +#define SYS_open_by_handle_at 360 +#define SYS_clock_adjtime 361 +#define SYS_syncfs 362 +#define SYS_sendmmsg 363 +#define SYS_setns 364 +#define SYS_process_vm_readv 365 +#define SYS_process_vm_writev 366 +#define SYS_kcmp 367 +#define SYS_finit_module 368 diff --git a/arch/sh/bits/termios.h b/arch/sh/bits/termios.h new file mode 100644 index 00000000..f0d81b13 --- /dev/null +++ b/arch/sh/bits/termios.h @@ -0,0 +1,160 @@ +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 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 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 ECHO 0000010 +#define ECHOE 0000020 +#define ECHOK 0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define TOSTOP 0000400 +#define IEXTEN 0100000 + +#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 + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +#define CBAUDEX 0010000 +#define CRTSCTS 020000000000 +#define EXTPROC 0200000 +#define XTABS 0014000 +#endif diff --git a/arch/sh/crt_arch.h b/arch/sh/crt_arch.h new file mode 100644 index 00000000..a69d1c9f --- /dev/null +++ b/arch/sh/crt_arch.h @@ -0,0 +1,9 @@ +__asm__("\ +.global _start \n\ +_start: \n\ + mov r15, r4 \n\ + mov #-16, r0 \n\ + and r0, r15 \n\ + bsr __cstart \n\ + nop \n\ +"); diff --git a/arch/sh/pthread_arch.h b/arch/sh/pthread_arch.h new file mode 100644 index 00000000..65c389ff --- /dev/null +++ b/arch/sh/pthread_arch.h @@ -0,0 +1,11 @@ +static inline struct pthread *__pthread_self() +{ + char *self; + __asm__ __volatile__ ("stc gbr,%0" : "=r" (self) ); + return (struct pthread *) (self + 8 - sizeof(struct pthread)); +} + +#define TLS_ABOVE_TP +#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8) + +#define CANCEL_REG_IP 17 diff --git a/arch/sh/reloc.h b/arch/sh/reloc.h new file mode 100644 index 00000000..97bee6ae --- /dev/null +++ b/arch/sh/reloc.h @@ -0,0 +1,47 @@ +#if __BYTE_ORDER == __LITTLE_ENDIAN +#define ENDIAN_SUFFIX "l" +#else +#define ENDIAN_SUFFIX "" +#endif + +#define LDSO_ARCH "sh" ENDIAN_SUFFIX + +#define IS_COPY(x) ((x) == R_SH_COPY) +#define IS_PLT(x) ((x) == R_SH_JMP_SLOT) + +static inline void do_single_reloc( + struct dso *self, unsigned char *base_addr, + size_t *reloc_addr, int type, size_t addend, + Sym *sym, size_t sym_size, + struct symdef def, size_t sym_val) +{ + switch(type) { + case R_SH_GLOB_DAT: + case R_SH_JMP_SLOT: + *reloc_addr = sym_val; + break; + case R_SH_RELATIVE: + *reloc_addr = (size_t)base_addr + addend; + break; + case R_SH_DIR32: + *reloc_addr = sym_val + addend; + break; + case R_SH_REL32: + *reloc_addr = sym_val + addend - (size_t)reloc_addr + (size_t)base_addr; + break; + case R_SH_COPY: + memcpy(reloc_addr, (void *)sym_val, sym_size); + break; + case R_SH_TLS_DTPMOD32: + *reloc_addr += def.dso ? def.dso->tls_id : self->tls_id; + break; + case R_SH_TLS_DTPOFF32: + *reloc_addr += def.sym->st_value; + break; + case R_SH_TLS_TPOFF32: + *reloc_addr += def.sym + ? def.sym->st_value + def.dso->tls_offset + 8 + : self->tls_offset + 8; + break; + } +} diff --git a/arch/sh/src/__fpsrc_values.c b/arch/sh/src/__fpsrc_values.c new file mode 100644 index 00000000..56056617 --- /dev/null +++ b/arch/sh/src/__fpsrc_values.c @@ -0,0 +1,2 @@ +/* used by gcc for switching the FPU between single and double precision */ +const unsigned long __fpscr_values[2] = { 0, 0x80000 }; diff --git a/arch/sh/src/atomic.c b/arch/sh/src/atomic.c new file mode 100644 index 00000000..d29b0538 --- /dev/null +++ b/arch/sh/src/atomic.c @@ -0,0 +1,146 @@ +#include "libc.h" + +#define LLSC_CLOBBERS "r0", "t", "memory" +#define LLSC_START(mem) \ + "0: movli.l @" mem ", r0\n" +#define LLSC_END(mem) \ + "1: movco.l r0, @" mem "\n" \ + " bf 0b\n" \ + " synco\n" + +/* gusa is a hack in the kernel which lets you create a sequence of instructions + * which will be restarted if the process is preempted in the middle of the + * sequence. It will do for implementing atomics on non-smp systems. ABI is: + * r0 = address of first instruction after the atomic sequence + * r1 = original stack pointer + * r15 = -1 * length of atomic sequence in bytes + */ +#define GUSA_CLOBBERS "r0", "r1", "memory" +#define GUSA_START(mem,old,nop) \ + " .align 2\n" \ + " mova 1f, r0\n" \ + nop \ + " mov r15, r1\n" \ + " mov #(0f-1f), r15\n" \ + "0: mov.l @" mem ", " old "\n" +/* the target of mova must be 4 byte aligned, so we may need a nop */ +#define GUSA_START_ODD(mem,old) GUSA_START(mem,old,"") +#define GUSA_START_EVEN(mem,old) GUSA_START(mem,old,"\tnop\n") +#define GUSA_END(mem,new) \ + " mov.l " new ", @" mem "\n" \ + "1: mov r1, r15\n" + +#define CPU_HAS_LLSC 0x0040 + +int __sh_cas(volatile int *p, int t, int s) +{ + int old; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%1") + " mov r0, %0\n" + " cmp/eq %0, %2\n" + " bf 1f\n" + " mov %3, r0\n" + LLSC_END("%1") + : "=&r"(old) : "r"(p), "r"(t), "r"(s) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_EVEN("%1", "%0") + " cmp/eq %0, %2\n" + " bf 1f\n" + GUSA_END("%1", "%3") + : "=&r"(old) : "r"(p), "r"(t), "r"(s) : GUSA_CLOBBERS, "t"); + } + return old; +} + +int __sh_swap(volatile int *x, int v) +{ + int old; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%1") + " mov r0, %0\n" + " mov %2, r0\n" + LLSC_END("%1") + : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_EVEN("%1", "%0") + GUSA_END("%1", "%2") + : "=&r"(old) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } + return old; +} + +int __sh_fetch_add(volatile int *x, int v) +{ + int old, dummy; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%1") + " mov r0, %0\n" + " add %2, r0\n" + LLSC_END("%1") + : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_EVEN("%2", "%0") + " mov %0, %1\n" + " add %3, %1\n" + GUSA_END("%2", "%1") + : "=&r"(old), "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } + return old; +} + +void __sh_store(volatile int *p, int x) +{ + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + " mov.l %1, @%0\n" + " synco\n" + : : "r"(p), "r"(x) : "memory"); + } else { + __asm__ __volatile__( + " mov.l %1, @%0\n" + : : "r"(p), "r"(x) : "memory"); + } +} + +void __sh_and(volatile int *x, int v) +{ + int dummy; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%0") + " and %1, r0\n" + LLSC_END("%0") + : : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_ODD("%1", "%0") + " and %2, %0\n" + GUSA_END("%1", "%0") + : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } +} + +void __sh_or(volatile int *x, int v) +{ + int dummy; + if (__hwcap & CPU_HAS_LLSC) { + __asm__ __volatile__( + LLSC_START("%0") + " or %1, r0\n" + LLSC_END("%0") + : : "r"(x), "r"(v) : LLSC_CLOBBERS); + } else { + __asm__ __volatile__( + GUSA_START_ODD("%1", "%0") + " or %2, %0\n" + GUSA_END("%1", "%0") + : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); + } +} diff --git a/arch/sh/syscall_arch.h b/arch/sh/syscall_arch.h new file mode 100644 index 00000000..7ee21a56 --- /dev/null +++ b/arch/sh/syscall_arch.h @@ -0,0 +1,87 @@ +#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)) + +/* The extra OR instructions are to work around a hardware bug: + * http://documentation.renesas.com/doc/products/mpumcu/tu/tnsh7456ae.pdf + */ +#define __asm_syscall(trapno, ...) do { \ + __asm__ __volatile__ ( \ + "trapa #" #trapno "\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + "or r0, r0\n" \ + : "=r"(r0) : __VA_ARGS__ : "memory"); \ + return r0; \ + } while (0) + +static inline long __syscall0(long n) +{ + register long r3 __asm__("r3") = n; + register long r0 __asm__("r0"); + __asm_syscall(16, "r"(r3)); +} + +static inline long __syscall1(long n, long a) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r0 __asm__("r0"); + __asm_syscall(17, "r"(r3), "r"(r4)); +} + +static inline long __syscall2(long n, long a, long b) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r0 __asm__("r0"); + __asm_syscall(18, "r"(r3), "r"(r4), "r"(r5)); +} + +static inline long __syscall3(long n, long a, long b, long c) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r0 __asm__("r0"); + __asm_syscall(19, "r"(r3), "r"(r4), "r"(r5), "r"(r6)); +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0"); + __asm_syscall(20, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7)); +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0") = e; + __asm_syscall(21, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0)); +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long r3 __asm__("r3") = n; + register long r4 __asm__("r4") = a; + register long r5 __asm__("r5") = b; + register long r6 __asm__("r6") = c; + register long r7 __asm__("r7") = d; + register long r0 __asm__("r0") = e; + register long r1 __asm__("r1") = f; + __asm_syscall(22, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0), "r"(r1)); +} diff --git a/arch/superh/atomic.h b/arch/superh/atomic.h deleted file mode 100644 index 104a4f12..00000000 --- a/arch/superh/atomic.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef _INTERNAL_ATOMIC_H -#define _INTERNAL_ATOMIC_H - -#include - -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); -} - -int __sh_cas(volatile int *, int, int); -int __sh_swap(volatile int *, int); -int __sh_fetch_add(volatile int *, int); -void __sh_store(volatile int *, int); -void __sh_and(volatile int *, int); -void __sh_or(volatile int *, int); - -#define a_cas(p,t,s) __sh_cas(p,t,s) -#define a_swap(x,v) __sh_swap(x,v) -#define a_fetch_add(x,v) __sh_fetch_add(x, v) -#define a_store(x,v) __sh_store(x, v) -#define a_and(x,v) __sh_and(x, v) -#define a_or(x,v) __sh_or(x, v) - -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 void a_inc(volatile int *x) -{ - a_fetch_add(x, 1); -} - -static inline void a_dec(volatile int *x) -{ - a_fetch_add(x, -1); -} - -static inline void a_spin() -{ -} - -static inline void a_crash() -{ - *(volatile char *)0=0; -} - -static inline void a_or_l(volatile void *p, long v) -{ - a_or(p, v); -} - -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/superh/bits/alltypes.h.in b/arch/superh/bits/alltypes.h.in deleted file mode 100644 index e9d8dd8a..00000000 --- a/arch/superh/bits/alltypes.h.in +++ /dev/null @@ -1,23 +0,0 @@ -#define _Addr int -#define _Int64 long long -#define _Reg int - -TYPEDEF __builtin_va_list va_list; -TYPEDEF __builtin_va_list __isoc_va_list; - -#ifndef __cplusplus -TYPEDEF long wchar_t; -#endif -TYPEDEF unsigned wint_t; - -TYPEDEF float float_t; -TYPEDEF double double_t; - -TYPEDEF long time_t; -TYPEDEF long suseconds_t; - -TYPEDEF struct { union { int __i[9]; unsigned __s[9]; } __u; } pthread_attr_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; diff --git a/arch/superh/bits/endian.h b/arch/superh/bits/endian.h deleted file mode 100644 index 4744b97d..00000000 --- a/arch/superh/bits/endian.h +++ /dev/null @@ -1,5 +0,0 @@ -#if __LITTLE_ENDIAN__ -#define __BYTE_ORDER __LITTLE_ENDIAN -#else -#define __BYTE_ORDER __BIG_ENDIAN -#endif diff --git a/arch/superh/bits/errno.h b/arch/superh/bits/errno.h deleted file mode 100644 index d2e1eeee..00000000 --- a/arch/superh/bits/errno.h +++ /dev/null @@ -1,134 +0,0 @@ -#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 -#define EHWPOISON 133 diff --git a/arch/superh/bits/fcntl.h b/arch/superh/bits/fcntl.h deleted file mode 100644 index 0fa8e19c..00000000 --- a/arch/superh/bits/fcntl.h +++ /dev/null @@ -1,39 +0,0 @@ -#define O_CREAT 0100 -#define O_EXCL 0200 -#define O_NOCTTY 0400 -#define O_TRUNC 01000 -#define O_APPEND 02000 -#define O_NONBLOCK 04000 -#define O_DSYNC 010000 -#define O_SYNC 04010000 -#define O_RSYNC 04010000 -#define O_DIRECTORY 0200000 -#define O_NOFOLLOW 0400000 -#define O_CLOEXEC 02000000 - -#define O_ASYNC 020000 -#define O_DIRECT 040000 -#define O_LARGEFILE 0100000 -#define O_NOATIME 01000000 -#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 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 - -#define F_GETOWNER_UIDS 17 diff --git a/arch/superh/bits/fenv.h b/arch/superh/bits/fenv.h deleted file mode 100644 index f454a15d..00000000 --- a/arch/superh/bits/fenv.h +++ /dev/null @@ -1,17 +0,0 @@ -#define FE_TONEAREST 0 -#define FE_TOWARDZERO 1 - -#define FE_INEXACT 0x04 -#define FE_UNDERFLOW 0x08 -#define FE_OVERFLOW 0x10 -#define FE_DIVBYZERO 0x20 -#define FE_INVALID 0x40 -#define FE_ALL_EXCEPT 0x7c - -typedef unsigned long fexcept_t; - -typedef struct { - unsigned long __cw; -} fenv_t; - -#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/arch/superh/bits/float.h b/arch/superh/bits/float.h deleted file mode 100644 index ec46b94b..00000000 --- a/arch/superh/bits/float.h +++ /dev/null @@ -1,17 +0,0 @@ -#define FLT_ROUNDS 1 -#define FLT_EVAL_METHOD 0 - -#define LDBL_TRUE_MIN 4.94065645841246544177e-324L -#define LDBL_MIN 2.22507385850720138309e-308L -#define LDBL_MAX 1.79769313486231570815e+308L -#define LDBL_EPSILON 2.22044604925031308085e-16L - -#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/superh/bits/io.h b/arch/superh/bits/io.h deleted file mode 100644 index e69de29b..00000000 diff --git a/arch/superh/bits/ioctl.h b/arch/superh/bits/ioctl.h deleted file mode 100644 index c0b668b2..00000000 --- a/arch/superh/bits/ioctl.h +++ /dev/null @@ -1,205 +0,0 @@ -#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) ) -#define _IOC_NONE 0U -#define _IOC_WRITE 1U -#define _IOC_READ 2U - -#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 FIOCLEX _IO('f', 1) -#define FIONCLEX _IO('f', 2) -#define FIOASYNC _IOW('f', 125, int) -#define FIONBIO _IOW('f', 126, int) -#define FIONREAD _IOR('f', 127, int) -#define TIOCINQ FIONREAD -#define FIOQSIZE _IOR('f', 128, char[8]) - -#define TCGETA _IOR('t', 23, char[18]) -#define TCSETA _IOW('t', 24, char[18]) -#define TCSETAW _IOW('t', 25, char[18]) -#define TCSETAF _IOW('t', 28, char[18]) - -#define TCSBRK _IO('t', 29) -#define TCXONC _IO('t', 30) -#define TCFLSH _IO('t', 31) - -#define TIOCSWINSZ _IOW('t', 103, char[8]) -#define TIOCGWINSZ _IOR('t', 104, char[8]) -#define TIOCSTART _IO('t', 110) -#define TIOCSTOP _IO('t', 111) -#define TIOCOUTQ _IOR('t', 115, int) - -#define TIOCSPGRP _IOW('t', 118, int) -#define TIOCGPGRP _IOR('t', 119, int) - -#define TIOCEXCL _IO('T', 12) -#define TIOCNXCL _IO('T', 13) -#define TIOCSCTTY _IO('T', 14) - -#define TIOCSTI _IOW('T', 18, char) -#define TIOCMGET _IOR('T', 21, unsigned int) -#define TIOCMBIS _IOW('T', 22, unsigned int) -#define TIOCMBIC _IOW('T', 23, unsigned int) -#define TIOCMSET _IOW('T', 24, unsigned int) -#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 TIOCGSOFTCAR _IOR('T', 25, unsigned int) -#define TIOCSSOFTCAR _IOW('T', 26, unsigned int) -#define TIOCLINUX _IOW('T', 28, char) -#define TIOCCONS _IO('T', 29) -#define TIOCGSERIAL _IOR('T', 30, char[60]) -#define TIOCSSERIAL _IOW('T', 31, char[60]) -#define TIOCPKT _IOW('T', 32, int) -#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 TIOCNOTTY _IO('T', 34) -#define TIOCSETD _IOW('T', 35, int) -#define TIOCGETD _IOR('T', 36, int) -#define TCSBRKP _IOW('T', 37, int) -#define TIOCSBRK _IO('T', 39) -#define TIOCCBRK _IO('T', 40) -#define TIOCGSID _IOR('T', 41, int) -#define TCGETS _IOR('T', 42, char[44]) -#define TCSETS _IOW('T', 43, char[44]) -#define TCSETSW _IOW('T', 44, char[44]) -#define TCSETSF _IOW('T', 45, char[44]) -#define TIOCGPTN _IOR('T', 48, unsigned int) -#define TIOCSPTLCK _IOW('T', 49, int) -#define TIOCGDEV _IOR('T', 50, unsigned int) -#define TIOCSIG _IOW('T', 54, int) -#define TIOCVHANGUP _IO('T', 55) -#define TIOCGPKT _IOR('T', 56, int) -#define TIOCGPTLCK _IOR('T', 57, int) -#define TIOCGEXCL _IOR('T', 64, int) - -#define TIOCSERCONFIG _IO('T', 83) -#define TIOCSERGWILD _IOR('T', 84, int) -#define TIOCSERSWILD _IOW('T', 85, int) -#define TIOCGLCKTRMIOS _IO('T', 86) -#define TIOCSLCKTRMIOS _IO('T', 87) -#define TIOCSERGSTRUCT _IOR('T', 88, char[216]) -#define TIOCSERGETLSR _IOR('T', 89, unsigned int) -#define TIOCSER_TEMT 0x01 -#define TIOCSERGETMULTI _IOR('T', 90, char[168]) -#define TIOCSERSETMULTI _IOW('T', 91, char[168]) - -#define TIOCMIWAIT _IO('T', 92) -#define TIOCGICOUNT _IO('T', 93) - -struct winsize { - unsigned short ws_row; - unsigned short ws_col; - unsigned short ws_xpixel; - unsigned short ws_ypixel; -}; - -#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 FIOGETOWN _IOR('f', 123, int) -#define FIOSETOWN _IOW('f', 124, int) - -#define SIOCATMARK _IOR('s', 7, int) -#define SIOCSPGRP _IOW('s', 8, int) -#define SIOCGPGRP _IOW('s', 9, int) -#define SIOCGSTAMP _IOR('s', 100, char[8]) - -#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/superh/bits/ipc.h b/arch/superh/bits/ipc.h deleted file mode 100644 index b748d3b7..00000000 --- a/arch/superh/bits/ipc.h +++ /dev/null @@ -1,14 +0,0 @@ -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; -}; - -#define IPC_64 0x100 diff --git a/arch/superh/bits/limits.h b/arch/superh/bits/limits.h deleted file mode 100644 index 65a3dd64..00000000 --- a/arch/superh/bits/limits.h +++ /dev/null @@ -1,8 +0,0 @@ -#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/superh/bits/mman.h b/arch/superh/bits/mman.h deleted file mode 100644 index f199f4b4..00000000 --- a/arch/superh/bits/mman.h +++ /dev/null @@ -1,62 +0,0 @@ -#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 MAP_NORESERVE 0x4000 -#define MAP_GROWSDOWN 0x0100 -#define MAP_DENYWRITE 0x0800 -#define MAP_EXECUTABLE 0x1000 -#define MAP_LOCKED 0x2000 -#define MAP_POPULATE 0x8000 -#define MAP_NONBLOCK 0x10000 -#define MAP_STACK 0x20000 -#define MAP_HUGETLB 0x40000 - -#define POSIX_MADV_NORMAL 0 -#define POSIX_MADV_RANDOM 1 -#define POSIX_MADV_SEQUENTIAL 2 -#define POSIX_MADV_WILLNEED 3 -#define POSIX_MADV_DONTNEED 4 - -#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_DONTDUMP 16 -#define MADV_DODUMP 17 -#define MADV_HWPOISON 100 -#define MADV_SOFT_OFFLINE 101 - -#define MREMAP_MAYMOVE 1 -#define MREMAP_FIXED 2 -#endif diff --git a/arch/superh/bits/msg.h b/arch/superh/bits/msg.h deleted file mode 100644 index 3db8576b..00000000 --- a/arch/superh/bits/msg.h +++ /dev/null @@ -1,16 +0,0 @@ -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/superh/bits/posix.h b/arch/superh/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/superh/bits/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define _POSIX_V6_ILP32_OFFBIG 1 -#define _POSIX_V7_ILP32_OFFBIG 1 diff --git a/arch/superh/bits/setjmp.h b/arch/superh/bits/setjmp.h deleted file mode 100644 index bef7fe2a..00000000 --- a/arch/superh/bits/setjmp.h +++ /dev/null @@ -1 +0,0 @@ -typedef unsigned long __jmp_buf[13]; diff --git a/arch/superh/bits/shm.h b/arch/superh/bits/shm.h deleted file mode 100644 index a210fd4a..00000000 --- a/arch/superh/bits/shm.h +++ /dev/null @@ -1,28 +0,0 @@ -#define SHMLBA 16384 - -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; -}; - -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; -}; diff --git a/arch/superh/bits/signal.h b/arch/superh/bits/signal.h deleted file mode 100644 index 905ae3ac..00000000 --- a/arch/superh/bits/signal.h +++ /dev/null @@ -1,76 +0,0 @@ -#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ - || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) - -#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -typedef int greg_t, gregset_t[16]; -typedef int freg_t, fpregset_t[16]; -typedef struct sigcontext { - unsigned long oldmask; - unsigned long sc_regs[16]; - unsigned long sc_pc, sc_pr, sc_sr; - unsigned long sc_gbr, sc_mach, sc_macl; - unsigned long sc_fpregs[16]; - unsigned long sc_xfpregs[16]; - unsigned int sc_fpscr, sc_fpul, sc_ownedfp; -} mcontext_t; -#else -typedef struct { - unsigned long __regs[58]; -} mcontext_t; -#endif - -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 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 - -#endif - -#define SIGHUP 1 -#define SIGINT 2 -#define SIGQUIT 3 -#define SIGILL 4 -#define SIGTRAP 5 -#define SIGABRT 6 -#define SIGIOT SIGABRT -#define SIGBUS 7 -#define SIGFPE 8 -#define SIGKILL 9 -#define SIGUSR1 10 -#define SIGSEGV 11 -#define SIGUSR2 12 -#define SIGPIPE 13 -#define SIGALRM 14 -#define SIGTERM 15 -#define SIGSTKFLT 16 -#define SIGCHLD 17 -#define SIGCONT 18 -#define SIGSTOP 19 -#define SIGTSTP 20 -#define SIGTTIN 21 -#define SIGTTOU 22 -#define SIGURG 23 -#define SIGXCPU 24 -#define SIGXFSZ 25 -#define SIGVTALRM 26 -#define SIGPROF 27 -#define SIGWINCH 28 -#define SIGIO 29 -#define SIGPOLL 29 -#define SIGPWR 30 -#define SIGSYS 31 -#define SIGUNUSED SIGSYS - -#define _NSIG 65 diff --git a/arch/superh/bits/socket.h b/arch/superh/bits/socket.h deleted file mode 100644 index 36febbc2..00000000 --- a/arch/superh/bits/socket.h +++ /dev/null @@ -1,17 +0,0 @@ -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; -}; - -struct cmsghdr -{ - socklen_t cmsg_len; - int cmsg_level; - int cmsg_type; -}; diff --git a/arch/superh/bits/stat.h b/arch/superh/bits/stat.h deleted file mode 100644 index bb9314a5..00000000 --- a/arch/superh/bits/stat.h +++ /dev/null @@ -1,22 +0,0 @@ -/* copied from kernel definition, but with padding replaced - * by the corresponding correctly-sized userspace types. */ - -struct stat -{ - dev_t st_dev; - int __st_dev_padding; - long __st_ino_truncated; - mode_t st_mode; - nlink_t st_nlink; - uid_t st_uid; - gid_t st_gid; - dev_t st_rdev; - int __st_rdev_padding; - off_t st_size; - blksize_t st_blksize; - blkcnt_t st_blocks; - struct timespec st_atim; - struct timespec st_mtim; - struct timespec st_ctim; - ino_t st_ino; -}; diff --git a/arch/superh/bits/statfs.h b/arch/superh/bits/statfs.h deleted file mode 100644 index f103f4e4..00000000 --- a/arch/superh/bits/statfs.h +++ /dev/null @@ -1,7 +0,0 @@ -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/superh/bits/stdarg.h b/arch/superh/bits/stdarg.h deleted file mode 100644 index fde37814..00000000 --- a/arch/superh/bits/stdarg.h +++ /dev/null @@ -1,4 +0,0 @@ -#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/superh/bits/stdint.h b/arch/superh/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/superh/bits/stdint.h +++ /dev/null @@ -1,20 +0,0 @@ -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 INT32_MIN -#define INTPTR_MAX INT32_MAX -#define UINTPTR_MAX UINT32_MAX -#define PTRDIFF_MIN INT32_MIN -#define PTRDIFF_MAX INT32_MAX -#define SIZE_MAX UINT32_MAX diff --git a/arch/superh/bits/syscall.h b/arch/superh/bits/syscall.h deleted file mode 100644 index 4b363bf2..00000000 --- a/arch/superh/bits/syscall.h +++ /dev/null @@ -1,684 +0,0 @@ -#define __NR_restart_syscall 0 -#define __NR_exit 1 -#define __NR_fork 2 -#define __NR_read 3 -#define __NR_write 4 -#define __NR_open 5 -#define __NR_close 6 -#define __NR_waitpid 7 -#define __NR_creat 8 -#define __NR_link 9 -#define __NR_unlink 10 -#define __NR_execve 11 -#define __NR_chdir 12 -#define __NR_time 13 -#define __NR_mknod 14 -#define __NR_chmod 15 -#define __NR_lchown 16 -#define __NR_oldstat 18 -#define __NR_lseek 19 -#define __NR_getpid 20 -#define __NR_mount 21 -#define __NR_umount 22 -#define __NR_setuid 23 -#define __NR_getuid 24 -#define __NR_stime 25 -#define __NR_ptrace 26 -#define __NR_alarm 27 -#define __NR_oldfstat 28 -#define __NR_pause 29 -#define __NR_utime 30 -#define __NR_access 33 -#define __NR_nice 34 -#define __NR_sync 36 -#define __NR_kill 37 -#define __NR_rename 38 -#define __NR_mkdir 39 -#define __NR_rmdir 40 -#define __NR_dup 41 -#define __NR_pipe 42 -#define __NR_times 43 -#define __NR_brk 45 -#define __NR_setgid 46 -#define __NR_getgid 47 -#define __NR_signal 48 -#define __NR_geteuid 49 -#define __NR_getegid 50 -#define __NR_acct 51 -#define __NR_umount2 52 -#define __NR_ioctl 54 -#define __NR_fcntl 55 -#define __NR_setpgid 57 -#define __NR_umask 60 -#define __NR_chroot 61 -#define __NR_ustat 62 -#define __NR_dup2 63 -#define __NR_getppid 64 -#define __NR_getpgrp 65 -#define __NR_setsid 66 -#define __NR_sigaction 67 -#define __NR_sgetmask 68 -#define __NR_ssetmask 69 -#define __NR_setreuid 70 -#define __NR_setregid 71 -#define __NR_sigsuspend 72 -#define __NR_sigpending 73 -#define __NR_sethostname 74 -#define __NR_setrlimit 75 -#define __NR_getrlimit 76 -#define __NR_getrusage 77 -#define __NR_gettimeofday 78 -#define __NR_settimeofday 79 -#define __NR_getgroups 80 -#define __NR_setgroups 81 -#define __NR_symlink 83 -#define __NR_oldlstat 84 -#define __NR_readlink 85 -#define __NR_uselib 86 -#define __NR_swapon 87 -#define __NR_reboot 88 -#define __NR_readdir 89 -#define __NR_mmap 90 -#define __NR_munmap 91 -#define __NR_truncate 92 -#define __NR_ftruncate 93 -#define __NR_fchmod 94 -#define __NR_fchown 95 -#define __NR_getpriority 96 -#define __NR_setpriority 97 -#define __NR_statfs 99 -#define __NR_fstatfs 100 -#define __NR_socketcall 102 -#define __NR_syslog 103 -#define __NR_setitimer 104 -#define __NR_getitimer 105 -#define __NR_stat 106 -#define __NR_lstat 107 -#define __NR_fstat 108 -#define __NR_olduname 109 -#define __NR_vhangup 111 -#define __NR_wait4 114 -#define __NR_swapoff 115 -#define __NR_sysinfo 116 -#define __NR_ipc 117 -#define __NR_fsync 118 -#define __NR_sigreturn 119 -#define __NR_clone 120 -#define __NR_setdomainname 121 -#define __NR_uname 122 -#define __NR_cacheflush 123 -#define __NR_adjtimex 124 -#define __NR_mprotect 125 -#define __NR_sigprocmask 126 -#define __NR_init_module 128 -#define __NR_delete_module 129 -#define __NR_quotactl 131 -#define __NR_getpgid 132 -#define __NR_fchdir 133 -#define __NR_bdflush 134 -#define __NR_sysfs 135 -#define __NR_personality 136 -#define __NR_setfsuid 138 -#define __NR_setfsgid 139 -#define __NR__llseek 140 -#define __NR_getdents 141 -#define __NR__newselect 142 -#define __NR_flock 143 -#define __NR_msync 144 -#define __NR_readv 145 -#define __NR_writev 146 -#define __NR_getsid 147 -#define __NR_fdatasync 148 -#define __NR__sysctl 149 -#define __NR_mlock 150 -#define __NR_munlock 151 -#define __NR_mlockall 152 -#define __NR_munlockall 153 -#define __NR_sched_setparam 154 -#define __NR_sched_getparam 155 -#define __NR_sched_setscheduler 156 -#define __NR_sched_getscheduler 157 -#define __NR_sched_yield 158 -#define __NR_sched_get_priority_max 159 -#define __NR_sched_get_priority_min 160 -#define __NR_sched_rr_get_interval 161 -#define __NR_nanosleep 162 -#define __NR_mremap 163 -#define __NR_setresuid 164 -#define __NR_getresuid 165 -#define __NR_poll 168 -#define __NR_nfsservctl 169 -#define __NR_setresgid 170 -#define __NR_getresgid 171 -#define __NR_prctl 172 -#define __NR_rt_sigreturn 173 -#define __NR_rt_sigaction 174 -#define __NR_rt_sigprocmask 175 -#define __NR_rt_sigpending 176 -#define __NR_rt_sigtimedwait 177 -#define __NR_rt_sigqueueinfo 178 -#define __NR_rt_sigsuspend 179 -#define __NR_pread64 180 -#define __NR_pwrite64 181 -#define __NR_chown 182 -#define __NR_getcwd 183 -#define __NR_capget 184 -#define __NR_capset 185 -#define __NR_sigaltstack 186 -#define __NR_sendfile 187 -#define __NR_vfork 190 -#define __NR_ugetrlimit 191 -#define __NR_mmap2 192 -#define __NR_truncate64 193 -#define __NR_ftruncate64 194 -#define __NR_stat64 195 -#define __NR_lstat64 196 -#define __NR_fstat64 197 -#define __NR_lchown32 198 -#define __NR_getuid32 199 -#define __NR_getgid32 200 -#define __NR_geteuid32 201 -#define __NR_getegid32 202 -#define __NR_setreuid32 203 -#define __NR_setregid32 204 -#define __NR_getgroups32 205 -#define __NR_setgroups32 206 -#define __NR_fchown32 207 -#define __NR_setresuid32 208 -#define __NR_getresuid32 209 -#define __NR_setresgid32 210 -#define __NR_getresgid32 211 -#define __NR_chown32 212 -#define __NR_setuid32 213 -#define __NR_setgid32 214 -#define __NR_setfsuid32 215 -#define __NR_setfsgid32 216 -#define __NR_pivot_root 217 -#define __NR_mincore 218 -#define __NR_madvise 219 -#define __NR_getdents64 220 -#define __NR_fcntl64 221 -#define __NR_gettid 224 -#define __NR_readahead 225 -#define __NR_setxattr 226 -#define __NR_lsetxattr 227 -#define __NR_fsetxattr 228 -#define __NR_getxattr 229 -#define __NR_lgetxattr 230 -#define __NR_fgetxattr 231 -#define __NR_listxattr 232 -#define __NR_llistxattr 233 -#define __NR_flistxattr 234 -#define __NR_removexattr 235 -#define __NR_lremovexattr 236 -#define __NR_fremovexattr 237 -#define __NR_tkill 238 -#define __NR_sendfile64 239 -#define __NR_futex 240 -#define __NR_sched_setaffinity 241 -#define __NR_sched_getaffinity 242 -#define __NR_io_setup 245 -#define __NR_io_destroy 246 -#define __NR_io_getevents 247 -#define __NR_io_submit 248 -#define __NR_io_cancel 249 -#define __NR_fadvise64 250 -#define __NR_exit_group 252 -#define __NR_lookup_dcookie 253 -#define __NR_epoll_create 254 -#define __NR_epoll_ctl 255 -#define __NR_epoll_wait 256 -#define __NR_remap_file_pages 257 -#define __NR_set_tid_address 258 -#define __NR_timer_create 259 -#define __NR_timer_settime 260 -#define __NR_timer_gettime 261 -#define __NR_timer_getoverrun 262 -#define __NR_timer_delete 263 -#define __NR_clock_settime 264 -#define __NR_clock_gettime 265 -#define __NR_clock_getres 266 -#define __NR_clock_nanosleep 267 -#define __NR_statfs64 268 -#define __NR_fstatfs64 269 -#define __NR_tgkill 270 -#define __NR_utimes 271 -#define __NR_fadvise64_64 272 -#define __NR_mbind 274 -#define __NR_get_mempolicy 275 -#define __NR_set_mempolicy 276 -#define __NR_mq_open 277 -#define __NR_mq_unlink 278 -#define __NR_mq_timedsend 279 -#define __NR_mq_timedreceive 280 -#define __NR_mq_notify 281 -#define __NR_mq_getsetattr 282 -#define __NR_kexec_load 283 -#define __NR_waitid 284 -#define __NR_add_key 285 -#define __NR_request_key 286 -#define __NR_keyctl 287 -#define __NR_ioprio_set 288 -#define __NR_ioprio_get 289 -#define __NR_inotify_init 290 -#define __NR_inotify_add_watch 291 -#define __NR_inotify_rm_watch 292 -#define __NR_migrate_pages 294 -#define __NR_openat 295 -#define __NR_mkdirat 296 -#define __NR_mknodat 297 -#define __NR_fchownat 298 -#define __NR_futimesat 299 -#define __NR_fstatat64 300 -#define __NR_unlinkat 301 -#define __NR_renameat 302 -#define __NR_linkat 303 -#define __NR_symlinkat 304 -#define __NR_readlinkat 305 -#define __NR_fchmodat 306 -#define __NR_faccessat 307 -#define __NR_pselect6 308 -#define __NR_ppoll 309 -#define __NR_unshare 310 -#define __NR_set_robust_list 311 -#define __NR_get_robust_list 312 -#define __NR_splice 313 -#define __NR_sync_file_range 314 -#define __NR_tee 315 -#define __NR_vmsplice 316 -#define __NR_move_pages 317 -#define __NR_getcpu 318 -#define __NR_epoll_pwait 319 -#define __NR_utimensat 320 -#define __NR_signalfd 321 -#define __NR_timerfd_create 322 -#define __NR_eventfd 323 -#define __NR_fallocate 324 -#define __NR_timerfd_settime 325 -#define __NR_timerfd_gettime 326 -#define __NR_signalfd4 327 -#define __NR_eventfd2 328 -#define __NR_epoll_create1 329 -#define __NR_dup3 330 -#define __NR_pipe2 331 -#define __NR_inotify_init1 332 -#define __NR_preadv 333 -#define __NR_pwritev 334 -#define __NR_rt_tgsigqueueinfo 335 -#define __NR_perf_event_open 336 -#define __NR_fanotify_init 337 -#define __NR_fanotify_mark 338 -#define __NR_prlimit64 339 -#define __NR_socket 340 -#define __NR_bind 341 -#define __NR_connect 342 -#define __NR_listen 343 -#define __NR_accept 344 -#define __NR_getsockname 345 -#define __NR_getpeername 346 -#define __NR_socketpair 347 -#define __NR_send 348 -#define __NR_sendto 349 -#define __NR_recv 350 -#define __NR_recvfrom 351 -#define __NR_shutdown 352 -#define __NR_setsockopt 353 -#define __NR_getsockopt 354 -#define __NR_sendmsg 355 -#define __NR_recvmsg 356 -#define __NR_recvmmsg 357 -#define __NR_accept4 358 -#define __NR_name_to_handle_at 359 -#define __NR_open_by_handle_at 360 -#define __NR_clock_adjtime 361 -#define __NR_syncfs 362 -#define __NR_sendmmsg 363 -#define __NR_setns 364 -#define __NR_process_vm_readv 365 -#define __NR_process_vm_writev 366 -#define __NR_kcmp 367 -#define __NR_finit_module 368 - - -/* Repeated with SYS_ prefix */ - -#define SYS_restart_syscall 0 -#define SYS_exit 1 -#define SYS_fork 2 -#define SYS_read 3 -#define SYS_write 4 -#define SYS_open 5 -#define SYS_close 6 -#define SYS_waitpid 7 -#define SYS_creat 8 -#define SYS_link 9 -#define SYS_unlink 10 -#define SYS_execve 11 -#define SYS_chdir 12 -#define SYS_time 13 -#define SYS_mknod 14 -#define SYS_chmod 15 -#define SYS_lchown 16 -#define SYS_oldstat 18 -#define SYS_lseek 19 -#define SYS_getpid 20 -#define SYS_mount 21 -#define SYS_umount 22 -#define SYS_setuid 23 -#define SYS_getuid 24 -#define SYS_stime 25 -#define SYS_ptrace 26 -#define SYS_alarm 27 -#define SYS_oldfstat 28 -#define SYS_pause 29 -#define SYS_utime 30 -#define SYS_access 33 -#define SYS_nice 34 -#define SYS_sync 36 -#define SYS_kill 37 -#define SYS_rename 38 -#define SYS_mkdir 39 -#define SYS_rmdir 40 -#define SYS_dup 41 -#define SYS_pipe 42 -#define SYS_times 43 -#define SYS_brk 45 -#define SYS_setgid 46 -#define SYS_getgid 47 -#define SYS_signal 48 -#define SYS_geteuid 49 -#define SYS_getegid 50 -#define SYS_acct 51 -#define SYS_umount2 52 -#define SYS_ioctl 54 -#define SYS_fcntl 55 -#define SYS_setpgid 57 -#define SYS_umask 60 -#define SYS_chroot 61 -#define SYS_ustat 62 -#define SYS_dup2 63 -#define SYS_getppid 64 -#define SYS_getpgrp 65 -#define SYS_setsid 66 -#define SYS_sigaction 67 -#define SYS_sgetmask 68 -#define SYS_ssetmask 69 -#define SYS_setreuid 70 -#define SYS_setregid 71 -#define SYS_sigsuspend 72 -#define SYS_sigpending 73 -#define SYS_sethostname 74 -#define SYS_setrlimit 75 -#define SYS_getrlimit 76 -#define SYS_getrusage 77 -#define SYS_gettimeofday 78 -#define SYS_settimeofday 79 -#define SYS_getgroups 80 -#define SYS_setgroups 81 -#define SYS_symlink 83 -#define SYS_oldlstat 84 -#define SYS_readlink 85 -#define SYS_uselib 86 -#define SYS_swapon 87 -#define SYS_reboot 88 -#define SYS_readdir 89 -#define SYS_mmap 90 -#define SYS_munmap 91 -#define SYS_truncate 92 -#define SYS_ftruncate 93 -#define SYS_fchmod 94 -#define SYS_fchown 95 -#define SYS_getpriority 96 -#define SYS_setpriority 97 -#define SYS_statfs 99 -#define SYS_fstatfs 100 -#define SYS_socketcall 102 -#define SYS_syslog 103 -#define SYS_setitimer 104 -#define SYS_getitimer 105 -#define SYS_stat 106 -#define SYS_lstat 107 -#define SYS_fstat 108 -#define SYS_olduname 109 -#define SYS_vhangup 111 -#define SYS_wait4 114 -#define SYS_swapoff 115 -#define SYS_sysinfo 116 -#define SYS_ipc 117 -#define SYS_fsync 118 -#define SYS_sigreturn 119 -#define SYS_clone 120 -#define SYS_setdomainname 121 -#define SYS_uname 122 -#define SYS_cacheflush 123 -#define SYS_adjtimex 124 -#define SYS_mprotect 125 -#define SYS_sigprocmask 126 -#define SYS_init_module 128 -#define SYS_delete_module 129 -#define SYS_quotactl 131 -#define SYS_getpgid 132 -#define SYS_fchdir 133 -#define SYS_bdflush 134 -#define SYS_sysfs 135 -#define SYS_personality 136 -#define SYS_setfsuid 138 -#define SYS_setfsgid 139 -#define SYS__llseek 140 -#define SYS_getdents 141 -#define SYS__newselect 142 -#define SYS_flock 143 -#define SYS_msync 144 -#define SYS_readv 145 -#define SYS_writev 146 -#define SYS_getsid 147 -#define SYS_fdatasync 148 -#define SYS__sysctl 149 -#define SYS_mlock 150 -#define SYS_munlock 151 -#define SYS_mlockall 152 -#define SYS_munlockall 153 -#define SYS_sched_setparam 154 -#define SYS_sched_getparam 155 -#define SYS_sched_setscheduler 156 -#define SYS_sched_getscheduler 157 -#define SYS_sched_yield 158 -#define SYS_sched_get_priority_max 159 -#define SYS_sched_get_priority_min 160 -#define SYS_sched_rr_get_interval 161 -#define SYS_nanosleep 162 -#define SYS_mremap 163 -#define SYS_setresuid 164 -#define SYS_getresuid 165 -#define SYS_poll 168 -#define SYS_nfsservctl 169 -#define SYS_setresgid 170 -#define SYS_getresgid 171 -#define SYS_prctl 172 -#define SYS_rt_sigreturn 173 -#define SYS_rt_sigaction 174 -#define SYS_rt_sigprocmask 175 -#define SYS_rt_sigpending 176 -#define SYS_rt_sigtimedwait 177 -#define SYS_rt_sigqueueinfo 178 -#define SYS_rt_sigsuspend 179 -#define SYS_pread64 180 -#define SYS_pwrite64 181 -#define SYS_chown 182 -#define SYS_getcwd 183 -#define SYS_capget 184 -#define SYS_capset 185 -#define SYS_sigaltstack 186 -#define SYS_sendfile 187 -#define SYS_vfork 190 -#define SYS_ugetrlimit 191 -#define SYS_mmap2 192 -#define SYS_truncate64 193 -#define SYS_ftruncate64 194 -#define SYS_stat64 195 -#define SYS_lstat64 196 -#define SYS_fstat64 197 -#define SYS_lchown32 198 -#define SYS_getuid32 199 -#define SYS_getgid32 200 -#define SYS_geteuid32 201 -#define SYS_getegid32 202 -#define SYS_setreuid32 203 -#define SYS_setregid32 204 -#define SYS_getgroups32 205 -#define SYS_setgroups32 206 -#define SYS_fchown32 207 -#define SYS_setresuid32 208 -#define SYS_getresuid32 209 -#define SYS_setresgid32 210 -#define SYS_getresgid32 211 -#define SYS_chown32 212 -#define SYS_setuid32 213 -#define SYS_setgid32 214 -#define SYS_setfsuid32 215 -#define SYS_setfsgid32 216 -#define SYS_pivot_root 217 -#define SYS_mincore 218 -#define SYS_madvise 219 -#define SYS_getdents64 220 -#define SYS_fcntl64 221 -#define SYS_gettid 224 -#define SYS_readahead 225 -#define SYS_setxattr 226 -#define SYS_lsetxattr 227 -#define SYS_fsetxattr 228 -#define SYS_getxattr 229 -#define SYS_lgetxattr 230 -#define SYS_fgetxattr 231 -#define SYS_listxattr 232 -#define SYS_llistxattr 233 -#define SYS_flistxattr 234 -#define SYS_removexattr 235 -#define SYS_lremovexattr 236 -#define SYS_fremovexattr 237 -#define SYS_tkill 238 -#define SYS_sendfile64 239 -#define SYS_futex 240 -#define SYS_sched_setaffinity 241 -#define SYS_sched_getaffinity 242 -#define SYS_io_setup 245 -#define SYS_io_destroy 246 -#define SYS_io_getevents 247 -#define SYS_io_submit 248 -#define SYS_io_cancel 249 -#define SYS_fadvise64 250 -#define SYS_exit_group 252 -#define SYS_lookup_dcookie 253 -#define SYS_epoll_create 254 -#define SYS_epoll_ctl 255 -#define SYS_epoll_wait 256 -#define SYS_remap_file_pages 257 -#define SYS_set_tid_address 258 -#define SYS_timer_create 259 -#define SYS_timer_settime 260 -#define SYS_timer_gettime 261 -#define SYS_timer_getoverrun 262 -#define SYS_timer_delete 263 -#define SYS_clock_settime 264 -#define SYS_clock_gettime 265 -#define SYS_clock_getres 266 -#define SYS_clock_nanosleep 267 -#define SYS_statfs64 268 -#define SYS_fstatfs64 269 -#define SYS_tgkill 270 -#define SYS_utimes 271 -#define SYS_fadvise64_64 272 -#define SYS_mbind 274 -#define SYS_get_mempolicy 275 -#define SYS_set_mempolicy 276 -#define SYS_mq_open 277 -#define SYS_mq_unlink 278 -#define SYS_mq_timedsend 279 -#define SYS_mq_timedreceive 280 -#define SYS_mq_notify 281 -#define SYS_mq_getsetattr 282 -#define SYS_kexec_load 283 -#define SYS_waitid 284 -#define SYS_add_key 285 -#define SYS_request_key 286 -#define SYS_keyctl 287 -#define SYS_ioprio_set 288 -#define SYS_ioprio_get 289 -#define SYS_inotify_init 290 -#define SYS_inotify_add_watch 291 -#define SYS_inotify_rm_watch 292 -#define SYS_migrate_pages 294 -#define SYS_openat 295 -#define SYS_mkdirat 296 -#define SYS_mknodat 297 -#define SYS_fchownat 298 -#define SYS_futimesat 299 -#define SYS_fstatat64 300 -#define SYS_unlinkat 301 -#define SYS_renameat 302 -#define SYS_linkat 303 -#define SYS_symlinkat 304 -#define SYS_readlinkat 305 -#define SYS_fchmodat 306 -#define SYS_faccessat 307 -#define SYS_pselect6 308 -#define SYS_ppoll 309 -#define SYS_unshare 310 -#define SYS_set_robust_list 311 -#define SYS_get_robust_list 312 -#define SYS_splice 313 -#define SYS_sync_file_range 314 -#define SYS_tee 315 -#define SYS_vmsplice 316 -#define SYS_move_pages 317 -#define SYS_getcpu 318 -#define SYS_epoll_pwait 319 -#define SYS_utimensat 320 -#define SYS_signalfd 321 -#define SYS_timerfd_create 322 -#define SYS_eventfd 323 -#define SYS_fallocate 324 -#define SYS_timerfd_settime 325 -#define SYS_timerfd_gettime 326 -#define SYS_signalfd4 327 -#define SYS_eventfd2 328 -#define SYS_epoll_create1 329 -#define SYS_dup3 330 -#define SYS_pipe2 331 -#define SYS_inotify_init1 332 -#define SYS_preadv 333 -#define SYS_pwritev 334 -#define SYS_rt_tgsigqueueinfo 335 -#define SYS_perf_event_open 336 -#define SYS_fanotify_init 337 -#define SYS_fanotify_mark 338 -#define SYS_prlimit64 339 -#define SYS_socket 340 -#define SYS_bind 341 -#define SYS_connect 342 -#define SYS_listen 343 -#define SYS_accept 344 -#define SYS_getsockname 345 -#define SYS_getpeername 346 -#define SYS_socketpair 347 -#define SYS_send 348 -#define SYS_sendto 349 -#define SYS_recv 350 -#define SYS_recvfrom 351 -#define SYS_shutdown 352 -#define SYS_setsockopt 353 -#define SYS_getsockopt 354 -#define SYS_sendmsg 355 -#define SYS_recvmsg 356 -#define SYS_recvmmsg 357 -#define SYS_accept4 358 -#define SYS_name_to_handle_at 359 -#define SYS_open_by_handle_at 360 -#define SYS_clock_adjtime 361 -#define SYS_syncfs 362 -#define SYS_sendmmsg 363 -#define SYS_setns 364 -#define SYS_process_vm_readv 365 -#define SYS_process_vm_writev 366 -#define SYS_kcmp 367 -#define SYS_finit_module 368 diff --git a/arch/superh/bits/termios.h b/arch/superh/bits/termios.h deleted file mode 100644 index f0d81b13..00000000 --- a/arch/superh/bits/termios.h +++ /dev/null @@ -1,160 +0,0 @@ -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 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 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 ECHO 0000010 -#define ECHOE 0000020 -#define ECHOK 0000040 -#define ECHONL 0000100 -#define NOFLSH 0000200 -#define TOSTOP 0000400 -#define IEXTEN 0100000 - -#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 - -#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) -#define CBAUDEX 0010000 -#define CRTSCTS 020000000000 -#define EXTPROC 0200000 -#define XTABS 0014000 -#endif diff --git a/arch/superh/crt_arch.h b/arch/superh/crt_arch.h deleted file mode 100644 index a69d1c9f..00000000 --- a/arch/superh/crt_arch.h +++ /dev/null @@ -1,9 +0,0 @@ -__asm__("\ -.global _start \n\ -_start: \n\ - mov r15, r4 \n\ - mov #-16, r0 \n\ - and r0, r15 \n\ - bsr __cstart \n\ - nop \n\ -"); diff --git a/arch/superh/pthread_arch.h b/arch/superh/pthread_arch.h deleted file mode 100644 index 65c389ff..00000000 --- a/arch/superh/pthread_arch.h +++ /dev/null @@ -1,11 +0,0 @@ -static inline struct pthread *__pthread_self() -{ - char *self; - __asm__ __volatile__ ("stc gbr,%0" : "=r" (self) ); - return (struct pthread *) (self + 8 - sizeof(struct pthread)); -} - -#define TLS_ABOVE_TP -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8) - -#define CANCEL_REG_IP 17 diff --git a/arch/superh/reloc.h b/arch/superh/reloc.h deleted file mode 100644 index 97bee6ae..00000000 --- a/arch/superh/reloc.h +++ /dev/null @@ -1,47 +0,0 @@ -#if __BYTE_ORDER == __LITTLE_ENDIAN -#define ENDIAN_SUFFIX "l" -#else -#define ENDIAN_SUFFIX "" -#endif - -#define LDSO_ARCH "sh" ENDIAN_SUFFIX - -#define IS_COPY(x) ((x) == R_SH_COPY) -#define IS_PLT(x) ((x) == R_SH_JMP_SLOT) - -static inline void do_single_reloc( - struct dso *self, unsigned char *base_addr, - size_t *reloc_addr, int type, size_t addend, - Sym *sym, size_t sym_size, - struct symdef def, size_t sym_val) -{ - switch(type) { - case R_SH_GLOB_DAT: - case R_SH_JMP_SLOT: - *reloc_addr = sym_val; - break; - case R_SH_RELATIVE: - *reloc_addr = (size_t)base_addr + addend; - break; - case R_SH_DIR32: - *reloc_addr = sym_val + addend; - break; - case R_SH_REL32: - *reloc_addr = sym_val + addend - (size_t)reloc_addr + (size_t)base_addr; - break; - case R_SH_COPY: - memcpy(reloc_addr, (void *)sym_val, sym_size); - break; - case R_SH_TLS_DTPMOD32: - *reloc_addr += def.dso ? def.dso->tls_id : self->tls_id; - break; - case R_SH_TLS_DTPOFF32: - *reloc_addr += def.sym->st_value; - break; - case R_SH_TLS_TPOFF32: - *reloc_addr += def.sym - ? def.sym->st_value + def.dso->tls_offset + 8 - : self->tls_offset + 8; - break; - } -} diff --git a/arch/superh/src/__fpsrc_values.c b/arch/superh/src/__fpsrc_values.c deleted file mode 100644 index 56056617..00000000 --- a/arch/superh/src/__fpsrc_values.c +++ /dev/null @@ -1,2 +0,0 @@ -/* used by gcc for switching the FPU between single and double precision */ -const unsigned long __fpscr_values[2] = { 0, 0x80000 }; diff --git a/arch/superh/src/atomic.c b/arch/superh/src/atomic.c deleted file mode 100644 index d29b0538..00000000 --- a/arch/superh/src/atomic.c +++ /dev/null @@ -1,146 +0,0 @@ -#include "libc.h" - -#define LLSC_CLOBBERS "r0", "t", "memory" -#define LLSC_START(mem) \ - "0: movli.l @" mem ", r0\n" -#define LLSC_END(mem) \ - "1: movco.l r0, @" mem "\n" \ - " bf 0b\n" \ - " synco\n" - -/* gusa is a hack in the kernel which lets you create a sequence of instructions - * which will be restarted if the process is preempted in the middle of the - * sequence. It will do for implementing atomics on non-smp systems. ABI is: - * r0 = address of first instruction after the atomic sequence - * r1 = original stack pointer - * r15 = -1 * length of atomic sequence in bytes - */ -#define GUSA_CLOBBERS "r0", "r1", "memory" -#define GUSA_START(mem,old,nop) \ - " .align 2\n" \ - " mova 1f, r0\n" \ - nop \ - " mov r15, r1\n" \ - " mov #(0f-1f), r15\n" \ - "0: mov.l @" mem ", " old "\n" -/* the target of mova must be 4 byte aligned, so we may need a nop */ -#define GUSA_START_ODD(mem,old) GUSA_START(mem,old,"") -#define GUSA_START_EVEN(mem,old) GUSA_START(mem,old,"\tnop\n") -#define GUSA_END(mem,new) \ - " mov.l " new ", @" mem "\n" \ - "1: mov r1, r15\n" - -#define CPU_HAS_LLSC 0x0040 - -int __sh_cas(volatile int *p, int t, int s) -{ - int old; - if (__hwcap & CPU_HAS_LLSC) { - __asm__ __volatile__( - LLSC_START("%1") - " mov r0, %0\n" - " cmp/eq %0, %2\n" - " bf 1f\n" - " mov %3, r0\n" - LLSC_END("%1") - : "=&r"(old) : "r"(p), "r"(t), "r"(s) : LLSC_CLOBBERS); - } else { - __asm__ __volatile__( - GUSA_START_EVEN("%1", "%0") - " cmp/eq %0, %2\n" - " bf 1f\n" - GUSA_END("%1", "%3") - : "=&r"(old) : "r"(p), "r"(t), "r"(s) : GUSA_CLOBBERS, "t"); - } - return old; -} - -int __sh_swap(volatile int *x, int v) -{ - int old; - if (__hwcap & CPU_HAS_LLSC) { - __asm__ __volatile__( - LLSC_START("%1") - " mov r0, %0\n" - " mov %2, r0\n" - LLSC_END("%1") - : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); - } else { - __asm__ __volatile__( - GUSA_START_EVEN("%1", "%0") - GUSA_END("%1", "%2") - : "=&r"(old) : "r"(x), "r"(v) : GUSA_CLOBBERS); - } - return old; -} - -int __sh_fetch_add(volatile int *x, int v) -{ - int old, dummy; - if (__hwcap & CPU_HAS_LLSC) { - __asm__ __volatile__( - LLSC_START("%1") - " mov r0, %0\n" - " add %2, r0\n" - LLSC_END("%1") - : "=&r"(old) : "r"(x), "r"(v) : LLSC_CLOBBERS); - } else { - __asm__ __volatile__( - GUSA_START_EVEN("%2", "%0") - " mov %0, %1\n" - " add %3, %1\n" - GUSA_END("%2", "%1") - : "=&r"(old), "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); - } - return old; -} - -void __sh_store(volatile int *p, int x) -{ - if (__hwcap & CPU_HAS_LLSC) { - __asm__ __volatile__( - " mov.l %1, @%0\n" - " synco\n" - : : "r"(p), "r"(x) : "memory"); - } else { - __asm__ __volatile__( - " mov.l %1, @%0\n" - : : "r"(p), "r"(x) : "memory"); - } -} - -void __sh_and(volatile int *x, int v) -{ - int dummy; - if (__hwcap & CPU_HAS_LLSC) { - __asm__ __volatile__( - LLSC_START("%0") - " and %1, r0\n" - LLSC_END("%0") - : : "r"(x), "r"(v) : LLSC_CLOBBERS); - } else { - __asm__ __volatile__( - GUSA_START_ODD("%1", "%0") - " and %2, %0\n" - GUSA_END("%1", "%0") - : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); - } -} - -void __sh_or(volatile int *x, int v) -{ - int dummy; - if (__hwcap & CPU_HAS_LLSC) { - __asm__ __volatile__( - LLSC_START("%0") - " or %1, r0\n" - LLSC_END("%0") - : : "r"(x), "r"(v) : LLSC_CLOBBERS); - } else { - __asm__ __volatile__( - GUSA_START_ODD("%1", "%0") - " or %2, %0\n" - GUSA_END("%1", "%0") - : "=&r"(dummy) : "r"(x), "r"(v) : GUSA_CLOBBERS); - } -} diff --git a/arch/superh/syscall_arch.h b/arch/superh/syscall_arch.h deleted file mode 100644 index 7ee21a56..00000000 --- a/arch/superh/syscall_arch.h +++ /dev/null @@ -1,87 +0,0 @@ -#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)) - -/* The extra OR instructions are to work around a hardware bug: - * http://documentation.renesas.com/doc/products/mpumcu/tu/tnsh7456ae.pdf - */ -#define __asm_syscall(trapno, ...) do { \ - __asm__ __volatile__ ( \ - "trapa #" #trapno "\n" \ - "or r0, r0\n" \ - "or r0, r0\n" \ - "or r0, r0\n" \ - "or r0, r0\n" \ - "or r0, r0\n" \ - : "=r"(r0) : __VA_ARGS__ : "memory"); \ - return r0; \ - } while (0) - -static inline long __syscall0(long n) -{ - register long r3 __asm__("r3") = n; - register long r0 __asm__("r0"); - __asm_syscall(16, "r"(r3)); -} - -static inline long __syscall1(long n, long a) -{ - register long r3 __asm__("r3") = n; - register long r4 __asm__("r4") = a; - register long r0 __asm__("r0"); - __asm_syscall(17, "r"(r3), "r"(r4)); -} - -static inline long __syscall2(long n, long a, long b) -{ - register long r3 __asm__("r3") = n; - register long r4 __asm__("r4") = a; - register long r5 __asm__("r5") = b; - register long r0 __asm__("r0"); - __asm_syscall(18, "r"(r3), "r"(r4), "r"(r5)); -} - -static inline long __syscall3(long n, long a, long b, long c) -{ - register long r3 __asm__("r3") = n; - register long r4 __asm__("r4") = a; - register long r5 __asm__("r5") = b; - register long r6 __asm__("r6") = c; - register long r0 __asm__("r0"); - __asm_syscall(19, "r"(r3), "r"(r4), "r"(r5), "r"(r6)); -} - -static inline long __syscall4(long n, long a, long b, long c, long d) -{ - register long r3 __asm__("r3") = n; - register long r4 __asm__("r4") = a; - register long r5 __asm__("r5") = b; - register long r6 __asm__("r6") = c; - register long r7 __asm__("r7") = d; - register long r0 __asm__("r0"); - __asm_syscall(20, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7)); -} - -static inline long __syscall5(long n, long a, long b, long c, long d, long e) -{ - register long r3 __asm__("r3") = n; - register long r4 __asm__("r4") = a; - register long r5 __asm__("r5") = b; - register long r6 __asm__("r6") = c; - register long r7 __asm__("r7") = d; - register long r0 __asm__("r0") = e; - __asm_syscall(21, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0)); -} - -static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) -{ - register long r3 __asm__("r3") = n; - register long r4 __asm__("r4") = a; - register long r5 __asm__("r5") = b; - register long r6 __asm__("r6") = c; - register long r7 __asm__("r7") = d; - register long r0 __asm__("r0") = e; - register long r1 __asm__("r1") = f; - __asm_syscall(22, "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7), "0"(r0), "r"(r1)); -} diff --git a/configure b/configure index c622366a..38b36d82 100755 --- a/configure +++ b/configure @@ -229,7 +229,7 @@ x86_64*) ARCH=x86_64 ;; mips-*|mipsel-*) ARCH=mips ;; microblaze-*) ARCH=microblaze ;; powerpc-*) ARCH=powerpc ;; -sh-*) ARCH=superh ;; +sh-*) ARCH=sh ;; unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;; *) fail "$0: unknown or unsupported target \"$target\"" ;; esac @@ -421,7 +421,7 @@ fi test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ && SUBARCH=${SUBARCH}el -test "$ARCH" = "superh" && trycppif __LITTLE_ENDIAN__ "$t" \ +test "$ARCH" = "sh" && trycppif __LITTLE_ENDIAN__ "$t" \ && SUBARCH=${SUBARCH}el test "$SUBARCH" \ diff --git a/src/fenv/sh/fenv.s b/src/fenv/sh/fenv.s new file mode 100644 index 00000000..7f5c6277 --- /dev/null +++ b/src/fenv/sh/fenv.s @@ -0,0 +1,74 @@ +.global fegetround +.type fegetround, @function +fegetround: + sts fpscr, r0 + rts + and #3, r0 + +.global __fesetround +.type __fesetround, @function +__fesetround: + sts fpscr, r0 + or r4, r0 + lds r0, fpscr + rts + mov #0, r0 + +.global fetestexcept +.type fetestexcept, @function +fetestexcept: + sts fpscr, r0 + and r4, r0 + rts + and #0x7c, r0 + +.global feclearexcept +.type feclearexcept, @function +feclearexcept: + mov r4, r0 + and #0x7c, r0 + not r0, r4 + sts fpscr, r0 + and r4, r0 + lds r0, fpscr + rts + mov #0, r0 + +.global feraiseexcept +.type feraiseexcept, @function +feraiseexcept: + mov r4, r0 + and #0x7c, r0 + sts fpscr, r4 + or r4, r0 + lds r0, fpscr + rts + mov #0, r0 + +.global fegetenv +.type fegetenv, @function +fegetenv: + sts fpscr, r0 + mov.l r0, @r4 + rts + mov #0, r0 + +.global fesetenv +.type fesetenv, @function +fesetenv: + mov r4, r0 + cmp/eq #-1, r0 + bf 1f + + ! the default environment is complicated by the fact that we need to + ! preserve the current precision bit, which we do not know a priori + sts fpscr, r0 + mov #8, r1 + swap.w r1, r1 + bra 2f + and r1, r0 + +1: mov.l @r4, r0 ! non-default environment +2: lds r0, fpscr + rts + mov #0, r0 diff --git a/src/fenv/superh/fenv.s b/src/fenv/superh/fenv.s deleted file mode 100644 index 7f5c6277..00000000 --- a/src/fenv/superh/fenv.s +++ /dev/null @@ -1,74 +0,0 @@ -.global fegetround -.type fegetround, @function -fegetround: - sts fpscr, r0 - rts - and #3, r0 - -.global __fesetround -.type __fesetround, @function -__fesetround: - sts fpscr, r0 - or r4, r0 - lds r0, fpscr - rts - mov #0, r0 - -.global fetestexcept -.type fetestexcept, @function -fetestexcept: - sts fpscr, r0 - and r4, r0 - rts - and #0x7c, r0 - -.global feclearexcept -.type feclearexcept, @function -feclearexcept: - mov r4, r0 - and #0x7c, r0 - not r0, r4 - sts fpscr, r0 - and r4, r0 - lds r0, fpscr - rts - mov #0, r0 - -.global feraiseexcept -.type feraiseexcept, @function -feraiseexcept: - mov r4, r0 - and #0x7c, r0 - sts fpscr, r4 - or r4, r0 - lds r0, fpscr - rts - mov #0, r0 - -.global fegetenv -.type fegetenv, @function -fegetenv: - sts fpscr, r0 - mov.l r0, @r4 - rts - mov #0, r0 - -.global fesetenv -.type fesetenv, @function -fesetenv: - mov r4, r0 - cmp/eq #-1, r0 - bf 1f - - ! the default environment is complicated by the fact that we need to - ! preserve the current precision bit, which we do not know a priori - sts fpscr, r0 - mov #8, r1 - swap.w r1, r1 - bra 2f - and r1, r0 - -1: mov.l @r4, r0 ! non-default environment -2: lds r0, fpscr - rts - mov #0, r0 diff --git a/src/internal/sh/syscall.s b/src/internal/sh/syscall.s new file mode 100644 index 00000000..a8fda1c0 --- /dev/null +++ b/src/internal/sh/syscall.s @@ -0,0 +1,22 @@ +.global __syscall +.type __syscall, @function +__syscall: + ! The kernel syscall entry point documents that the trap number indicates + ! the number of arguments being passed, but it then ignores that information. + ! Since we do not actually know how many arguments are being passed, we will + ! say there are six, since that is the maximum we support here. + mov r4, r3 + mov r5, r4 + mov r6, r5 + mov r7, r6 + mov.l @r15, r7 + mov.l @(4,r15), r0 + mov.l @(8,r15), r1 + trapa #22 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + rts + nop diff --git a/src/internal/superh/syscall.s b/src/internal/superh/syscall.s deleted file mode 100644 index a8fda1c0..00000000 --- a/src/internal/superh/syscall.s +++ /dev/null @@ -1,22 +0,0 @@ -.global __syscall -.type __syscall, @function -__syscall: - ! The kernel syscall entry point documents that the trap number indicates - ! the number of arguments being passed, but it then ignores that information. - ! Since we do not actually know how many arguments are being passed, we will - ! say there are six, since that is the maximum we support here. - mov r4, r3 - mov r5, r4 - mov r6, r5 - mov r7, r6 - mov.l @r15, r7 - mov.l @(4,r15), r0 - mov.l @(8,r15), r1 - trapa #22 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - rts - nop diff --git a/src/ldso/sh/dlsym.s b/src/ldso/sh/dlsym.s new file mode 100644 index 00000000..8258507f --- /dev/null +++ b/src/ldso/sh/dlsym.s @@ -0,0 +1,10 @@ +.text +.global dlsym +.type dlsym, @function +dlsym: + mov.l L1, r0 + braf r0 +1: mov.l @r15, r6 + +.align 2 +L1: .long __dlsym@PLT-(1b-.) diff --git a/src/ldso/sh/start.s b/src/ldso/sh/start.s new file mode 100644 index 00000000..ca6b7fc9 --- /dev/null +++ b/src/ldso/sh/start.s @@ -0,0 +1,26 @@ +.text +.global _start +.type _start, @function +_start: + mov.l @r15, r4 + mov r15, r5 + mov.l L1, r0 + bsrf r0 + add #4, r5 + +2: mov r0, r2 + mov.l @r15+, r1 +1: mov.l @r15+, r0 + cmp/eq #-1, r0 + bt/s 1b + add #-1, r1 + + add #1, r1 + mov.l r0, @-r15 + mov.l r1, @-r15 + mov #0, r4 + jmp @r2 + nop + +.align 2 +L1: .long __dynlink@PLT-(2b-.) diff --git a/src/ldso/superh/dlsym.s b/src/ldso/superh/dlsym.s deleted file mode 100644 index 8258507f..00000000 --- a/src/ldso/superh/dlsym.s +++ /dev/null @@ -1,10 +0,0 @@ -.text -.global dlsym -.type dlsym, @function -dlsym: - mov.l L1, r0 - braf r0 -1: mov.l @r15, r6 - -.align 2 -L1: .long __dlsym@PLT-(1b-.) diff --git a/src/ldso/superh/start.s b/src/ldso/superh/start.s deleted file mode 100644 index ca6b7fc9..00000000 --- a/src/ldso/superh/start.s +++ /dev/null @@ -1,26 +0,0 @@ -.text -.global _start -.type _start, @function -_start: - mov.l @r15, r4 - mov r15, r5 - mov.l L1, r0 - bsrf r0 - add #4, r5 - -2: mov r0, r2 - mov.l @r15+, r1 -1: mov.l @r15+, r0 - cmp/eq #-1, r0 - bt/s 1b - add #-1, r1 - - add #1, r1 - mov.l r0, @-r15 - mov.l r1, @-r15 - mov #0, r4 - jmp @r2 - nop - -.align 2 -L1: .long __dynlink@PLT-(2b-.) diff --git a/src/setjmp/sh/longjmp.s b/src/setjmp/sh/longjmp.s new file mode 100644 index 00000000..e9aa4e50 --- /dev/null +++ b/src/setjmp/sh/longjmp.s @@ -0,0 +1,26 @@ +.global _longjmp +.global longjmp +.type _longjmp, @function +.type longjmp, @function +_longjmp: +longjmp: + mov.l @r4+, r8 + mov.l @r4+, r9 + mov.l @r4+, r10 + mov.l @r4+, r11 + mov.l @r4+, r12 + mov.l @r4+, r13 + mov.l @r4+, r14 + mov.l @r4+, r15 + lds.l @r4+, pr + fmov.s @r4+, fr12 + fmov.s @r4+, fr13 + fmov.s @r4+, fr14 + fmov.s @r4+, fr15 + + tst r5, r5 + movt r0 + add r5, r0 + + rts + nop diff --git a/src/setjmp/sh/setjmp.s b/src/setjmp/sh/setjmp.s new file mode 100644 index 00000000..6127ed90 --- /dev/null +++ b/src/setjmp/sh/setjmp.s @@ -0,0 +1,25 @@ +.global __setjmp +.global _setjmp +.global setjmp +.type __setjmp, @function +.type _setjmp, @function +.type setjmp, @function +__setjmp: +_setjmp: +setjmp: + add #52, r4 + fmov.s fr15, @-r4 + fmov.s fr14, @-r4 + fmov.s fr13, @-r4 + fmov.s fr12, @-r4 + sts.l pr, @-r4 + mov.l r15 @-r4 + mov.l r14, @-r4 + mov.l r13, @-r4 + mov.l r12, @-r4 + mov.l r11, @-r4 + mov.l r10, @-r4 + mov.l r9, @-r4 + mov.l r8, @-r4 + rts + mov #0, r0 diff --git a/src/setjmp/superh/longjmp.s b/src/setjmp/superh/longjmp.s deleted file mode 100644 index e9aa4e50..00000000 --- a/src/setjmp/superh/longjmp.s +++ /dev/null @@ -1,26 +0,0 @@ -.global _longjmp -.global longjmp -.type _longjmp, @function -.type longjmp, @function -_longjmp: -longjmp: - mov.l @r4+, r8 - mov.l @r4+, r9 - mov.l @r4+, r10 - mov.l @r4+, r11 - mov.l @r4+, r12 - mov.l @r4+, r13 - mov.l @r4+, r14 - mov.l @r4+, r15 - lds.l @r4+, pr - fmov.s @r4+, fr12 - fmov.s @r4+, fr13 - fmov.s @r4+, fr14 - fmov.s @r4+, fr15 - - tst r5, r5 - movt r0 - add r5, r0 - - rts - nop diff --git a/src/setjmp/superh/setjmp.s b/src/setjmp/superh/setjmp.s deleted file mode 100644 index 6127ed90..00000000 --- a/src/setjmp/superh/setjmp.s +++ /dev/null @@ -1,25 +0,0 @@ -.global __setjmp -.global _setjmp -.global setjmp -.type __setjmp, @function -.type _setjmp, @function -.type setjmp, @function -__setjmp: -_setjmp: -setjmp: - add #52, r4 - fmov.s fr15, @-r4 - fmov.s fr14, @-r4 - fmov.s fr13, @-r4 - fmov.s fr12, @-r4 - sts.l pr, @-r4 - mov.l r15 @-r4 - mov.l r14, @-r4 - mov.l r13, @-r4 - mov.l r12, @-r4 - mov.l r11, @-r4 - mov.l r10, @-r4 - mov.l r9, @-r4 - mov.l r8, @-r4 - rts - mov #0, r0 diff --git a/src/signal/sh/restore.s b/src/signal/sh/restore.s new file mode 100644 index 00000000..ab26034b --- /dev/null +++ b/src/signal/sh/restore.s @@ -0,0 +1,24 @@ +.global __restore +.type __restore, @function +__restore: + mov #119, r3 !__NR_sigreturn + trapa #16 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + +.global __restore_rt +.type __restore_rt, @function +__restore_rt: + mov #100, r3 !__NR_rt_sigreturn + add #73, r3 + trapa #16 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 diff --git a/src/signal/sh/sigsetjmp.s b/src/signal/sh/sigsetjmp.s new file mode 100644 index 00000000..f6cae801 --- /dev/null +++ b/src/signal/sh/sigsetjmp.s @@ -0,0 +1,27 @@ +.global sigsetjmp +.type sigsetjmp, @function +sigsetjmp: + mov.l r5, @(36,r4) + tst r5, r5 + bf 2f + + sts.l pr, @-r15 + mov.l r4, @-r15 + mov r4, r6 + add #40, r6 + mov #0, r5 + mov #2, r4 + mov.l L1, r0 + bsrf r0 + nop +1: mov.l @r15+, r4 + lds.l @r15+, pr + +2: mov.l L2, r0 + braf r0 + nop +3: + +.align 2 +L1: .long pthread_sigmask@PLT-(1b-.) +L2: .long setjmp@PLT-(3b-.) diff --git a/src/signal/superh/restore.s b/src/signal/superh/restore.s deleted file mode 100644 index ab26034b..00000000 --- a/src/signal/superh/restore.s +++ /dev/null @@ -1,24 +0,0 @@ -.global __restore -.type __restore, @function -__restore: - mov #119, r3 !__NR_sigreturn - trapa #16 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - -.global __restore_rt -.type __restore_rt, @function -__restore_rt: - mov #100, r3 !__NR_rt_sigreturn - add #73, r3 - trapa #16 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 diff --git a/src/signal/superh/sigsetjmp.s b/src/signal/superh/sigsetjmp.s deleted file mode 100644 index f6cae801..00000000 --- a/src/signal/superh/sigsetjmp.s +++ /dev/null @@ -1,27 +0,0 @@ -.global sigsetjmp -.type sigsetjmp, @function -sigsetjmp: - mov.l r5, @(36,r4) - tst r5, r5 - bf 2f - - sts.l pr, @-r15 - mov.l r4, @-r15 - mov r4, r6 - add #40, r6 - mov #0, r5 - mov #2, r4 - mov.l L1, r0 - bsrf r0 - nop -1: mov.l @r15+, r4 - lds.l @r15+, pr - -2: mov.l L2, r0 - braf r0 - nop -3: - -.align 2 -L1: .long pthread_sigmask@PLT-(1b-.) -L2: .long setjmp@PLT-(3b-.) diff --git a/src/thread/sh/__set_thread_area.s b/src/thread/sh/__set_thread_area.s new file mode 100644 index 00000000..53887e64 --- /dev/null +++ b/src/thread/sh/__set_thread_area.s @@ -0,0 +1,5 @@ +.global __set_thread_area +.type __set_thread_area, @function +__set_thread_area: + rts + ldc r4, gbr diff --git a/src/thread/sh/__unmapself.s b/src/thread/sh/__unmapself.s new file mode 100644 index 00000000..b34c3c80 --- /dev/null +++ b/src/thread/sh/__unmapself.s @@ -0,0 +1,22 @@ +.text +.global __unmapself +.type __unmapself, @function +__unmapself: + mov #91, r3 ! SYS_munmap + trapa #18 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + mov #1, r3 ! SYS_exit + mov #0, r4 + trapa #17 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 diff --git a/src/thread/sh/clone.s b/src/thread/sh/clone.s new file mode 100644 index 00000000..d6c9184d --- /dev/null +++ b/src/thread/sh/clone.s @@ -0,0 +1,47 @@ +.text +.global __clone +.type __clone, @function +__clone: +! incoming: fn stack flags arg ptid tls ctid +! r4 r5 r6 r7 @r15 @(4,r15) @(8,r15) + + mov #-16, r0 + and r0, r5 + + mov r4, r1 ! r1 = fn + mov r7, r2 ! r2 = arg + + mov #120, r3 ! r3 = __NR_clone + mov r6, r4 ! r4 = flags + !mov r5, r5 ! r5 = stack + mov.l @r15, r6 ! r6 = ptid + mov.l @(8,r15), r7 ! r7 = ctid + mov.l @(4,r15), r0 ! r0 = tls + trapa #21 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + cmp/eq #0, r0 + bt 1f + + ! we are the parent, return + rts + nop + +1: ! we are the child, call fn(arg) + jsr @r1 + mov r2, r4 + + mov #1, r3 ! __NR_exit + mov r0, r4 + trapa #17 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 diff --git a/src/thread/sh/syscall_cp.s b/src/thread/sh/syscall_cp.s new file mode 100644 index 00000000..5677b9c0 --- /dev/null +++ b/src/thread/sh/syscall_cp.s @@ -0,0 +1,39 @@ +.text +.global __syscall_cp_asm +.type __syscall_cp_asm, @function +__syscall_cp_asm: + +.global __cp_begin +__cp_begin: + mov.l @r4, r4 + tst r4, r4 + bt 2f + + mov.l L1, r0 + braf r0 + nop +1: + +.align 2 +L1: .long __cancel@PLT-(1b-.) + +2: mov r5, r3 + mov r6, r4 + mov r7, r5 + mov.l @r15, r6 + mov.l @(4,r15), r7 + mov.l @(8,r15), r0 + mov.l @(12,r15), r1 + trapa #22 + +.global __cp_end +__cp_end: + ! work around hardware bug + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + rts + nop diff --git a/src/thread/superh/__set_thread_area.s b/src/thread/superh/__set_thread_area.s deleted file mode 100644 index 53887e64..00000000 --- a/src/thread/superh/__set_thread_area.s +++ /dev/null @@ -1,5 +0,0 @@ -.global __set_thread_area -.type __set_thread_area, @function -__set_thread_area: - rts - ldc r4, gbr diff --git a/src/thread/superh/__unmapself.s b/src/thread/superh/__unmapself.s deleted file mode 100644 index b34c3c80..00000000 --- a/src/thread/superh/__unmapself.s +++ /dev/null @@ -1,22 +0,0 @@ -.text -.global __unmapself -.type __unmapself, @function -__unmapself: - mov #91, r3 ! SYS_munmap - trapa #18 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - - mov #1, r3 ! SYS_exit - mov #0, r4 - trapa #17 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 diff --git a/src/thread/superh/clone.s b/src/thread/superh/clone.s deleted file mode 100644 index d6c9184d..00000000 --- a/src/thread/superh/clone.s +++ /dev/null @@ -1,47 +0,0 @@ -.text -.global __clone -.type __clone, @function -__clone: -! incoming: fn stack flags arg ptid tls ctid -! r4 r5 r6 r7 @r15 @(4,r15) @(8,r15) - - mov #-16, r0 - and r0, r5 - - mov r4, r1 ! r1 = fn - mov r7, r2 ! r2 = arg - - mov #120, r3 ! r3 = __NR_clone - mov r6, r4 ! r4 = flags - !mov r5, r5 ! r5 = stack - mov.l @r15, r6 ! r6 = ptid - mov.l @(8,r15), r7 ! r7 = ctid - mov.l @(4,r15), r0 ! r0 = tls - trapa #21 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - - cmp/eq #0, r0 - bt 1f - - ! we are the parent, return - rts - nop - -1: ! we are the child, call fn(arg) - jsr @r1 - mov r2, r4 - - mov #1, r3 ! __NR_exit - mov r0, r4 - trapa #17 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 diff --git a/src/thread/superh/syscall_cp.s b/src/thread/superh/syscall_cp.s deleted file mode 100644 index 5677b9c0..00000000 --- a/src/thread/superh/syscall_cp.s +++ /dev/null @@ -1,39 +0,0 @@ -.text -.global __syscall_cp_asm -.type __syscall_cp_asm, @function -__syscall_cp_asm: - -.global __cp_begin -__cp_begin: - mov.l @r4, r4 - tst r4, r4 - bt 2f - - mov.l L1, r0 - braf r0 - nop -1: - -.align 2 -L1: .long __cancel@PLT-(1b-.) - -2: mov r5, r3 - mov r6, r4 - mov r7, r5 - mov.l @r15, r6 - mov.l @(4,r15), r7 - mov.l @(8,r15), r0 - mov.l @(12,r15), r1 - trapa #22 - -.global __cp_end -__cp_end: - ! work around hardware bug - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - - rts - nop diff --git a/src/unistd/sh/pipe.s b/src/unistd/sh/pipe.s new file mode 100644 index 00000000..d865ae3a --- /dev/null +++ b/src/unistd/sh/pipe.s @@ -0,0 +1,27 @@ +.global pipe +.type pipe, @function +pipe: + mov #42, r3 + trapa #17 + + ! work around hardware bug + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + cmp/pz r0 + bt 1f + + mov.l L1, r1 + braf r1 + mov r0, r4 + +1: mov.l r0, @(0,r4) + mov.l r1, @(4,r4) + rts + mov #0, r0 + +.align 2 +L1: .long __syscall_ret@PLT-(1b-.) diff --git a/src/unistd/superh/pipe.s b/src/unistd/superh/pipe.s deleted file mode 100644 index d865ae3a..00000000 --- a/src/unistd/superh/pipe.s +++ /dev/null @@ -1,27 +0,0 @@ -.global pipe -.type pipe, @function -pipe: - mov #42, r3 - trapa #17 - - ! work around hardware bug - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - - cmp/pz r0 - bt 1f - - mov.l L1, r1 - braf r1 - mov r0, r4 - -1: mov.l r0, @(0,r4) - mov.l r1, @(4,r4) - rts - mov #0, r0 - -.align 2 -L1: .long __syscall_ret@PLT-(1b-.) -- cgit v1.2.1