|
@@ -1,2429 +0,0 @@
|
|
|
-From be7942d8dbce223ed6a75dfdf8d2cd1beb04e2eb Mon Sep 17 00:00:00 2001
|
|
|
-From: Max Filippov <jcmvbkbc@gmail.com>
|
|
|
-Date: Tue, 22 Mar 2016 02:35:58 +0300
|
|
|
-Subject: [PATCH 242/242] xtensa: add port
|
|
|
-
|
|
|
-Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
|
|
-Signed-off-by: Waldemar Brodkorb <wbx@uclibc-ng.org>
|
|
|
----
|
|
|
- arch/xtensa/atomic_arch.h | 30 ++
|
|
|
- arch/xtensa/bits/alltypes.h.in | 30 ++
|
|
|
- arch/xtensa/bits/endian.h | 7 +
|
|
|
- arch/xtensa/bits/float.h | 16 +
|
|
|
- arch/xtensa/bits/ioctl.h | 227 ++++++++++++
|
|
|
- arch/xtensa/bits/limits.h | 7 +
|
|
|
- arch/xtensa/bits/mman.h | 57 +++
|
|
|
- arch/xtensa/bits/posix.h | 2 +
|
|
|
- arch/xtensa/bits/reg.h | 2 +
|
|
|
- arch/xtensa/bits/setjmp.h | 1 +
|
|
|
- arch/xtensa/bits/signal.h | 88 +++++
|
|
|
- arch/xtensa/bits/stat.h | 21 ++
|
|
|
- arch/xtensa/bits/stdint.h | 20 +
|
|
|
- arch/xtensa/bits/syscall.h | 679 ++++++++++++++++++++++++++++++++++
|
|
|
- arch/xtensa/bits/termios.h | 168 +++++++++
|
|
|
- arch/xtensa/bits/user.h | 4 +
|
|
|
- arch/xtensa/bits/xtensa-config.h | 46 +++
|
|
|
- arch/xtensa/crt_arch.h | 26 ++
|
|
|
- arch/xtensa/pthread_arch.h | 11 +
|
|
|
- arch/xtensa/reloc.h | 21 ++
|
|
|
- arch/xtensa/syscall_arch.h | 102 +++++
|
|
|
- configure | 1 +
|
|
|
- crt/xtensa/crti.s | 11 +
|
|
|
- crt/xtensa/crtn.s | 5 +
|
|
|
- include/elf.h | 58 +++
|
|
|
- ldso/dlstart.c | 13 +-
|
|
|
- ldso/dynlink.c | 41 +-
|
|
|
- src/internal/xtensa/syscall.s | 15 +
|
|
|
- src/ldso/xtensa/tlsdesc.s | 22 ++
|
|
|
- src/setjmp/xtensa/longjmp.s | 73 ++++
|
|
|
- src/setjmp/xtensa/setjmp.s | 13 +
|
|
|
- src/signal/xtensa/restore.s | 10 +
|
|
|
- src/signal/xtensa/sigsetjmp.s | 69 ++++
|
|
|
- src/signal/xtensa/windowspill.s | 78 ++++
|
|
|
- src/thread/xtensa/__set_thread_area.s | 8 +
|
|
|
- src/thread/xtensa/__unmapself.s | 10 +
|
|
|
- src/thread/xtensa/clone.s | 39 ++
|
|
|
- src/thread/xtensa/syscall_cp.s | 37 ++
|
|
|
- 38 files changed, 2066 insertions(+), 2 deletions(-)
|
|
|
- create mode 100644 arch/xtensa/atomic_arch.h
|
|
|
- create mode 100644 arch/xtensa/bits/alltypes.h.in
|
|
|
- create mode 100644 arch/xtensa/bits/endian.h
|
|
|
- create mode 100644 arch/xtensa/bits/float.h
|
|
|
- create mode 100644 arch/xtensa/bits/ioctl.h
|
|
|
- create mode 100644 arch/xtensa/bits/limits.h
|
|
|
- create mode 100644 arch/xtensa/bits/mman.h
|
|
|
- create mode 100644 arch/xtensa/bits/posix.h
|
|
|
- create mode 100644 arch/xtensa/bits/reg.h
|
|
|
- create mode 100644 arch/xtensa/bits/setjmp.h
|
|
|
- create mode 100644 arch/xtensa/bits/signal.h
|
|
|
- create mode 100644 arch/xtensa/bits/stat.h
|
|
|
- create mode 100644 arch/xtensa/bits/stdint.h
|
|
|
- create mode 100644 arch/xtensa/bits/syscall.h
|
|
|
- create mode 100644 arch/xtensa/bits/termios.h
|
|
|
- create mode 100644 arch/xtensa/bits/user.h
|
|
|
- create mode 100644 arch/xtensa/bits/xtensa-config.h
|
|
|
- create mode 100644 arch/xtensa/crt_arch.h
|
|
|
- create mode 100644 arch/xtensa/pthread_arch.h
|
|
|
- create mode 100644 arch/xtensa/reloc.h
|
|
|
- create mode 100644 arch/xtensa/syscall_arch.h
|
|
|
- create mode 100644 crt/xtensa/crti.s
|
|
|
- create mode 100644 crt/xtensa/crtn.s
|
|
|
- create mode 100644 src/internal/xtensa/syscall.s
|
|
|
- create mode 100644 src/ldso/xtensa/tlsdesc.s
|
|
|
- create mode 100644 src/setjmp/xtensa/longjmp.s
|
|
|
- create mode 100644 src/setjmp/xtensa/setjmp.s
|
|
|
- create mode 100644 src/signal/xtensa/restore.s
|
|
|
- create mode 100644 src/signal/xtensa/sigsetjmp.s
|
|
|
- create mode 100644 src/signal/xtensa/windowspill.s
|
|
|
- create mode 100644 src/thread/xtensa/__set_thread_area.s
|
|
|
- create mode 100644 src/thread/xtensa/__unmapself.s
|
|
|
- create mode 100644 src/thread/xtensa/clone.s
|
|
|
- create mode 100644 src/thread/xtensa/syscall_cp.s
|
|
|
-
|
|
|
-diff --git a/arch/xtensa/atomic_arch.h b/arch/xtensa/atomic_arch.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..476814b
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/atomic_arch.h
|
|
|
-@@ -0,0 +1,30 @@
|
|
|
-+#ifndef _INTERNAL_ATOMIC_H
|
|
|
-+#define _INTERNAL_ATOMIC_H
|
|
|
-+
|
|
|
-+#include <stdint.h>
|
|
|
-+
|
|
|
-+#define a_cas a_cas
|
|
|
-+static inline int a_cas(volatile int *p, int t, int s)
|
|
|
-+{
|
|
|
-+ __asm__ __volatile__(
|
|
|
-+ " wsr %1, scompare1\n"
|
|
|
-+ " s32c1i %0, %2, 0\n"
|
|
|
-+ : "+a"(s)
|
|
|
-+ : "a"(t), "a"(p)
|
|
|
-+ : "memory" );
|
|
|
-+ return s;
|
|
|
-+}
|
|
|
-+
|
|
|
-+#define a_barrier a_barrier
|
|
|
-+static inline void a_barrier()
|
|
|
-+{
|
|
|
-+ __asm__ __volatile__ ("memw" : : : "memory");
|
|
|
-+}
|
|
|
-+
|
|
|
-+#define a_crash a_crash
|
|
|
-+static inline void a_crash()
|
|
|
-+{
|
|
|
-+ __asm__ __volatile__ ("ill" : : : "memory");
|
|
|
-+}
|
|
|
-+
|
|
|
-+#endif
|
|
|
-diff --git a/arch/xtensa/bits/alltypes.h.in b/arch/xtensa/bits/alltypes.h.in
|
|
|
-new file mode 100644
|
|
|
-index 0000000..1e2a8c1
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/alltypes.h.in
|
|
|
-@@ -0,0 +1,30 @@
|
|
|
-+#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
|
|
|
-+#ifdef __WCHAR_TYPE__
|
|
|
-+TYPEDEF __WCHAR_TYPE__ wchar_t;
|
|
|
-+#else
|
|
|
-+TYPEDEF unsigned wchar_t;
|
|
|
-+#endif
|
|
|
-+#endif
|
|
|
-+
|
|
|
-+TYPEDEF float float_t;
|
|
|
-+TYPEDEF double double_t;
|
|
|
-+
|
|
|
-+TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
|
|
|
-+
|
|
|
-+TYPEDEF long time_t;
|
|
|
-+TYPEDEF long suseconds_t;
|
|
|
-+
|
|
|
-+TYPEDEF struct { union { int __i[9]; volatile int __vi[9]; unsigned __s[9]; } __u; } pthread_attr_t;
|
|
|
-+TYPEDEF struct { union { int __i[6]; volatile int __vi[6]; volatile void *volatile __p[6]; } __u; } pthread_mutex_t;
|
|
|
-+TYPEDEF struct { union { int __i[6]; volatile int __vi[6]; volatile void *volatile __p[6]; } __u; } mtx_t;
|
|
|
-+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } pthread_cond_t;
|
|
|
-+TYPEDEF struct { union { int __i[12]; volatile int __vi[12]; void *__p[12]; } __u; } cnd_t;
|
|
|
-+TYPEDEF struct { union { int __i[8]; volatile int __vi[8]; void *__p[8]; } __u; } pthread_rwlock_t;
|
|
|
-+TYPEDEF struct { union { int __i[5]; volatile int __vi[5]; void *__p[5]; } __u; } pthread_barrier_t;
|
|
|
-diff --git a/arch/xtensa/bits/endian.h b/arch/xtensa/bits/endian.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..d719907
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/endian.h
|
|
|
-@@ -0,0 +1,7 @@
|
|
|
-+#if __XTENSA_EB__
|
|
|
-+#define __BYTE_ORDER __BIG_ENDIAN
|
|
|
-+#elif __XTENSA_EL__
|
|
|
-+#define __BYTE_ORDER __LITTLE_ENDIAN
|
|
|
-+#else
|
|
|
-+#error Unknown endianness
|
|
|
-+#endif
|
|
|
-diff --git a/arch/xtensa/bits/float.h b/arch/xtensa/bits/float.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..c4a655e
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/float.h
|
|
|
-@@ -0,0 +1,16 @@
|
|
|
-+#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/xtensa/bits/ioctl.h b/arch/xtensa/bits/ioctl.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..e1ab80e
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/ioctl.h
|
|
|
-@@ -0,0 +1,227 @@
|
|
|
-+#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
|
|
|
-+#define _IOC_NONE 0U
|
|
|
-+#define _IOC_READ 2U
|
|
|
-+#define _IOC_WRITE 1U
|
|
|
-+
|
|
|
-+#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, loff_t)
|
|
|
-+
|
|
|
-+#define TCGETS 0x5401
|
|
|
-+#define TCSETS 0x5402
|
|
|
-+#define TCSETSW 0x5403
|
|
|
-+#define TCSETSF 0x5404
|
|
|
-+
|
|
|
-+#define TCGETA 0x80127417 /* _IOR('t', 23, struct termio) */
|
|
|
-+#define TCSETA 0x40127418 /* _IOW('t', 24, struct termio) */
|
|
|
-+#define TCSETAW 0x40127419 /* _IOW('t', 25, struct termio) */
|
|
|
-+#define TCSETAF 0x4012741C /* _IOW('t', 28, struct termio) */
|
|
|
-+
|
|
|
-+#define TCSBRK _IO('t', 29)
|
|
|
-+#define TCXONC _IO('t', 30)
|
|
|
-+#define TCFLSH _IO('t', 31)
|
|
|
-+
|
|
|
-+#define TIOCSWINSZ 0x40087467 /* _IOW('t', 103, struct winsize) */
|
|
|
-+#define TIOCGWINSZ 0x80087468 /* _IOR('t', 104, struct winsize) */
|
|
|
-+#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
|
|
|
-+#define TIOCSTOP _IO('t', 111) /* stop output, like ^S */
|
|
|
-+#define TIOCOUTQ _IOR('t', 115, int) /* output queue size */
|
|
|
-+
|
|
|
-+#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 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 0x803C541E /*_IOR('T', 30, struct serial_struct)*/
|
|
|
-+#define TIOCSSERIAL 0x403C541F /*_IOW('T', 31, struct serial_struct)*/
|
|
|
-+#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) /* Needed for POSIX tcsendbreak()*/
|
|
|
-+#define TIOCSBRK _IO('T', 39) /* BSD compatibility */
|
|
|
-+#define TIOCCBRK _IO('T', 40) /* BSD compatibility */
|
|
|
-+#define TIOCGSID _IOR('T', 41, pid_t) /* Return the session ID of FD*/
|
|
|
-+#define TCGETS2 _IOR('T', 42, struct termios2)
|
|
|
-+#define TCSETS2 _IOW('T', 43, struct termios2)
|
|
|
-+#define TCSETSW2 _IOW('T', 44, struct termios2)
|
|
|
-+#define TCSETSF2 _IOW('T', 45, struct termios2)
|
|
|
-+#define TIOCGRS485 _IOR('T', 46, struct serial_rs485)
|
|
|
-+#define TIOCSRS485 _IOWR('T', 47, struct serial_rs485)
|
|
|
-+#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
|
|
|
-+#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
|
|
|
-+#define TIOCGDEV _IOR('T',0x32, unsigned int) /* Get primary device node of /dev/console */
|
|
|
-+#define TIOCSIG _IOW('T',0x36, int) /* Generate signal on Pty slave */
|
|
|
-+#define TIOCVHANGUP _IO('T', 0x37)
|
|
|
-+#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
|
|
|
-+#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
|
|
|
-+#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
|
|
|
-+
|
|
|
-+#define TIOCSERCONFIG _IO('T', 83)
|
|
|
-+#define TIOCSERGWILD _IOR('T', 84, int)
|
|
|
-+#define TIOCSERSWILD _IOW('T', 85, int)
|
|
|
-+#define TIOCGLCKTRMIOS 0x5456
|
|
|
-+#define TIOCSLCKTRMIOS 0x5457
|
|
|
-+#define TIOCSERGSTRUCT 0x5458 /* For debugging only */
|
|
|
-+#define TIOCSERGETLSR _IOR('T', 89, unsigned int) /* Get line status reg. */
|
|
|
-+ /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
|
|
|
-+# define TIOCSER_TEMT 0x01 /* Transmitter physically empty */
|
|
|
-+#define TIOCSERGETMULTI 0x80a8545a /* Get multiport config */
|
|
|
-+ /* _IOR('T', 90, struct serial_multiport_struct) */
|
|
|
-+#define TIOCSERSETMULTI 0x40a8545b /* Set multiport config */
|
|
|
-+ /* _IOW('T', 91, struct serial_multiport_struct) */
|
|
|
-+
|
|
|
-+#define TIOCMIWAIT _IO('T', 92) /* wait for a change on serial input line(s) */
|
|
|
-+#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
|
|
|
-+
|
|
|
-+struct winsize {
|
|
|
-+ unsigned short ws_row;
|
|
|
-+ unsigned short ws_col;
|
|
|
-+ unsigned short ws_xpixel;
|
|
|
-+ unsigned short ws_ypixel;
|
|
|
-+};
|
|
|
-+
|
|
|
-+#define TIOCM_LE 0x001
|
|
|
-+#define TIOCM_DTR 0x002
|
|
|
-+#define TIOCM_RTS 0x004
|
|
|
-+#define TIOCM_ST 0x008
|
|
|
-+#define TIOCM_SR 0x010
|
|
|
-+#define TIOCM_CTS 0x020
|
|
|
-+#define TIOCM_CAR 0x040
|
|
|
-+#define TIOCM_RNG 0x080
|
|
|
-+#define TIOCM_DSR 0x100
|
|
|
-+#define TIOCM_CD TIOCM_CAR
|
|
|
-+#define TIOCM_RI TIOCM_RNG
|
|
|
-+#define TIOCM_OUT1 0x2000
|
|
|
-+#define TIOCM_OUT2 0x4000
|
|
|
-+#define TIOCM_LOOP 0x8000
|
|
|
-+#define TIOCM_MODEM_BITS TIOCM_OUT2
|
|
|
-+
|
|
|
-+#define N_TTY 0
|
|
|
-+#define N_SLIP 1
|
|
|
-+#define N_MOUSE 2
|
|
|
-+#define N_PPP 3
|
|
|
-+#define N_STRIP 4
|
|
|
-+#define N_AX25 5
|
|
|
-+#define N_X25 6
|
|
|
-+#define N_6PACK 7
|
|
|
-+#define N_MASC 8
|
|
|
-+#define N_R3964 9
|
|
|
-+#define N_PROFIBUS_FDL 10
|
|
|
-+#define N_IRDA 11
|
|
|
-+#define N_SMSBLOCK 12
|
|
|
-+#define N_HDLC 13
|
|
|
-+#define N_SYNC_PPP 14
|
|
|
-+#define N_HCI 15
|
|
|
-+
|
|
|
-+#define FIOGETOWN _IOR('f', 123, int)
|
|
|
-+#define FIOSETOWN _IOW('f', 124, int)
|
|
|
-+#define SIOCATMARK _IOR('s', 7, int)
|
|
|
-+#define SIOCSPGRP _IOW('s', 8, pid_t)
|
|
|
-+#define SIOCGPGRP _IOR('s', 9, pid_t)
|
|
|
-+#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
|
|
|
-+#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
|
|
|
-+
|
|
|
-+#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/xtensa/bits/limits.h b/arch/xtensa/bits/limits.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..fbc6d23
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/limits.h
|
|
|
-@@ -0,0 +1,7 @@
|
|
|
-+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|
|
|
-+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
|
-+#define LONG_BIT 32
|
|
|
-+#endif
|
|
|
-+
|
|
|
-+#define LONG_MAX 0x7fffffffL
|
|
|
-+#define LLONG_MAX 0x7fffffffffffffffLL
|
|
|
-diff --git a/arch/xtensa/bits/mman.h b/arch/xtensa/bits/mman.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..3125fc2
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/mman.h
|
|
|
-@@ -0,0 +1,57 @@
|
|
|
-+#define MAP_FAILED ((void *) -1)
|
|
|
-+
|
|
|
-+#define PROT_NONE 0
|
|
|
-+#define PROT_READ 1
|
|
|
-+#define PROT_WRITE 2
|
|
|
-+#define PROT_EXEC 4
|
|
|
-+#define PROT_GROWSDOWN 0x01000000
|
|
|
-+#define PROT_GROWSUP 0x02000000
|
|
|
-+
|
|
|
-+#define MAP_SHARED 0x01
|
|
|
-+#define MAP_PRIVATE 0x02
|
|
|
-+#define MAP_FIXED 0x10
|
|
|
-+
|
|
|
-+#define MAP_TYPE 0x0f
|
|
|
-+#define MAP_FILE 0x00
|
|
|
-+#define MAP_ANON 0x800
|
|
|
-+#define MAP_ANONYMOUS MAP_ANON
|
|
|
-+#define MAP_NORESERVE 0x0400
|
|
|
-+#define MAP_GROWSDOWN 0x1000
|
|
|
-+#define MAP_DENYWRITE 0x2000
|
|
|
-+#define MAP_EXECUTABLE 0x4000
|
|
|
-+#define MAP_LOCKED 0x8000
|
|
|
-+#define MAP_POPULATE 0x10000
|
|
|
-+#define MAP_NONBLOCK 0x20000
|
|
|
-+#define MAP_STACK 0x40000
|
|
|
-+#define MAP_HUGETLB 0x80000
|
|
|
-+
|
|
|
-+#define POSIX_MADV_NORMAL 0
|
|
|
-+#define POSIX_MADV_RANDOM 1
|
|
|
-+#define POSIX_MADV_SEQUENTIAL 2
|
|
|
-+#define POSIX_MADV_WILLNEED 3
|
|
|
-+#define POSIX_MADV_DONTNEED 0
|
|
|
-+
|
|
|
-+#define MS_ASYNC 1
|
|
|
-+#define MS_INVALIDATE 2
|
|
|
-+#define MS_SYNC 4
|
|
|
-+
|
|
|
-+#define MCL_CURRENT 1
|
|
|
-+#define MCL_FUTURE 2
|
|
|
-+
|
|
|
-+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
|
-+#define MADV_NORMAL 0
|
|
|
-+#define MADV_RANDOM 1
|
|
|
-+#define MADV_SEQUENTIAL 2
|
|
|
-+#define MADV_WILLNEED 3
|
|
|
-+#define MADV_DONTNEED 4
|
|
|
-+#define MADV_REMOVE 9
|
|
|
-+#define MADV_DONTFORK 10
|
|
|
-+#define MADV_DOFORK 11
|
|
|
-+#define MADV_MERGEABLE 12
|
|
|
-+#define MADV_UNMERGEABLE 13
|
|
|
-+#define MADV_HUGEPAGE 14
|
|
|
-+#define MADV_NOHUGEPAGE 15
|
|
|
-+#define MADV_DONTDUMP 16
|
|
|
-+#define MADV_DODUMP 17
|
|
|
-+#define MADV_HWPOISON 100
|
|
|
-+#endif
|
|
|
-diff --git a/arch/xtensa/bits/posix.h b/arch/xtensa/bits/posix.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..30a3871
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/posix.h
|
|
|
-@@ -0,0 +1,2 @@
|
|
|
-+#define _POSIX_V6_ILP32_OFFBIG 1
|
|
|
-+#define _POSIX_V7_ILP32_OFFBIG 1
|
|
|
-diff --git a/arch/xtensa/bits/reg.h b/arch/xtensa/bits/reg.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..0192a29
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/reg.h
|
|
|
-@@ -0,0 +1,2 @@
|
|
|
-+#undef __WORDSIZE
|
|
|
-+#define __WORDSIZE 32
|
|
|
-diff --git a/arch/xtensa/bits/setjmp.h b/arch/xtensa/bits/setjmp.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..b2bd974
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/setjmp.h
|
|
|
-@@ -0,0 +1 @@
|
|
|
-+typedef unsigned long __jmp_buf[18];
|
|
|
-diff --git a/arch/xtensa/bits/signal.h b/arch/xtensa/bits/signal.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..545ffd3
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/signal.h
|
|
|
-@@ -0,0 +1,88 @@
|
|
|
-+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
|
|
|
-+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
|
-+
|
|
|
-+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
|
-+#define MINSIGSTKSZ 2048
|
|
|
-+#define SIGSTKSZ 8192
|
|
|
-+#endif
|
|
|
-+
|
|
|
-+typedef struct sigcontext
|
|
|
-+{
|
|
|
-+ unsigned long sc_pc;
|
|
|
-+ unsigned long sc_ps;
|
|
|
-+ unsigned long sc_lbeg;
|
|
|
-+ unsigned long sc_lend;
|
|
|
-+ unsigned long sc_lcount;
|
|
|
-+ unsigned long sc_sar;
|
|
|
-+ unsigned long sc_acclo;
|
|
|
-+ unsigned long sc_acchi;
|
|
|
-+ unsigned long sc_a[16];
|
|
|
-+ void *sc_xtregs;
|
|
|
-+} mcontext_t;
|
|
|
-+
|
|
|
-+struct sigaltstack {
|
|
|
-+ void *ss_sp;
|
|
|
-+ int ss_flags;
|
|
|
-+ size_t ss_size;
|
|
|
-+};
|
|
|
-+
|
|
|
-+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 0x00000001
|
|
|
-+#define SA_NOCLDWAIT 0x00000002 /* not supported yet */
|
|
|
-+#define SA_SIGINFO 0x00000004
|
|
|
-+#define SA_ONSTACK 0x08000000
|
|
|
-+#define SA_RESTART 0x10000000
|
|
|
-+#define SA_NODEFER 0x40000000
|
|
|
-+#define SA_RESETHAND 0x80000000
|
|
|
-+
|
|
|
-+#define SA_NOMASK SA_NODEFER
|
|
|
-+#define SA_ONESHOT SA_RESETHAND
|
|
|
-+
|
|
|
-+#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 6
|
|
|
-+#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 SIGIO
|
|
|
-+/* #define SIGLOST 29 */
|
|
|
-+#define SIGPWR 30
|
|
|
-+#define SIGSYS 31
|
|
|
-+#define SIGUNUSED 31
|
|
|
-+
|
|
|
-+#define _NSIG 64
|
|
|
-diff --git a/arch/xtensa/bits/stat.h b/arch/xtensa/bits/stat.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..24231f8
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/stat.h
|
|
|
-@@ -0,0 +1,21 @@
|
|
|
-+/* copied from kernel definition, but with padding replaced
|
|
|
-+ * by the corresponding correctly-sized userspace types. */
|
|
|
-+
|
|
|
-+struct stat
|
|
|
-+{
|
|
|
-+ dev_t st_dev;
|
|
|
-+ ino_t st_ino;
|
|
|
-+ mode_t st_mode;
|
|
|
-+ nlink_t st_nlink;
|
|
|
-+ uid_t st_uid;
|
|
|
-+ gid_t st_gid;
|
|
|
-+ dev_t st_rdev;
|
|
|
-+ off_t st_size;
|
|
|
-+ blksize_t st_blksize;
|
|
|
-+ long __st_padding1;
|
|
|
-+ blkcnt_t st_blocks;
|
|
|
-+ struct timespec st_atim;
|
|
|
-+ struct timespec st_mtim;
|
|
|
-+ struct timespec st_ctim;
|
|
|
-+ long __st_padding2[2];
|
|
|
-+};
|
|
|
-diff --git a/arch/xtensa/bits/stdint.h b/arch/xtensa/bits/stdint.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..d1b2712
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/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/xtensa/bits/syscall.h b/arch/xtensa/bits/syscall.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..df8c2ab
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/syscall.h
|
|
|
-@@ -0,0 +1,679 @@
|
|
|
-+#define __NR_spill 0
|
|
|
-+#define __NR_xtensa 1
|
|
|
-+#define __NR_available4 2
|
|
|
-+#define __NR_available5 3
|
|
|
-+#define __NR_available6 4
|
|
|
-+#define __NR_available7 5
|
|
|
-+#define __NR_available8 6
|
|
|
-+#define __NR_available9 7
|
|
|
-+#define __NR_open 8
|
|
|
-+#define __NR_close 9
|
|
|
-+#define __NR_dup 10
|
|
|
-+#define __NR_dup2 11
|
|
|
-+#define __NR_read 12
|
|
|
-+#define __NR_write 13
|
|
|
-+#define __NR_select 14
|
|
|
-+#define __NR_lseek 15
|
|
|
-+#define __NR_poll 16
|
|
|
-+#define __NR__llseek 17
|
|
|
-+#define __NR_epoll_wait 18
|
|
|
-+#define __NR_epoll_ctl 19
|
|
|
-+#define __NR_epoll_create 20
|
|
|
-+#define __NR_creat 21
|
|
|
-+#define __NR_truncate 22
|
|
|
-+#define __NR_ftruncate 23
|
|
|
-+#define __NR_readv 24
|
|
|
-+#define __NR_writev 25
|
|
|
-+#define __NR_fsync 26
|
|
|
-+#define __NR_fdatasync 27
|
|
|
-+#define __NR_truncate64 28
|
|
|
-+#define __NR_ftruncate64 29
|
|
|
-+#define __NR_pread64 30
|
|
|
-+#define __NR_pwrite64 31
|
|
|
-+#define __NR_link 32
|
|
|
-+#define __NR_rename 33
|
|
|
-+#define __NR_symlink 34
|
|
|
-+#define __NR_readlink 35
|
|
|
-+#define __NR_mknod 36
|
|
|
-+#define __NR_pipe 37
|
|
|
-+#define __NR_unlink 38
|
|
|
-+#define __NR_rmdir 39
|
|
|
-+#define __NR_mkdir 40
|
|
|
-+#define __NR_chdir 41
|
|
|
-+#define __NR_fchdir 42
|
|
|
-+#define __NR_getcwd 43
|
|
|
-+#define __NR_chmod 44
|
|
|
-+#define __NR_chown 45
|
|
|
-+#define __NR_stat 46
|
|
|
-+#define __NR_stat64 47
|
|
|
-+#define __NR_lchown 48
|
|
|
-+#define __NR_lstat 49
|
|
|
-+#define __NR_lstat64 50
|
|
|
-+#define __NR_available51 51
|
|
|
-+#define __NR_fchmod 52
|
|
|
-+#define __NR_fchown 53
|
|
|
-+#define __NR_fstat 54
|
|
|
-+#define __NR_fstat64 55
|
|
|
-+#define __NR_flock 56
|
|
|
-+#define __NR_access 57
|
|
|
-+#define __NR_umask 58
|
|
|
-+#define __NR_getdents 59
|
|
|
-+#define __NR_getdents64 60
|
|
|
-+#define __NR_fcntl64 61
|
|
|
-+#define __NR_fallocate 62
|
|
|
-+#define __NR_fadvise64_64 63
|
|
|
-+#define __NR_utime 64 /* glibc 2.3.3 ?? */
|
|
|
-+#define __NR_utimes 65
|
|
|
-+#define __NR_ioctl 66
|
|
|
-+#define __NR_fcntl 67
|
|
|
-+#define __NR_setxattr 68
|
|
|
-+#define __NR_getxattr 69
|
|
|
-+#define __NR_listxattr 70
|
|
|
-+#define __NR_removexattr 71
|
|
|
-+#define __NR_lsetxattr 72
|
|
|
-+#define __NR_lgetxattr 73
|
|
|
-+#define __NR_llistxattr 74
|
|
|
-+#define __NR_lremovexattr 75
|
|
|
-+#define __NR_fsetxattr 76
|
|
|
-+#define __NR_fgetxattr 77
|
|
|
-+#define __NR_flistxattr 78
|
|
|
-+#define __NR_fremovexattr 79
|
|
|
-+#define __NR_mmap2 80
|
|
|
-+#define __NR_munmap 81
|
|
|
-+#define __NR_mprotect 82
|
|
|
-+#define __NR_brk 83
|
|
|
-+#define __NR_mlock 84
|
|
|
-+#define __NR_munlock 85
|
|
|
-+#define __NR_mlockall 86
|
|
|
-+#define __NR_munlockall 87
|
|
|
-+#define __NR_mremap 88
|
|
|
-+#define __NR_msync 89
|
|
|
-+#define __NR_mincore 90
|
|
|
-+#define __NR_madvise 91
|
|
|
-+#define __NR_shmget 92
|
|
|
-+#define __NR_shmat 93
|
|
|
-+#define __NR_shmctl 94
|
|
|
-+#define __NR_shmdt 95
|
|
|
-+#define __NR_socket 96
|
|
|
-+#define __NR_setsockopt 97
|
|
|
-+#define __NR_getsockopt 98
|
|
|
-+#define __NR_shutdown 99
|
|
|
-+#define __NR_bind 100
|
|
|
-+#define __NR_connect 101
|
|
|
-+#define __NR_listen 102
|
|
|
-+#define __NR_accept 103
|
|
|
-+#define __NR_getsockname 104
|
|
|
-+#define __NR_getpeername 105
|
|
|
-+#define __NR_sendmsg 106
|
|
|
-+#define __NR_recvmsg 107
|
|
|
-+#define __NR_send 108
|
|
|
-+#define __NR_recv 109
|
|
|
-+#define __NR_sendto 110
|
|
|
-+#define __NR_recvfrom 111
|
|
|
-+#define __NR_socketpair 112
|
|
|
-+#define __NR_sendfile 113
|
|
|
-+#define __NR_sendfile64 114
|
|
|
-+#define __NR_sendmmsg 115
|
|
|
-+#define __NR_clone 116
|
|
|
-+#define __NR_execve 117
|
|
|
-+#define __NR_exit 118
|
|
|
-+#define __NR_exit_group 119
|
|
|
-+#define __NR_getpid 120
|
|
|
-+#define __NR_wait4 121
|
|
|
-+#define __NR_waitid 122
|
|
|
-+#define __NR_kill 123
|
|
|
-+#define __NR_tkill 124
|
|
|
-+#define __NR_tgkill 125
|
|
|
-+#define __NR_set_tid_address 126
|
|
|
-+#define __NR_gettid 127
|
|
|
-+#define __NR_setsid 128
|
|
|
-+#define __NR_getsid 129
|
|
|
-+#define __NR_prctl 130
|
|
|
-+#define __NR_personality 131
|
|
|
-+#define __NR_getpriority 132
|
|
|
-+#define __NR_setpriority 133
|
|
|
-+#define __NR_setitimer 134
|
|
|
-+#define __NR_getitimer 135
|
|
|
-+#define __NR_setuid 136
|
|
|
-+#define __NR_getuid 137
|
|
|
-+#define __NR_setgid 138
|
|
|
-+#define __NR_getgid 139
|
|
|
-+#define __NR_geteuid 140
|
|
|
-+#define __NR_getegid 141
|
|
|
-+#define __NR_setreuid 142
|
|
|
-+#define __NR_setregid 143
|
|
|
-+#define __NR_setresuid 144
|
|
|
-+#define __NR_getresuid 145
|
|
|
-+#define __NR_setresgid 146
|
|
|
-+#define __NR_getresgid 147
|
|
|
-+#define __NR_setpgid 148
|
|
|
-+#define __NR_getpgid 149
|
|
|
-+#define __NR_getppid 150
|
|
|
-+#define __NR_getpgrp 151
|
|
|
-+#define __NR_reserved152 152 /* set_thread_area */
|
|
|
-+#define __NR_reserved153 153 /* get_thread_area */
|
|
|
-+#define __NR_times 154
|
|
|
-+#define __NR_acct 155
|
|
|
-+#define __NR_sched_setaffinity 156
|
|
|
-+#define __NR_sched_getaffinity 157
|
|
|
-+#define __NR_capget 158
|
|
|
-+#define __NR_capset 159
|
|
|
-+#define __NR_ptrace 160
|
|
|
-+#define __NR_semtimedop 161
|
|
|
-+#define __NR_semget 162
|
|
|
-+#define __NR_semop 163
|
|
|
-+#define __NR_semctl 164
|
|
|
-+#define __NR_available165 165
|
|
|
-+#define __NR_msgget 166
|
|
|
-+#define __NR_msgsnd 167
|
|
|
-+#define __NR_msgrcv 168
|
|
|
-+#define __NR_msgctl 169
|
|
|
-+#define __NR_available170 170
|
|
|
-+#define __NR_umount2 171
|
|
|
-+#define __NR_mount 172
|
|
|
-+#define __NR_swapon 173
|
|
|
-+#define __NR_chroot 174
|
|
|
-+#define __NR_pivot_root 175
|
|
|
-+#define __NR_umount 176
|
|
|
-+#define __NR_swapoff 177
|
|
|
-+#define __NR_sync 178
|
|
|
-+#define __NR_syncfs 179
|
|
|
-+#define __NR_setfsuid 180
|
|
|
-+#define __NR_setfsgid 181
|
|
|
-+#define __NR_sysfs 182
|
|
|
-+#define __NR_ustat 183
|
|
|
-+#define __NR_statfs 184
|
|
|
-+#define __NR_fstatfs 185
|
|
|
-+#define __NR_statfs64 186
|
|
|
-+#define __NR_fstatfs64 187
|
|
|
-+#define __NR_setrlimit 188
|
|
|
-+#define __NR_getrlimit 189
|
|
|
-+#define __NR_getrusage 190
|
|
|
-+#define __NR_futex 191
|
|
|
-+#define __NR_gettimeofday 192
|
|
|
-+#define __NR_settimeofday 193
|
|
|
-+#define __NR_adjtimex 194
|
|
|
-+#define __NR_nanosleep 195
|
|
|
-+#define __NR_getgroups 196
|
|
|
-+#define __NR_setgroups 197
|
|
|
-+#define __NR_sethostname 198
|
|
|
-+#define __NR_setdomainname 199
|
|
|
-+#define __NR_syslog 200
|
|
|
-+#define __NR_vhangup 201
|
|
|
-+#define __NR_uselib 202
|
|
|
-+#define __NR_reboot 203
|
|
|
-+#define __NR_quotactl 204
|
|
|
-+#define __NR_nfsservctl 205
|
|
|
-+#define __NR__sysctl 206
|
|
|
-+#define __NR_bdflush 207
|
|
|
-+#define __NR_uname 208
|
|
|
-+#define __NR_sysinfo 209
|
|
|
-+#define __NR_init_module 210
|
|
|
-+#define __NR_delete_module 211
|
|
|
-+#define __NR_sched_setparam 212
|
|
|
-+#define __NR_sched_getparam 213
|
|
|
-+#define __NR_sched_setscheduler 214
|
|
|
-+#define __NR_sched_getscheduler 215
|
|
|
-+#define __NR_sched_get_priority_max 216
|
|
|
-+#define __NR_sched_get_priority_min 217
|
|
|
-+#define __NR_sched_rr_get_interval 218
|
|
|
-+#define __NR_sched_yield 219
|
|
|
-+#define __NR_available222 222
|
|
|
-+#define __NR_restart_syscall 223
|
|
|
-+#define __NR_sigaltstack 224
|
|
|
-+#define __NR_rt_sigreturn 225
|
|
|
-+#define __NR_rt_sigaction 226
|
|
|
-+#define __NR_rt_sigprocmask 227
|
|
|
-+#define __NR_rt_sigpending 228
|
|
|
-+#define __NR_rt_sigtimedwait 229
|
|
|
-+#define __NR_rt_sigqueueinfo 230
|
|
|
-+#define __NR_rt_sigsuspend 231
|
|
|
-+#define __NR_mq_open 232
|
|
|
-+#define __NR_mq_unlink 233
|
|
|
-+#define __NR_mq_timedsend 234
|
|
|
-+#define __NR_mq_timedreceive 235
|
|
|
-+#define __NR_mq_notify 236
|
|
|
-+#define __NR_mq_getsetattr 237
|
|
|
-+#define __NR_available238 238
|
|
|
-+#define __NR_io_setup 239
|
|
|
-+#define __NR_io_destroy 240
|
|
|
-+#define __NR_io_submit 241
|
|
|
-+#define __NR_io_getevents 242
|
|
|
-+#define __NR_io_cancel 243
|
|
|
-+#define __NR_clock_settime 244
|
|
|
-+#define __NR_clock_gettime 245
|
|
|
-+#define __NR_clock_getres 246
|
|
|
-+#define __NR_clock_nanosleep 247
|
|
|
-+#define __NR_timer_create 248
|
|
|
-+#define __NR_timer_delete 249
|
|
|
-+#define __NR_timer_settime 250
|
|
|
-+#define __NR_timer_gettime 251
|
|
|
-+#define __NR_timer_getoverrun 252
|
|
|
-+#define __NR_reserved253 253
|
|
|
-+#define __NR_lookup_dcookie 254
|
|
|
-+#define __NR_available255 255
|
|
|
-+#define __NR_add_key 256
|
|
|
-+#define __NR_request_key 257
|
|
|
-+#define __NR_keyctl 258
|
|
|
-+#define __NR_available259 259
|
|
|
-+#define __NR_readahead 260
|
|
|
-+#define __NR_remap_file_pages 261
|
|
|
-+#define __NR_migrate_pages 262
|
|
|
-+#define __NR_mbind 263
|
|
|
-+#define __NR_get_mempolicy 264
|
|
|
-+#define __NR_set_mempolicy 265
|
|
|
-+#define __NR_unshare 266
|
|
|
-+#define __NR_move_pages 267
|
|
|
-+#define __NR_splice 268
|
|
|
-+#define __NR_tee 269
|
|
|
-+#define __NR_vmsplice 270
|
|
|
-+#define __NR_available271 271
|
|
|
-+#define __NR_pselect6 272
|
|
|
-+#define __NR_ppoll 273
|
|
|
-+#define __NR_epoll_pwait 274
|
|
|
-+#define __NR_epoll_create1 275
|
|
|
-+#define __NR_inotify_init 276
|
|
|
-+#define __NR_inotify_add_watch 277
|
|
|
-+#define __NR_inotify_rm_watch 278
|
|
|
-+#define __NR_inotify_init1 279
|
|
|
-+#define __NR_getcpu 280
|
|
|
-+#define __NR_kexec_load 281
|
|
|
-+#define __NR_ioprio_set 282
|
|
|
-+#define __NR_ioprio_get 283
|
|
|
-+#define __NR_set_robust_list 284
|
|
|
-+#define __NR_get_robust_list 285
|
|
|
-+#define __NR_available286 286
|
|
|
-+#define __NR_available287 287
|
|
|
-+#define __NR_openat 288
|
|
|
-+#define __NR_mkdirat 289
|
|
|
-+#define __NR_mknodat 290
|
|
|
-+#define __NR_unlinkat 291
|
|
|
-+#define __NR_renameat 292
|
|
|
-+#define __NR_linkat 293
|
|
|
-+#define __NR_symlinkat 294
|
|
|
-+#define __NR_readlinkat 295
|
|
|
-+#define __NR_utimensat 296
|
|
|
-+#define __NR_fchownat 297
|
|
|
-+#define __NR_futimesat 298
|
|
|
-+#define __NR_fstatat64 299
|
|
|
-+#define __NR_fchmodat 300
|
|
|
-+#define __NR_faccessat 301
|
|
|
-+#define __NR_available302 302
|
|
|
-+#define __NR_available303 303
|
|
|
-+#define __NR_signalfd 304
|
|
|
-+#define __NR_eventfd 306
|
|
|
-+#define __NR_recvmmsg 307
|
|
|
-+#define __NR_setns 308
|
|
|
-+#define __NR_signalfd4 309
|
|
|
-+#define __NR_dup3 310
|
|
|
-+#define __NR_pipe2 311
|
|
|
-+#define __NR_timerfd_create 312
|
|
|
-+#define __NR_timerfd_settime 313
|
|
|
-+#define __NR_timerfd_gettime 314
|
|
|
-+#define __NR_available315 315
|
|
|
-+#define __NR_eventfd2 316
|
|
|
-+#define __NR_preadv 317
|
|
|
-+#define __NR_pwritev 318
|
|
|
-+#define __NR_available319 319
|
|
|
-+#define __NR_fanotify_init 320
|
|
|
-+#define __NR_fanotify_mark 321
|
|
|
-+#define __NR_process_vm_readv 322
|
|
|
-+#define __NR_process_vm_writev 323
|
|
|
-+#define __NR_name_to_handle_at 324
|
|
|
-+#define __NR_open_by_handle_at 325
|
|
|
-+#define __NR_sync_file_range2 326
|
|
|
-+#define __NR_perf_event_open 327
|
|
|
-+#define __NR_rt_tgsigqueueinfo 328
|
|
|
-+#define __NR_clock_adjtime 329
|
|
|
-+#define __NR_prlimit64 330
|
|
|
-+#define __NR_kcmp 331
|
|
|
-+#define __NR_finit_module 332
|
|
|
-+#define __NR_accept4 333
|
|
|
-+#define __NR_sched_setattr 334
|
|
|
-+#define __NR_sched_getattr 335
|
|
|
-+#define __NR_renameat2 336
|
|
|
-+#define __NR_seccomp 337
|
|
|
-+#define __NR_getrandom 338
|
|
|
-+#define __NR_memfd_create 339
|
|
|
-+#define __NR_bpf 340
|
|
|
-+#define __NR_execveat 341
|
|
|
-+
|
|
|
-+#define SYS_spill 0
|
|
|
-+#define SYS_xtensa 1
|
|
|
-+#define SYS_available4 2
|
|
|
-+#define SYS_available5 3
|
|
|
-+#define SYS_available6 4
|
|
|
-+#define SYS_available7 5
|
|
|
-+#define SYS_available8 6
|
|
|
-+#define SYS_available9 7
|
|
|
-+#define SYS_open 8
|
|
|
-+#define SYS_close 9
|
|
|
-+#define SYS_dup 10
|
|
|
-+#define SYS_dup2 11
|
|
|
-+#define SYS_read 12
|
|
|
-+#define SYS_write 13
|
|
|
-+#define SYS_select 14
|
|
|
-+#define SYS_lseek 15
|
|
|
-+#define SYS_poll 16
|
|
|
-+#define SYS__llseek 17
|
|
|
-+#define SYS_epoll_wait 18
|
|
|
-+#define SYS_epoll_ctl 19
|
|
|
-+#define SYS_epoll_create 20
|
|
|
-+#define SYS_creat 21
|
|
|
-+#define SYS_truncate 22
|
|
|
-+#define SYS_ftruncate 23
|
|
|
-+#define SYS_readv 24
|
|
|
-+#define SYS_writev 25
|
|
|
-+#define SYS_fsync 26
|
|
|
-+#define SYS_fdatasync 27
|
|
|
-+#define SYS_truncate64 28
|
|
|
-+#define SYS_ftruncate64 29
|
|
|
-+#define SYS_pread64 30
|
|
|
-+#define SYS_pwrite64 31
|
|
|
-+#define SYS_link 32
|
|
|
-+#define SYS_rename 33
|
|
|
-+#define SYS_symlink 34
|
|
|
-+#define SYS_readlink 35
|
|
|
-+#define SYS_mknod 36
|
|
|
-+#define SYS_pipe 37
|
|
|
-+#define SYS_unlink 38
|
|
|
-+#define SYS_rmdir 39
|
|
|
-+#define SYS_mkdir 40
|
|
|
-+#define SYS_chdir 41
|
|
|
-+#define SYS_fchdir 42
|
|
|
-+#define SYS_getcwd 43
|
|
|
-+#define SYS_chmod 44
|
|
|
-+#define SYS_chown 45
|
|
|
-+#define SYS_stat 46
|
|
|
-+#define SYS_stat64 47
|
|
|
-+#define SYS_lchown 48
|
|
|
-+#define SYS_lstat 49
|
|
|
-+#define SYS_lstat64 50
|
|
|
-+#define SYS_available51 51
|
|
|
-+#define SYS_fchmod 52
|
|
|
-+#define SYS_fchown 53
|
|
|
-+#define SYS_fstat 54
|
|
|
-+#define SYS_fstat64 55
|
|
|
-+#define SYS_flock 56
|
|
|
-+#define SYS_access 57
|
|
|
-+#define SYS_umask 58
|
|
|
-+#define SYS_getdents 59
|
|
|
-+#define SYS_getdents64 60
|
|
|
-+#define SYS_fcntl64 61
|
|
|
-+#define SYS_fallocate 62
|
|
|
-+#define SYS_fadvise64_64 63
|
|
|
-+#define SYS_utime 64 /* glibc 2.3.3 ?? */
|
|
|
-+#define SYS_utimes 65
|
|
|
-+#define SYS_ioctl 66
|
|
|
-+#define SYS_fcntl 67
|
|
|
-+#define SYS_setxattr 68
|
|
|
-+#define SYS_getxattr 69
|
|
|
-+#define SYS_listxattr 70
|
|
|
-+#define SYS_removexattr 71
|
|
|
-+#define SYS_lsetxattr 72
|
|
|
-+#define SYS_lgetxattr 73
|
|
|
-+#define SYS_llistxattr 74
|
|
|
-+#define SYS_lremovexattr 75
|
|
|
-+#define SYS_fsetxattr 76
|
|
|
-+#define SYS_fgetxattr 77
|
|
|
-+#define SYS_flistxattr 78
|
|
|
-+#define SYS_fremovexattr 79
|
|
|
-+#define SYS_mmap2 80
|
|
|
-+#define SYS_munmap 81
|
|
|
-+#define SYS_mprotect 82
|
|
|
-+#define SYS_brk 83
|
|
|
-+#define SYS_mlock 84
|
|
|
-+#define SYS_munlock 85
|
|
|
-+#define SYS_mlockall 86
|
|
|
-+#define SYS_munlockall 87
|
|
|
-+#define SYS_mremap 88
|
|
|
-+#define SYS_msync 89
|
|
|
-+#define SYS_mincore 90
|
|
|
-+#define SYS_madvise 91
|
|
|
-+#define SYS_shmget 92
|
|
|
-+#define SYS_shmat 93
|
|
|
-+#define SYS_shmctl 94
|
|
|
-+#define SYS_shmdt 95
|
|
|
-+#define SYS_socket 96
|
|
|
-+#define SYS_setsockopt 97
|
|
|
-+#define SYS_getsockopt 98
|
|
|
-+#define SYS_shutdown 99
|
|
|
-+#define SYS_bind 100
|
|
|
-+#define SYS_connect 101
|
|
|
-+#define SYS_listen 102
|
|
|
-+#define SYS_accept 103
|
|
|
-+#define SYS_getsockname 104
|
|
|
-+#define SYS_getpeername 105
|
|
|
-+#define SYS_sendmsg 106
|
|
|
-+#define SYS_recvmsg 107
|
|
|
-+#define SYS_send 108
|
|
|
-+#define SYS_recv 109
|
|
|
-+#define SYS_sendto 110
|
|
|
-+#define SYS_recvfrom 111
|
|
|
-+#define SYS_socketpair 112
|
|
|
-+#define SYS_sendfile 113
|
|
|
-+#define SYS_sendfile64 114
|
|
|
-+#define SYS_sendmmsg 115
|
|
|
-+#define SYS_clone 116
|
|
|
-+#define SYS_execve 117
|
|
|
-+#define SYS_exit 118
|
|
|
-+#define SYS_exit_group 119
|
|
|
-+#define SYS_getpid 120
|
|
|
-+#define SYS_wait4 121
|
|
|
-+#define SYS_waitid 122
|
|
|
-+#define SYS_kill 123
|
|
|
-+#define SYS_tkill 124
|
|
|
-+#define SYS_tgkill 125
|
|
|
-+#define SYS_set_tid_address 126
|
|
|
-+#define SYS_gettid 127
|
|
|
-+#define SYS_setsid 128
|
|
|
-+#define SYS_getsid 129
|
|
|
-+#define SYS_prctl 130
|
|
|
-+#define SYS_personality 131
|
|
|
-+#define SYS_getpriority 132
|
|
|
-+#define SYS_setpriority 133
|
|
|
-+#define SYS_setitimer 134
|
|
|
-+#define SYS_getitimer 135
|
|
|
-+#define SYS_setuid 136
|
|
|
-+#define SYS_getuid 137
|
|
|
-+#define SYS_setgid 138
|
|
|
-+#define SYS_getgid 139
|
|
|
-+#define SYS_geteuid 140
|
|
|
-+#define SYS_getegid 141
|
|
|
-+#define SYS_setreuid 142
|
|
|
-+#define SYS_setregid 143
|
|
|
-+#define SYS_setresuid 144
|
|
|
-+#define SYS_getresuid 145
|
|
|
-+#define SYS_setresgid 146
|
|
|
-+#define SYS_getresgid 147
|
|
|
-+#define SYS_setpgid 148
|
|
|
-+#define SYS_getpgid 149
|
|
|
-+#define SYS_getppid 150
|
|
|
-+#define SYS_getpgrp 151
|
|
|
-+#define SYS_reserved152 152 /* set_thread_area */
|
|
|
-+#define SYS_reserved153 153 /* get_thread_area */
|
|
|
-+#define SYS_times 154
|
|
|
-+#define SYS_acct 155
|
|
|
-+#define SYS_sched_setaffinity 156
|
|
|
-+#define SYS_sched_getaffinity 157
|
|
|
-+#define SYS_capget 158
|
|
|
-+#define SYS_capset 159
|
|
|
-+#define SYS_ptrace 160
|
|
|
-+#define SYS_semtimedop 161
|
|
|
-+#define SYS_semget 162
|
|
|
-+#define SYS_semop 163
|
|
|
-+#define SYS_semctl 164
|
|
|
-+#define SYS_available165 165
|
|
|
-+#define SYS_msgget 166
|
|
|
-+#define SYS_msgsnd 167
|
|
|
-+#define SYS_msgrcv 168
|
|
|
-+#define SYS_msgctl 169
|
|
|
-+#define SYS_available170 170
|
|
|
-+#define SYS_umount2 171
|
|
|
-+#define SYS_mount 172
|
|
|
-+#define SYS_swapon 173
|
|
|
-+#define SYS_chroot 174
|
|
|
-+#define SYS_pivot_root 175
|
|
|
-+#define SYS_umount 176
|
|
|
-+#define SYS_swapoff 177
|
|
|
-+#define SYS_sync 178
|
|
|
-+#define SYS_syncfs 179
|
|
|
-+#define SYS_setfsuid 180
|
|
|
-+#define SYS_setfsgid 181
|
|
|
-+#define SYS_sysfs 182
|
|
|
-+#define SYS_ustat 183
|
|
|
-+#define SYS_statfs 184
|
|
|
-+#define SYS_fstatfs 185
|
|
|
-+#define SYS_statfs64 186
|
|
|
-+#define SYS_fstatfs64 187
|
|
|
-+#define SYS_setrlimit 188
|
|
|
-+#define SYS_getrlimit 189
|
|
|
-+#define SYS_getrusage 190
|
|
|
-+#define SYS_futex 191
|
|
|
-+#define SYS_gettimeofday 192
|
|
|
-+#define SYS_settimeofday 193
|
|
|
-+#define SYS_adjtimex 194
|
|
|
-+#define SYS_nanosleep 195
|
|
|
-+#define SYS_getgroups 196
|
|
|
-+#define SYS_setgroups 197
|
|
|
-+#define SYS_sethostname 198
|
|
|
-+#define SYS_setdomainname 199
|
|
|
-+#define SYS_syslog 200
|
|
|
-+#define SYS_vhangup 201
|
|
|
-+#define SYS_uselib 202
|
|
|
-+#define SYS_reboot 203
|
|
|
-+#define SYS_quotactl 204
|
|
|
-+#define SYS_nfsservctl 205
|
|
|
-+#define SYS__sysctl 206
|
|
|
-+#define SYS_bdflush 207
|
|
|
-+#define SYS_uname 208
|
|
|
-+#define SYS_sysinfo 209
|
|
|
-+#define SYS_init_module 210
|
|
|
-+#define SYS_delete_module 211
|
|
|
-+#define SYS_sched_setparam 212
|
|
|
-+#define SYS_sched_getparam 213
|
|
|
-+#define SYS_sched_setscheduler 214
|
|
|
-+#define SYS_sched_getscheduler 215
|
|
|
-+#define SYS_sched_get_priority_max 216
|
|
|
-+#define SYS_sched_get_priority_min 217
|
|
|
-+#define SYS_sched_rr_get_interval 218
|
|
|
-+#define SYS_sched_yield 219
|
|
|
-+#define SYS_available222 222
|
|
|
-+#define SYS_restart_syscall 223
|
|
|
-+#define SYS_sigaltstack 224
|
|
|
-+#define SYS_rt_sigreturn 225
|
|
|
-+#define SYS_rt_sigaction 226
|
|
|
-+#define SYS_rt_sigprocmask 227
|
|
|
-+#define SYS_rt_sigpending 228
|
|
|
-+#define SYS_rt_sigtimedwait 229
|
|
|
-+#define SYS_rt_sigqueueinfo 230
|
|
|
-+#define SYS_rt_sigsuspend 231
|
|
|
-+#define SYS_mq_open 232
|
|
|
-+#define SYS_mq_unlink 233
|
|
|
-+#define SYS_mq_timedsend 234
|
|
|
-+#define SYS_mq_timedreceive 235
|
|
|
-+#define SYS_mq_notify 236
|
|
|
-+#define SYS_mq_getsetattr 237
|
|
|
-+#define SYS_available238 238
|
|
|
-+#define SYS_io_setup 239
|
|
|
-+#define SYS_io_destroy 240
|
|
|
-+#define SYS_io_submit 241
|
|
|
-+#define SYS_io_getevents 242
|
|
|
-+#define SYS_io_cancel 243
|
|
|
-+#define SYS_clock_settime 244
|
|
|
-+#define SYS_clock_gettime 245
|
|
|
-+#define SYS_clock_getres 246
|
|
|
-+#define SYS_clock_nanosleep 247
|
|
|
-+#define SYS_timer_create 248
|
|
|
-+#define SYS_timer_delete 249
|
|
|
-+#define SYS_timer_settime 250
|
|
|
-+#define SYS_timer_gettime 251
|
|
|
-+#define SYS_timer_getoverrun 252
|
|
|
-+#define SYS_reserved253 253
|
|
|
-+#define SYS_lookup_dcookie 254
|
|
|
-+#define SYS_available255 255
|
|
|
-+#define SYS_add_key 256
|
|
|
-+#define SYS_request_key 257
|
|
|
-+#define SYS_keyctl 258
|
|
|
-+#define SYS_available259 259
|
|
|
-+#define SYS_readahead 260
|
|
|
-+#define SYS_remap_file_pages 261
|
|
|
-+#define SYS_migrate_pages 262
|
|
|
-+#define SYS_mbind 263
|
|
|
-+#define SYS_get_mempolicy 264
|
|
|
-+#define SYS_set_mempolicy 265
|
|
|
-+#define SYS_unshare 266
|
|
|
-+#define SYS_move_pages 267
|
|
|
-+#define SYS_splice 268
|
|
|
-+#define SYS_tee 269
|
|
|
-+#define SYS_vmsplice 270
|
|
|
-+#define SYS_available271 271
|
|
|
-+#define SYS_pselect6 272
|
|
|
-+#define SYS_ppoll 273
|
|
|
-+#define SYS_epoll_pwait 274
|
|
|
-+#define SYS_epoll_create1 275
|
|
|
-+#define SYS_inotify_init 276
|
|
|
-+#define SYS_inotify_add_watch 277
|
|
|
-+#define SYS_inotify_rm_watch 278
|
|
|
-+#define SYS_inotify_init1 279
|
|
|
-+#define SYS_getcpu 280
|
|
|
-+#define SYS_kexec_load 281
|
|
|
-+#define SYS_ioprio_set 282
|
|
|
-+#define SYS_ioprio_get 283
|
|
|
-+#define SYS_set_robust_list 284
|
|
|
-+#define SYS_get_robust_list 285
|
|
|
-+#define SYS_available286 286
|
|
|
-+#define SYS_available287 287
|
|
|
-+#define SYS_openat 288
|
|
|
-+#define SYS_mkdirat 289
|
|
|
-+#define SYS_mknodat 290
|
|
|
-+#define SYS_unlinkat 291
|
|
|
-+#define SYS_renameat 292
|
|
|
-+#define SYS_linkat 293
|
|
|
-+#define SYS_symlinkat 294
|
|
|
-+#define SYS_readlinkat 295
|
|
|
-+#define SYS_utimensat 296
|
|
|
-+#define SYS_fchownat 297
|
|
|
-+#define SYS_futimesat 298
|
|
|
-+#define SYS_fstatat64 299
|
|
|
-+#define SYS_fchmodat 300
|
|
|
-+#define SYS_faccessat 301
|
|
|
-+#define SYS_available302 302
|
|
|
-+#define SYS_available303 303
|
|
|
-+#define SYS_signalfd 304
|
|
|
-+#define SYS_eventfd 306
|
|
|
-+#define SYS_recvmmsg 307
|
|
|
-+#define SYS_setns 308
|
|
|
-+#define SYS_signalfd4 309
|
|
|
-+#define SYS_dup3 310
|
|
|
-+#define SYS_pipe2 311
|
|
|
-+#define SYS_timerfd_create 312
|
|
|
-+#define SYS_timerfd_settime 313
|
|
|
-+#define SYS_timerfd_gettime 314
|
|
|
-+#define SYS_available315 315
|
|
|
-+#define SYS_eventfd2 316
|
|
|
-+#define SYS_preadv 317
|
|
|
-+#define SYS_pwritev 318
|
|
|
-+#define SYS_available319 319
|
|
|
-+#define SYS_fanotify_init 320
|
|
|
-+#define SYS_fanotify_mark 321
|
|
|
-+#define SYS_process_vm_readv 322
|
|
|
-+#define SYS_process_vm_writev 323
|
|
|
-+#define SYS_name_to_handle_at 324
|
|
|
-+#define SYS_open_by_handle_at 325
|
|
|
-+#define SYS_sync_file_range2 326
|
|
|
-+#define SYS_perf_event_open 327
|
|
|
-+#define SYS_rt_tgsigqueueinfo 328
|
|
|
-+#define SYS_clock_adjtime 329
|
|
|
-+#define SYS_prlimit64 330
|
|
|
-+#define SYS_kcmp 331
|
|
|
-+#define SYS_finit_module 332
|
|
|
-+#define SYS_accept4 333
|
|
|
-+#define SYS_sched_setattr 334
|
|
|
-+#define SYS_sched_getattr 335
|
|
|
-+#define SYS_renameat2 336
|
|
|
-+#define SYS_seccomp 337
|
|
|
-+#define SYS_getrandom 338
|
|
|
-+#define SYS_memfd_create 339
|
|
|
-+#define SYS_bpf 340
|
|
|
-+#define SYS_execveat 341
|
|
|
-diff --git a/arch/xtensa/bits/termios.h b/arch/xtensa/bits/termios.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..f1b32e0
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/termios.h
|
|
|
-@@ -0,0 +1,168 @@
|
|
|
-+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 XTABS 0014000
|
|
|
-+#define BSDLY 0020000
|
|
|
-+#define BS0 0000000
|
|
|
-+#define BS1 0020000
|
|
|
-+#define VTDLY 0040000
|
|
|
-+#define VT0 0000000
|
|
|
-+#define VT1 0040000
|
|
|
-+#define FFDLY 0100000
|
|
|
-+#define FF0 0000000
|
|
|
-+#define FF1 0100000
|
|
|
-+
|
|
|
-+#define B0 0000000
|
|
|
-+#define B50 0000001
|
|
|
-+#define B75 0000002
|
|
|
-+#define B110 0000003
|
|
|
-+#define B134 0000004
|
|
|
-+#define B150 0000005
|
|
|
-+#define B200 0000006
|
|
|
-+#define B300 0000007
|
|
|
-+#define B600 0000010
|
|
|
-+#define B1200 0000011
|
|
|
-+#define B1800 0000012
|
|
|
-+#define B2400 0000013
|
|
|
-+#define B4800 0000014
|
|
|
-+#define B9600 0000015
|
|
|
-+#define B19200 0000016
|
|
|
-+#define B38400 0000017
|
|
|
-+#define EXTA 0000016
|
|
|
-+#define EXTB 0000017
|
|
|
-+
|
|
|
-+#define BOTHER 0010000
|
|
|
-+#define B57600 0010001
|
|
|
-+#define B115200 0010002
|
|
|
-+#define B230400 0010003
|
|
|
-+#define B460800 0010004
|
|
|
-+#define B500000 0010005
|
|
|
-+#define B576000 0010006
|
|
|
-+#define B921600 0010007
|
|
|
-+#define B1000000 0010010
|
|
|
-+#define B1152000 0010011
|
|
|
-+#define B1500000 0010012
|
|
|
-+#define B2000000 0010013
|
|
|
-+#define B2500000 0010014
|
|
|
-+#define B3000000 0010015
|
|
|
-+#define B3500000 0010016
|
|
|
-+#define B4000000 0010017
|
|
|
-+
|
|
|
-+#define CBAUD 0010017
|
|
|
-+
|
|
|
-+#define CSIZE 0000060
|
|
|
-+#define CS5 0000000
|
|
|
-+#define CS6 0000020
|
|
|
-+#define CS7 0000040
|
|
|
-+#define CS8 0000060
|
|
|
-+#define CSTOPB 0000100
|
|
|
-+#define CREAD 0000200
|
|
|
-+#define PARENB 0000400
|
|
|
-+#define PARODD 0001000
|
|
|
-+#define HUPCL 0002000
|
|
|
-+#define CLOCAL 0004000
|
|
|
-+
|
|
|
-+#define ISIG 0000001
|
|
|
-+#define ICANON 0000002
|
|
|
-+#define XCASE 0000004
|
|
|
-+#define ECHO 0000010
|
|
|
-+#define ECHOE 0000020
|
|
|
-+#define ECHOK 0000040
|
|
|
-+#define ECHONL 0000100
|
|
|
-+#define NOFLSH 0000200
|
|
|
-+#define TOSTOP 0000400
|
|
|
-+#define ECHOCTL 0001000
|
|
|
-+#define ECHOPRT 0002000
|
|
|
-+#define ECHOKE 0004000
|
|
|
-+#define FLUSHO 0010000
|
|
|
-+#define PENDIN 0040000
|
|
|
-+#define IEXTEN 0100000
|
|
|
-+#define EXTPROC 0200000
|
|
|
-+
|
|
|
-+#define TCOOFF 0
|
|
|
-+#define TCOON 1
|
|
|
-+#define TCIOFF 2
|
|
|
-+#define TCION 3
|
|
|
-+
|
|
|
-+#define TCIFLUSH 0
|
|
|
-+#define TCOFLUSH 1
|
|
|
-+#define TCIOFLUSH 2
|
|
|
-+
|
|
|
-+#define TCSANOW 0
|
|
|
-+#define TCSADRAIN 1
|
|
|
-+#define TCSAFLUSH 2
|
|
|
-+
|
|
|
-+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
|
|
-+#define CBAUDEX 0010000
|
|
|
-+#define CIBAUD 002003600000
|
|
|
-+#define IBSHIFT 16
|
|
|
-+#define CMSPAR 010000000000
|
|
|
-+#define CRTSCTS 020000000000
|
|
|
-+#define EXTPROC 0200000
|
|
|
-+#define XTABS 0014000
|
|
|
-+#define TIOCSER_TEMT 1
|
|
|
-+#endif
|
|
|
-diff --git a/arch/xtensa/bits/user.h b/arch/xtensa/bits/user.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..8ac7526
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/user.h
|
|
|
-@@ -0,0 +1,4 @@
|
|
|
-+#define ELF_NGREG 128
|
|
|
-+#define ELF_NFPREG 18
|
|
|
-+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
|
|
|
-+typedef unsigned int elf_fpreg_t, elf_fpregset_t[ELF_NFPREG];
|
|
|
-diff --git a/arch/xtensa/bits/xtensa-config.h b/arch/xtensa/bits/xtensa-config.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..2e60af9
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/bits/xtensa-config.h
|
|
|
-@@ -0,0 +1,46 @@
|
|
|
-+/* Xtensa configuration settings.
|
|
|
-+ Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
|
|
-+ Free Software Foundation, Inc.
|
|
|
-+ Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
|
|
|
-+
|
|
|
-+ The GNU C Library is free software; you can redistribute it and/or
|
|
|
-+ modify it under the terms of the GNU Lesser General Public
|
|
|
-+ License as published by the Free Software Foundation; either
|
|
|
-+ version 2.1 of the License, or (at your option) any later version.
|
|
|
-+
|
|
|
-+ The GNU C Library is distributed in the hope that it will be useful,
|
|
|
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
-+ Lesser General Public License for more details.
|
|
|
-+
|
|
|
-+ You should have received a copy of the GNU Lesser General Public
|
|
|
-+ License along with the GNU C Library; if not, see
|
|
|
-+ <http://www.gnu.org/licenses/>. */
|
|
|
-+
|
|
|
-+#ifndef XTENSA_CONFIG_H
|
|
|
-+#define XTENSA_CONFIG_H
|
|
|
-+
|
|
|
-+/* The macros defined here match those with the same names in the Xtensa
|
|
|
-+ compile-time HAL (Hardware Abstraction Layer). Please refer to the
|
|
|
-+ Xtensa System Software Reference Manual for documentation of these
|
|
|
-+ macros. */
|
|
|
-+
|
|
|
-+/* The following macros reflect the default expectations for Xtensa
|
|
|
-+ processor configurations that can run glibc. If you want to try
|
|
|
-+ building glibc for an Xtensa configuration that is missing these
|
|
|
-+ options, you will at least need to change the values of these
|
|
|
-+ macros. */
|
|
|
-+
|
|
|
-+#undef XCHAL_HAVE_NSA
|
|
|
-+#define XCHAL_HAVE_NSA 1
|
|
|
-+
|
|
|
-+#undef XCHAL_HAVE_LOOPS
|
|
|
-+#define XCHAL_HAVE_LOOPS 1
|
|
|
-+
|
|
|
-+/* Assume the maximum number of AR registers. This currently only affects
|
|
|
-+ the __window_spill function, and it is always safe to flush extra. */
|
|
|
-+
|
|
|
-+#undef XCHAL_NUM_AREGS
|
|
|
-+#define XCHAL_NUM_AREGS 64
|
|
|
-+
|
|
|
-+#endif /* !XTENSA_CONFIG_H */
|
|
|
-diff --git a/arch/xtensa/crt_arch.h b/arch/xtensa/crt_arch.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..dc6ddaa
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/crt_arch.h
|
|
|
-@@ -0,0 +1,26 @@
|
|
|
-+__asm__(
|
|
|
-+".begin no-transform\n"
|
|
|
-+".text \n"
|
|
|
-+".global _" START "\n"
|
|
|
-+".global " START "\n"
|
|
|
-+".type _" START ", @function\n"
|
|
|
-+".type " START ", @function\n"
|
|
|
-+"_" START ":\n"
|
|
|
-+"" START ":\n"
|
|
|
-+" call0 2f\n"
|
|
|
-+"1:\n"
|
|
|
-+".align 4\n"
|
|
|
-+".weak _DYNAMIC\n"
|
|
|
-+".hidden _DYNAMIC\n"
|
|
|
-+" .literal .L0, _DYNAMIC\n"
|
|
|
-+" .literal .L1, 1b\n"
|
|
|
-+"2:\n"
|
|
|
-+" mov a6, a1\n"
|
|
|
-+" l32r a7, .L0\n"
|
|
|
-+" l32r a5, .L1\n"
|
|
|
-+" add a7, a7, a0\n"
|
|
|
-+" sub a7, a7, a5\n"
|
|
|
-+" movi a0, 0\n"
|
|
|
-+" call4 " START "_c\n"
|
|
|
-+".end no-transform\n"
|
|
|
-+);
|
|
|
-diff --git a/arch/xtensa/pthread_arch.h b/arch/xtensa/pthread_arch.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..35c752e
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/pthread_arch.h
|
|
|
-@@ -0,0 +1,11 @@
|
|
|
-+static inline struct pthread *__pthread_self()
|
|
|
-+{
|
|
|
-+ register char *tp;
|
|
|
-+ __asm__ __volatile__ ("rur %0, threadptr" : "=r" (tp));
|
|
|
-+ return (pthread_t)(tp + 8 - sizeof(struct pthread));
|
|
|
-+}
|
|
|
-+
|
|
|
-+#define TLS_ABOVE_TP
|
|
|
-+#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8)
|
|
|
-+
|
|
|
-+#define MC_PC sc_pc
|
|
|
-diff --git a/arch/xtensa/reloc.h b/arch/xtensa/reloc.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..bae93a5
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/reloc.h
|
|
|
-@@ -0,0 +1,21 @@
|
|
|
-+#include <endian.h>
|
|
|
-+
|
|
|
-+#if __BYTE_ORDER == __BIG_ENDIAN
|
|
|
-+#define ENDIAN_SUFFIX "eb"
|
|
|
-+#else
|
|
|
-+#define ENDIAN_SUFFIX ""
|
|
|
-+#endif
|
|
|
-+
|
|
|
-+#define LDSO_ARCH "xtensa" ENDIAN_SUFFIX
|
|
|
-+
|
|
|
-+#define TPOFF_K 8
|
|
|
-+
|
|
|
-+#define REL_PLT R_XTENSA_JMP_SLOT
|
|
|
-+#define REL_RELATIVE R_XTENSA_RELATIVE
|
|
|
-+#define REL_GOT R_XTENSA_GLOB_DAT
|
|
|
-+#define REL_COPY R_XTENSA_32
|
|
|
-+#define REL_TPOFF R_XTENSA_TLS_TPOFF
|
|
|
-+//#define REL_TLSDESC R_XTENSA_TLSDESC_FN
|
|
|
-+
|
|
|
-+#define CRTJMP(pc,sp) __asm__ __volatile__( \
|
|
|
-+ "movsp a1, %1 ; jx %0" : : "a"(pc), "a"(sp) : "memory" )
|
|
|
-diff --git a/arch/xtensa/syscall_arch.h b/arch/xtensa/syscall_arch.h
|
|
|
-new file mode 100644
|
|
|
-index 0000000..380ce17
|
|
|
---- /dev/null
|
|
|
-+++ b/arch/xtensa/syscall_arch.h
|
|
|
-@@ -0,0 +1,102 @@
|
|
|
-+#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) 0, __SYSCALL_LL_E((x))
|
|
|
-+
|
|
|
-+static inline long __syscall0(long n)
|
|
|
-+{
|
|
|
-+ register long a2 __asm__("a2") = n;
|
|
|
-+
|
|
|
-+ __asm__ __volatile__ ("syscall"
|
|
|
-+ : "+&a"(a2)
|
|
|
-+ :
|
|
|
-+ : "memory");
|
|
|
-+ return a2;
|
|
|
-+}
|
|
|
-+
|
|
|
-+static inline long __syscall1(long n, long a)
|
|
|
-+{
|
|
|
-+ register long a2 __asm__("a2") = n;
|
|
|
-+ register long a6 __asm__("a6") = a;
|
|
|
-+
|
|
|
-+ __asm__ __volatile__ ("syscall"
|
|
|
-+ : "+&a"(a2)
|
|
|
-+ : "a"(a6)
|
|
|
-+ : "memory");
|
|
|
-+ return a2;
|
|
|
-+}
|
|
|
-+
|
|
|
-+static inline long __syscall2(long n, long a, long b)
|
|
|
-+{
|
|
|
-+ register long a2 __asm__("a2") = n;
|
|
|
-+ register long a6 __asm__("a6") = a;
|
|
|
-+ register long a3 __asm__("a3") = b;
|
|
|
-+
|
|
|
-+ __asm__ __volatile__ ("syscall"
|
|
|
-+ : "+&a"(a2)
|
|
|
-+ : "a"(a6), "a"(a3)
|
|
|
-+ : "memory");
|
|
|
-+ return a2;
|
|
|
-+}
|
|
|
-+
|
|
|
-+static inline long __syscall3(long n, long a, long b, long c)
|
|
|
-+{
|
|
|
-+ register long a2 __asm__("a2") = n;
|
|
|
-+ register long a6 __asm__("a6") = a;
|
|
|
-+ register long a3 __asm__("a3") = b;
|
|
|
-+ register long a4 __asm__("a4") = c;
|
|
|
-+
|
|
|
-+ __asm__ __volatile__ ("syscall"
|
|
|
-+ : "+&a"(a2)
|
|
|
-+ : "a"(a6), "a"(a3), "a"(a4)
|
|
|
-+ : "memory");
|
|
|
-+ return a2;
|
|
|
-+}
|
|
|
-+
|
|
|
-+static inline long __syscall4(long n, long a, long b, long c, long d)
|
|
|
-+{
|
|
|
-+ register long a2 __asm__("a2") = n;
|
|
|
-+ register long a6 __asm__("a6") = a;
|
|
|
-+ register long a3 __asm__("a3") = b;
|
|
|
-+ register long a4 __asm__("a4") = c;
|
|
|
-+ register long a5 __asm__("a5") = d;
|
|
|
-+
|
|
|
-+ __asm__ __volatile__ ("syscall"
|
|
|
-+ : "+&a"(a2)
|
|
|
-+ : "a"(a6), "a"(a3), "a"(a4), "a"(a5)
|
|
|
-+ : "memory");
|
|
|
-+ return a2;
|
|
|
-+}
|
|
|
-+
|
|
|
-+static inline long __syscall5(long n, long a, long b, long c, long d, long e)
|
|
|
-+{
|
|
|
-+ register long a2 __asm__("a2") = n;
|
|
|
-+ register long a6 __asm__("a6") = a;
|
|
|
-+ register long a3 __asm__("a3") = b;
|
|
|
-+ register long a4 __asm__("a4") = c;
|
|
|
-+ register long a5 __asm__("a5") = d;
|
|
|
-+ register long a8 __asm__("a8") = e;
|
|
|
-+
|
|
|
-+ __asm__ __volatile__ ("syscall"
|
|
|
-+ : "+&a"(a2)
|
|
|
-+ : "a"(a6), "a"(a3), "a"(a4), "a"(a5), "a"(a8)
|
|
|
-+ : "memory");
|
|
|
-+ return a2;
|
|
|
-+}
|
|
|
-+
|
|
|
-+static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
|
|
|
-+{
|
|
|
-+ register long a2 __asm__("a2") = n;
|
|
|
-+ register long a6 __asm__("a6") = a;
|
|
|
-+ register long a3 __asm__("a3") = b;
|
|
|
-+ register long a4 __asm__("a4") = c;
|
|
|
-+ register long a5 __asm__("a5") = d;
|
|
|
-+ register long a8 __asm__("a8") = e;
|
|
|
-+ register long a9 __asm__("a9") = f;
|
|
|
-+
|
|
|
-+ __asm__ __volatile__ ("syscall"
|
|
|
-+ : "+&a"(a2)
|
|
|
-+ : "a"(a6), "a"(a3), "a"(a4), "a"(a5), "a"(a8), "a"(a9)
|
|
|
-+ : "memory");
|
|
|
-+ return a2;
|
|
|
-+}
|
|
|
-diff --git a/configure b/configure
|
|
|
-index 0955ce6..2c56cab 100755
|
|
|
---- a/configure
|
|
|
-+++ b/configure
|
|
|
-@@ -312,6 +312,7 @@ microblaze*) ARCH=microblaze ;;
|
|
|
- or1k*) ARCH=or1k ;;
|
|
|
- powerpc*) ARCH=powerpc ;;
|
|
|
- sh[1-9bel-]*|sh|superh*) ARCH=sh ;;
|
|
|
-+xtensa*) ARCH=xtensa ;;
|
|
|
- unknown) fail "$0: unable to detect target arch; try $0 --target=..." ;;
|
|
|
- *) fail "$0: unknown or unsupported target \"$target\"" ;;
|
|
|
- esac
|
|
|
-diff --git a/crt/xtensa/crti.s b/crt/xtensa/crti.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..6565656
|
|
|
---- /dev/null
|
|
|
-+++ b/crt/xtensa/crti.s
|
|
|
-@@ -0,0 +1,11 @@
|
|
|
-+.section .init
|
|
|
-+.global _init
|
|
|
-+.type _init, @function
|
|
|
-+_init:
|
|
|
-+ entry a1, 32
|
|
|
-+
|
|
|
-+.section .fini
|
|
|
-+.global _fini
|
|
|
-+.type _fini, @function
|
|
|
-+_fini:
|
|
|
-+ entry a1, 32
|
|
|
-diff --git a/crt/xtensa/crtn.s b/crt/xtensa/crtn.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..7e9a014
|
|
|
---- /dev/null
|
|
|
-+++ b/crt/xtensa/crtn.s
|
|
|
-@@ -0,0 +1,5 @@
|
|
|
-+.section .init
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+.section .fini
|
|
|
-+ retw
|
|
|
-diff --git a/include/elf.h b/include/elf.h
|
|
|
-index 8b3cd3e..8168cf1 100644
|
|
|
---- a/include/elf.h
|
|
|
-+++ b/include/elf.h
|
|
|
-@@ -2819,6 +2819,64 @@ typedef Elf32_Addr Elf32_Conflict;
|
|
|
- #define R_OR1K_TLS_DTPOFF 33
|
|
|
- #define R_OR1K_TLS_DTPMOD 34
|
|
|
-
|
|
|
-+
|
|
|
-+#define DT_XTENSA_GOT_LOC_OFF (DT_LOPROC + 0)
|
|
|
-+#define DT_XTENSA_GOT_LOC_SZ (DT_LOPROC + 1)
|
|
|
-+#define DT_XTENSA_NUM 2
|
|
|
-+
|
|
|
-+#define R_XTENSA_NONE 0
|
|
|
-+#define R_XTENSA_32 1
|
|
|
-+#define R_XTENSA_RTLD 2
|
|
|
-+#define R_XTENSA_GLOB_DAT 3
|
|
|
-+#define R_XTENSA_JMP_SLOT 4
|
|
|
-+#define R_XTENSA_RELATIVE 5
|
|
|
-+#define R_XTENSA_PLT 6
|
|
|
-+#define R_XTENSA_OP0 8
|
|
|
-+#define R_XTENSA_OP1 9
|
|
|
-+#define R_XTENSA_OP2 10
|
|
|
-+#define R_XTENSA_ASM_EXPAND 11
|
|
|
-+#define R_XTENSA_ASM_SIMPLIFY 12
|
|
|
-+#define R_XTENSA_GNU_VTINHERIT 15
|
|
|
-+#define R_XTENSA_GNU_VTENTRY 16
|
|
|
-+#define R_XTENSA_DIFF8 17
|
|
|
-+#define R_XTENSA_DIFF16 18
|
|
|
-+#define R_XTENSA_DIFF32 19
|
|
|
-+#define R_XTENSA_SLOT0_OP 20
|
|
|
-+#define R_XTENSA_SLOT1_OP 21
|
|
|
-+#define R_XTENSA_SLOT2_OP 22
|
|
|
-+#define R_XTENSA_SLOT3_OP 23
|
|
|
-+#define R_XTENSA_SLOT4_OP 24
|
|
|
-+#define R_XTENSA_SLOT5_OP 25
|
|
|
-+#define R_XTENSA_SLOT6_OP 26
|
|
|
-+#define R_XTENSA_SLOT7_OP 27
|
|
|
-+#define R_XTENSA_SLOT8_OP 28
|
|
|
-+#define R_XTENSA_SLOT9_OP 29
|
|
|
-+#define R_XTENSA_SLOT10_OP 30
|
|
|
-+#define R_XTENSA_SLOT11_OP 31
|
|
|
-+#define R_XTENSA_SLOT12_OP 32
|
|
|
-+#define R_XTENSA_SLOT13_OP 33
|
|
|
-+#define R_XTENSA_SLOT14_OP 34
|
|
|
-+#define R_XTENSA_SLOT0_ALT 35
|
|
|
-+#define R_XTENSA_SLOT1_ALT 36
|
|
|
-+#define R_XTENSA_SLOT2_ALT 37
|
|
|
-+#define R_XTENSA_SLOT3_ALT 38
|
|
|
-+#define R_XTENSA_SLOT4_ALT 39
|
|
|
-+#define R_XTENSA_SLOT5_ALT 40
|
|
|
-+#define R_XTENSA_SLOT6_ALT 41
|
|
|
-+#define R_XTENSA_SLOT7_ALT 42
|
|
|
-+#define R_XTENSA_SLOT8_ALT 43
|
|
|
-+#define R_XTENSA_SLOT9_ALT 44
|
|
|
-+#define R_XTENSA_SLOT10_ALT 45
|
|
|
-+#define R_XTENSA_SLOT11_ALT 46
|
|
|
-+#define R_XTENSA_SLOT12_ALT 47
|
|
|
-+#define R_XTENSA_SLOT13_ALT 48
|
|
|
-+#define R_XTENSA_SLOT14_ALT 49
|
|
|
-+#define R_XTENSA_TLSDESC_FN 50
|
|
|
-+#define R_XTENSA_TLSDESC_ARG 51
|
|
|
-+#define R_XTENSA_TLS_TPOFF 53
|
|
|
-+
|
|
|
-+#define R_XTENSA_NUM 54
|
|
|
-+
|
|
|
- #ifdef __cplusplus
|
|
|
- }
|
|
|
- #endif
|
|
|
-diff --git a/ldso/dlstart.c b/ldso/dlstart.c
|
|
|
-index 4dbe178..0249937 100644
|
|
|
---- a/ldso/dlstart.c
|
|
|
-+++ b/ldso/dlstart.c
|
|
|
-@@ -22,6 +22,7 @@ void _dlstart_c(size_t *sp, size_t *dynv)
|
|
|
- {
|
|
|
- size_t i, aux[AUX_CNT], dyn[DYN_CNT];
|
|
|
- size_t *rel, rel_size, base;
|
|
|
-+ unsigned long addr = 1;
|
|
|
-
|
|
|
- int argc = *sp;
|
|
|
- char **argv = (void *)(sp+1);
|
|
|
-@@ -138,7 +139,17 @@ void _dlstart_c(size_t *sp, size_t *dynv)
|
|
|
- for (; rel_size; rel+=3, rel_size-=3*sizeof(size_t)) {
|
|
|
- if (!IS_RELATIVE(rel[1], 0)) continue;
|
|
|
- size_t *rel_addr = (void *)(base + rel[0]);
|
|
|
-- *rel_addr = base + rel[2];
|
|
|
-+ if (((unsigned long)rel_addr & -4096) != addr) {
|
|
|
-+ addr = (unsigned long)rel_addr & -4096;
|
|
|
-+ __asm__ __volatile__ ("movi a2, 82\n\t"
|
|
|
-+ "mov a6, %0\n\t"
|
|
|
-+ "mov a3, %1\n\t"
|
|
|
-+ "mov a4, %2\n\t"
|
|
|
-+ "syscall"
|
|
|
-+ :: "a"(addr), "a"(4096), "a"(7)
|
|
|
-+ : "a2", "a3", "a4", "a6", "memory");
|
|
|
-+ }
|
|
|
-+ *rel_addr += base + rel[2];
|
|
|
- }
|
|
|
- #endif
|
|
|
-
|
|
|
-diff --git a/ldso/dynlink.c b/ldso/dynlink.c
|
|
|
-index 87f3b7f..1927097 100644
|
|
|
---- a/ldso/dynlink.c
|
|
|
-+++ b/ldso/dynlink.c
|
|
|
-@@ -314,6 +314,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
|
|
|
- size_t tls_val;
|
|
|
- size_t addend;
|
|
|
- int skip_relative = 0, reuse_addends = 0, save_slot = 0;
|
|
|
-+ unsigned long addr = 1;
|
|
|
-
|
|
|
- if (dso == &ldso) {
|
|
|
- /* Only ldso's REL table needs addend saving/reuse. */
|
|
|
-@@ -328,6 +329,10 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
|
|
|
- if (type == REL_NONE) continue;
|
|
|
- sym_index = R_SYM(rel[1]);
|
|
|
- reloc_addr = laddr(dso, rel[0]);
|
|
|
-+ if (((unsigned long)reloc_addr & -4096) != addr) {
|
|
|
-+ addr = (unsigned long)reloc_addr & -4096;
|
|
|
-+ mprotect((void *)addr, 4096, 7);
|
|
|
-+ }
|
|
|
- if (sym_index) {
|
|
|
- sym = syms + sym_index;
|
|
|
- name = strings + sym->st_name;
|
|
|
-@@ -377,7 +382,7 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
|
|
|
- *reloc_addr = sym_val + addend;
|
|
|
- break;
|
|
|
- case REL_RELATIVE:
|
|
|
-- *reloc_addr = (size_t)base + addend;
|
|
|
-+ *reloc_addr += (size_t)base + addend;
|
|
|
- break;
|
|
|
- case REL_SYM_OR_REL:
|
|
|
- if (sym) *reloc_addr = sym_val + addend;
|
|
|
-@@ -444,6 +449,40 @@ static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stri
|
|
|
- #endif
|
|
|
- }
|
|
|
- break;
|
|
|
-+ case R_XTENSA_RTLD:
|
|
|
-+ break;
|
|
|
-+ case R_XTENSA_TLSDESC_FN:
|
|
|
-+ if (runtime && def.dso->tls_id >= static_tls_cnt) {
|
|
|
-+ reloc_addr[0] = (size_t)__tlsdesc_dynamic;
|
|
|
-+ } else {
|
|
|
-+ reloc_addr[0] = (size_t)__tlsdesc_static;
|
|
|
-+ }
|
|
|
-+ break;
|
|
|
-+ case R_XTENSA_TLSDESC_ARG:
|
|
|
-+ if (stride<3) addend = reloc_addr[1];
|
|
|
-+ if (runtime && def.dso->tls_id >= static_tls_cnt) {
|
|
|
-+ struct td_index *new = malloc(sizeof *new);
|
|
|
-+ if (!new) {
|
|
|
-+ error(
|
|
|
-+ "Error relocating %s: cannot allocate TLSDESC for %s",
|
|
|
-+ dso->name, sym ? name : "(local)" );
|
|
|
-+ longjmp(*rtld_fail, 1);
|
|
|
-+ }
|
|
|
-+ new->next = dso->td_index;
|
|
|
-+ dso->td_index = new;
|
|
|
-+ new->args[0] = def.dso->tls_id;
|
|
|
-+ new->args[1] = tls_val + addend;
|
|
|
-+ reloc_addr[0] = (size_t)new;
|
|
|
-+ } else {
|
|
|
-+#ifdef TLS_ABOVE_TP
|
|
|
-+ reloc_addr[0] = tls_val + def.dso->tls.offset
|
|
|
-+ + TPOFF_K + addend;
|
|
|
-+#else
|
|
|
-+ reloc_addr[0] = tls_val - def.dso->tls.offset
|
|
|
-+ + addend;
|
|
|
-+#endif
|
|
|
-+ }
|
|
|
-+ break;
|
|
|
- default:
|
|
|
- error("Error relocating %s: unsupported relocation type %d",
|
|
|
- dso->name, type);
|
|
|
-diff --git a/src/internal/xtensa/syscall.s b/src/internal/xtensa/syscall.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..6dc584b
|
|
|
---- /dev/null
|
|
|
-+++ b/src/internal/xtensa/syscall.s
|
|
|
-@@ -0,0 +1,15 @@
|
|
|
-+.global __syscall
|
|
|
-+.hidden __syscall
|
|
|
-+.type __syscall,@function
|
|
|
-+.align 4
|
|
|
-+__syscall:
|
|
|
-+ entry a1, 16
|
|
|
-+ mov a8, a3
|
|
|
-+ mov a3, a4
|
|
|
-+ mov a4, a5
|
|
|
-+ mov a5, a6
|
|
|
-+ mov a6, a8
|
|
|
-+ mov a8, a7
|
|
|
-+ l32i a9, a1, 16
|
|
|
-+ syscall
|
|
|
-+ retw
|
|
|
-diff --git a/src/ldso/xtensa/tlsdesc.s b/src/ldso/xtensa/tlsdesc.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..5fa846d
|
|
|
---- /dev/null
|
|
|
-+++ b/src/ldso/xtensa/tlsdesc.s
|
|
|
-@@ -0,0 +1,22 @@
|
|
|
-+.global __tlsdesc_static
|
|
|
-+.hidden __tlsdesc_static
|
|
|
-+.type __tlsdesc_static,@function
|
|
|
-+.align 4
|
|
|
-+__tlsdesc_static:
|
|
|
-+ entry a1, 16
|
|
|
-+ rur a3, threadptr
|
|
|
-+ add a2, a2, a3
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+.hidden __tls_get_new
|
|
|
-+
|
|
|
-+.global __tlsdesc_dynamic
|
|
|
-+.hidden __tlsdesc_dynamic
|
|
|
-+.type __tlsdesc_dynamic,@function
|
|
|
-+.align 4
|
|
|
-+__tlsdesc_dynamic:
|
|
|
-+ entry a1, 16
|
|
|
-+ mov a6, a2
|
|
|
-+ call4 __tls_get_addr
|
|
|
-+ mov a2, a6
|
|
|
-+ retw
|
|
|
-diff --git a/src/setjmp/xtensa/longjmp.s b/src/setjmp/xtensa/longjmp.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..0b49188
|
|
|
---- /dev/null
|
|
|
-+++ b/src/setjmp/xtensa/longjmp.s
|
|
|
-@@ -0,0 +1,73 @@
|
|
|
-+.global _longjmp
|
|
|
-+.global longjmp
|
|
|
-+.type _longjmp,%function
|
|
|
-+.type longjmp,%function
|
|
|
-+.align 4
|
|
|
-+_longjmp:
|
|
|
-+longjmp:
|
|
|
-+ entry a1, 16
|
|
|
-+
|
|
|
-+ /* Invalidate all but the current register window. */
|
|
|
-+ call4 __window_spill
|
|
|
-+
|
|
|
-+ l32i a0, a2, 64
|
|
|
-+ addi a7, a1, -16
|
|
|
-+ l32i a4, a2, 0
|
|
|
-+ l32i a5, a2, 4
|
|
|
-+ s32i a4, a7, 0
|
|
|
-+ s32i a5, a7, 4
|
|
|
-+ l32i a4, a2, 8
|
|
|
-+ l32i a5, a2, 12
|
|
|
-+ s32i a4, a7, 8
|
|
|
-+ s32i a5, a7, 12
|
|
|
-+
|
|
|
-+ /* Copy the remaining 0-8 saved registers. */
|
|
|
-+ extui a7, a0, 30, 2
|
|
|
-+ blti a7, 2, 2f
|
|
|
-+ l32i a8, a2, 52 /* a8: SP of 'caller-1' */
|
|
|
-+ slli a4, a7, 4
|
|
|
-+ sub a6, a8, a4
|
|
|
-+ addi a5, a2, 16
|
|
|
-+ addi a8, a8, -16 /* a8: end of overflow area */
|
|
|
-+1:
|
|
|
-+ l32i a7, a5, 0
|
|
|
-+ l32i a4, a5, 4
|
|
|
-+ s32i a7, a6, 0
|
|
|
-+ s32i a4, a6, 4
|
|
|
-+ l32i a7, a5, 8
|
|
|
-+ l32i a4, a5, 12
|
|
|
-+ s32i a7, a6, 8
|
|
|
-+ s32i a4, a6, 12
|
|
|
-+ addi a5, a5, 16
|
|
|
-+ addi a6, a6, 16
|
|
|
-+ bltu a6, a8, 1b
|
|
|
-+2:
|
|
|
-+ /* The 4 words saved from the register save area at the target's
|
|
|
-+ * sp are copied back to the target procedure's save area. The
|
|
|
-+ * only point of this is to prevent a catastrophic failure in
|
|
|
-+ * case the contents were moved by an alloca after calling
|
|
|
-+ * setjmp. This is a bit paranoid but it doesn't cost much.
|
|
|
-+ */
|
|
|
-+
|
|
|
-+ l32i a7, a2, 4 /* load the target stack pointer */
|
|
|
-+ addi a7, a7, -16 /* find the destination save area */
|
|
|
-+ l32i a4, a2, 48
|
|
|
-+ l32i a5, a2, 52
|
|
|
-+ s32i a4, a7, 0
|
|
|
-+ s32i a5, a7, 4
|
|
|
-+ l32i a4, a2, 56
|
|
|
-+ l32i a5, a2, 60
|
|
|
-+ s32i a4, a7, 8
|
|
|
-+ s32i a5, a7, 12
|
|
|
-+
|
|
|
-+ l32i a4, a2, 68
|
|
|
-+ beqz a4, 1f
|
|
|
-+
|
|
|
-+ mov a6, a2
|
|
|
-+ movi a7, 1
|
|
|
-+.hidden __sigsetjmp_tail
|
|
|
-+ call4 __sigsetjmp_tail
|
|
|
-+1:
|
|
|
-+ movi a2, 1
|
|
|
-+ movnez a2, a3, a3
|
|
|
-+ retw
|
|
|
-diff --git a/src/setjmp/xtensa/setjmp.s b/src/setjmp/xtensa/setjmp.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..1366af0
|
|
|
---- /dev/null
|
|
|
-+++ b/src/setjmp/xtensa/setjmp.s
|
|
|
-@@ -0,0 +1,13 @@
|
|
|
-+.global __setjmp
|
|
|
-+.global _setjmp
|
|
|
-+.global setjmp
|
|
|
-+.type __setjmp,@function
|
|
|
-+.type _setjmp,@function
|
|
|
-+.type setjmp,@function
|
|
|
-+.align 4
|
|
|
-+__setjmp:
|
|
|
-+_setjmp:
|
|
|
-+setjmp:
|
|
|
-+ entry a1, 16
|
|
|
-+ movi a3, 0
|
|
|
-+ j ___sigsetjmp
|
|
|
-diff --git a/src/signal/xtensa/restore.s b/src/signal/xtensa/restore.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..a0c5229
|
|
|
---- /dev/null
|
|
|
-+++ b/src/signal/xtensa/restore.s
|
|
|
-@@ -0,0 +1,10 @@
|
|
|
-+.global __restore
|
|
|
-+.global __restore_rt
|
|
|
-+.type __restore,%function
|
|
|
-+.type __restore_rt,%function
|
|
|
-+.space 1
|
|
|
-+.align 4
|
|
|
-+__restore:
|
|
|
-+__restore_rt:
|
|
|
-+ movi a2, 225 # SYS_rt_sigreturn
|
|
|
-+ syscall
|
|
|
-diff --git a/src/signal/xtensa/sigsetjmp.s b/src/signal/xtensa/sigsetjmp.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..825e182
|
|
|
---- /dev/null
|
|
|
-+++ b/src/signal/xtensa/sigsetjmp.s
|
|
|
-@@ -0,0 +1,69 @@
|
|
|
-+.global sigsetjmp
|
|
|
-+.global __sigsetjmp
|
|
|
-+.global ___sigsetjmp
|
|
|
-+.type sigsetjmp,%function
|
|
|
-+.type __sigsetjmp,%function
|
|
|
-+.type ___sigsetjmp,%function
|
|
|
-+.align 4
|
|
|
-+sigsetjmp:
|
|
|
-+__sigsetjmp:
|
|
|
-+ entry a1, 16
|
|
|
-+
|
|
|
-+___sigsetjmp:
|
|
|
-+ call4 __window_spill
|
|
|
-+
|
|
|
-+ /* Copy the caller registers a0 - a3 at (sp - 16) to jmpbuf. */
|
|
|
-+ addi a7, a1, -16
|
|
|
-+ l32i a4, a7, 0
|
|
|
-+ l32i a5, a7, 4
|
|
|
-+ s32i a4, a2, 0
|
|
|
-+ s32i a5, a2, 4
|
|
|
-+ l32i a4, a7, 8
|
|
|
-+ l32i a5, a7, 12
|
|
|
-+ s32i a4, a2, 8
|
|
|
-+ s32i a5, a2, 12
|
|
|
-+
|
|
|
-+ /* Copy the caller registers a4-a8/a12 from the overflow area. */
|
|
|
-+ /* Entry moved the SP by 16 bytes, so SP of caller-1 is at (sp + 4). */
|
|
|
-+ extui a7, a0, 30, 2
|
|
|
-+ blti a7, 2, 2f
|
|
|
-+ l32i a8, a1, 4 /* a8: SP of 'caller-1' */
|
|
|
-+ slli a4, a7, 4
|
|
|
-+ sub a6, a8, a4
|
|
|
-+ addi a5, a2, 16
|
|
|
-+ addi a8, a8, -16 /* a8: end of overflow area */
|
|
|
-+1:
|
|
|
-+ l32i a7, a6, 0
|
|
|
-+ l32i a4, a6, 4
|
|
|
-+ s32i a7, a5, 0
|
|
|
-+ s32i a4, a5, 4
|
|
|
-+ l32i a7, a6, 8
|
|
|
-+ l32i a4, a6, 12
|
|
|
-+ s32i a7, a5, 8
|
|
|
-+ s32i a4, a5, 12
|
|
|
-+ addi a5, a5, 16
|
|
|
-+ addi a6, a6, 16
|
|
|
-+ bltu a6, a8, 1b
|
|
|
-+2:
|
|
|
-+ /* Copy caller-1 registers a0 - a3 (this is assuming entry a1, 16) */
|
|
|
-+ l32i a4, a1, 0
|
|
|
-+ l32i a5, a1, 4
|
|
|
-+ s32i a4, a2, 48
|
|
|
-+ s32i a5, a2, 52
|
|
|
-+ l32i a4, a1, 8
|
|
|
-+ l32i a5, a1, 12
|
|
|
-+ s32i a4, a2, 56
|
|
|
-+ s32i a5, a2, 60
|
|
|
-+
|
|
|
-+ /* Save the return address, including the window size bits. */
|
|
|
-+ s32i a0, a2, 64
|
|
|
-+ s32i a3, a2, 68
|
|
|
-+ beqz a3, 1f
|
|
|
-+
|
|
|
-+ mov a6, a2
|
|
|
-+ movi a7, 0
|
|
|
-+.hidden __sigsetjmp_tail
|
|
|
-+ call4 __sigsetjmp_tail
|
|
|
-+1:
|
|
|
-+ movi a2, 0
|
|
|
-+ retw
|
|
|
-diff --git a/src/signal/xtensa/windowspill.s b/src/signal/xtensa/windowspill.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..7ab7f3d
|
|
|
---- /dev/null
|
|
|
-+++ b/src/signal/xtensa/windowspill.s
|
|
|
-@@ -0,0 +1,78 @@
|
|
|
-+#include <bits/xtensa-config.h>
|
|
|
-+
|
|
|
-+#ifdef __XTENSA_WINDOWED_ABI__
|
|
|
-+.global __window_spill
|
|
|
-+.type __window_spill, @function
|
|
|
-+.align 4
|
|
|
-+__window_spill:
|
|
|
-+ entry a1, 48
|
|
|
-+ bbci.l a0, 31, .L4 /* branch if called with call4 */
|
|
|
-+ bbsi.l a0, 30, .L12 /* branch if called with call12 */
|
|
|
-+
|
|
|
-+ /* Called with call8: touch register NUM_REGS-12 (4/20/52) */
|
|
|
-+.L8:
|
|
|
-+#if XCHAL_NUM_AREGS > 16
|
|
|
-+ call12 1f
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+ .align 4
|
|
|
-+1: _entry a1, 48 /* touch NUM_REGS-24 (x/8/40) */
|
|
|
-+
|
|
|
-+#if XCHAL_NUM_AREGS == 32
|
|
|
-+ mov a8, a0
|
|
|
-+ retw
|
|
|
-+#else
|
|
|
-+ mov a12, a0
|
|
|
-+ _entry a1, 48 /* touch NUM_REGS-36 (x/x/28) */
|
|
|
-+ mov a12, a0
|
|
|
-+ _entry a1, 48 /* touch NUM_REGS-48 (x/x/16) */
|
|
|
-+ mov a12, a0
|
|
|
-+ _entry a1, 16 /* touch NUM_REGS-60 (x/x/4) */
|
|
|
-+#endif
|
|
|
-+#endif
|
|
|
-+ mov a4, a0
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+ /* Called with call4: touch register NUM_REGS-8 (8/24/56) */
|
|
|
-+.L4:
|
|
|
-+#if XCHAL_NUM_AREGS == 16
|
|
|
-+ mov a8, a0
|
|
|
-+#else
|
|
|
-+ call12 1f
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+ .align 4
|
|
|
-+1: _entry a1, 48 /* touch NUM_REGS-20 (x/12/44) */
|
|
|
-+ mov a12, a0
|
|
|
-+#if XCHAL_NUM_AREGS > 32
|
|
|
-+ _entry a1, 48 /* touch NUM_REGS-32 (x/x/32) */
|
|
|
-+ mov a12, a0
|
|
|
-+ _entry a1, 48 /* touch NUM_REGS-44 (x/x/20) */
|
|
|
-+ mov a12, a0
|
|
|
-+ _entry a1, 48 /* touch NUM_REGS-56 (x/x/8) */
|
|
|
-+ mov a8, a0
|
|
|
-+#endif
|
|
|
-+#endif
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+ /* Called with call12: touch register NUM_REGS-16 (x/16/48) */
|
|
|
-+.L12:
|
|
|
-+#if XCHAL_NUM_AREGS > 16
|
|
|
-+ call12 1f
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+ .align 4
|
|
|
-+1: _entry a1, 48 /* touch NUM_REGS-28 (x/4/36) */
|
|
|
-+#if XCHAL_NUM_AREGS == 32
|
|
|
-+ mov a4, a0
|
|
|
-+#else
|
|
|
-+ mov a12, a0
|
|
|
-+ _entry a1, 48 /* touch NUM_REGS-40 (x/x/24) */
|
|
|
-+ mov a12, a0
|
|
|
-+ _entry a1, 48 /* touch NUM_REGS-52 (x/x/12) */
|
|
|
-+ mov a12, a0
|
|
|
-+#endif
|
|
|
-+#endif
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+#endif
|
|
|
-diff --git a/src/thread/xtensa/__set_thread_area.s b/src/thread/xtensa/__set_thread_area.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..4fe97ac
|
|
|
---- /dev/null
|
|
|
-+++ b/src/thread/xtensa/__set_thread_area.s
|
|
|
-@@ -0,0 +1,8 @@
|
|
|
-+.global __set_thread_area
|
|
|
-+.type __set_thread_area,@function
|
|
|
-+.align 4
|
|
|
-+__set_thread_area:
|
|
|
-+ entry a1, 16
|
|
|
-+ wur a2, threadptr
|
|
|
-+ movi a2, 0
|
|
|
-+ retw
|
|
|
-diff --git a/src/thread/xtensa/__unmapself.s b/src/thread/xtensa/__unmapself.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..c5d8f54
|
|
|
---- /dev/null
|
|
|
-+++ b/src/thread/xtensa/__unmapself.s
|
|
|
-@@ -0,0 +1,10 @@
|
|
|
-+.global __unmapself
|
|
|
-+.type __unmapself,%function
|
|
|
-+.align 4
|
|
|
-+__unmapself:
|
|
|
-+ entry a1, 16
|
|
|
-+ mov a6, a2
|
|
|
-+ movi a2, 81 # SYS_munmap
|
|
|
-+ syscall
|
|
|
-+ movi a2, 118 # SYS_exit
|
|
|
-+ syscall
|
|
|
-diff --git a/src/thread/xtensa/clone.s b/src/thread/xtensa/clone.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..c75db81
|
|
|
---- /dev/null
|
|
|
-+++ b/src/thread/xtensa/clone.s
|
|
|
-@@ -0,0 +1,39 @@
|
|
|
-+// __clone(func, stack, flags, arg, ptid, tls, ctid)
|
|
|
-+// a2, a3, a4, a5, a6, a7, [sp]
|
|
|
-+
|
|
|
-+// syscall(SYS_clone, flags, stack, ptid, tls, ctid)
|
|
|
-+// a2, a6, a3, a4, a5, a8
|
|
|
-+
|
|
|
-+.global __clone
|
|
|
-+.type __clone,%function
|
|
|
-+.align 4
|
|
|
-+__clone:
|
|
|
-+ entry a1, 16
|
|
|
-+ // align stack and save func,arg
|
|
|
-+ srli a3, a3, 4
|
|
|
-+ slli a3, a3, 4
|
|
|
-+ addi a3, a3, -16
|
|
|
-+ s32i a2, a3, 0
|
|
|
-+ s32i a5, a3, 4
|
|
|
-+
|
|
|
-+ // syscall
|
|
|
-+ mov a2, a4
|
|
|
-+ mov a4, a6
|
|
|
-+ mov a6, a2
|
|
|
-+ mov a5, a7
|
|
|
-+ l32i a8, a1, 16
|
|
|
-+ movi a2, 116 # SYS_clone
|
|
|
-+ syscall
|
|
|
-+
|
|
|
-+ beqz a2, 1f
|
|
|
-+ // parent
|
|
|
-+ retw
|
|
|
-+
|
|
|
-+ // child
|
|
|
-+1:
|
|
|
-+ movi a0, 0
|
|
|
-+ l32i a4, a1, 0
|
|
|
-+ l32i a6, a1, 4
|
|
|
-+ callx4 a4
|
|
|
-+ movi a2, 118 # SYS_exit
|
|
|
-+ syscall
|
|
|
-diff --git a/src/thread/xtensa/syscall_cp.s b/src/thread/xtensa/syscall_cp.s
|
|
|
-new file mode 100644
|
|
|
-index 0000000..f68df8d
|
|
|
---- /dev/null
|
|
|
-+++ b/src/thread/xtensa/syscall_cp.s
|
|
|
-@@ -0,0 +1,37 @@
|
|
|
-+// __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z)
|
|
|
-+// a2 a3 a4 a5 a6 a7 [sp] [sp+4]
|
|
|
-+
|
|
|
-+// syscall(nr, u, v, w, x, y, z)
|
|
|
-+// a2 a6 a3 a4 a5 a8 a9
|
|
|
-+
|
|
|
-+.global __cp_begin
|
|
|
-+.hidden __cp_begin
|
|
|
-+.global __cp_end
|
|
|
-+.hidden __cp_end
|
|
|
-+.global __cp_cancel
|
|
|
-+.hidden __cp_cancel
|
|
|
-+.hidden __cancel
|
|
|
-+.global __syscall_cp_asm
|
|
|
-+.hidden __syscall_cp_asm
|
|
|
-+.type __syscall_cp_asm,%function
|
|
|
-+.align 4
|
|
|
-+__syscall_cp_asm:
|
|
|
-+ entry a1, 16
|
|
|
-+__cp_begin:
|
|
|
-+ l32i a2, a2, 0
|
|
|
-+ bnez a2, __cp_cancel
|
|
|
-+ mov a2, a4
|
|
|
-+ mov a4, a6
|
|
|
-+ mov a6, a2
|
|
|
-+ mov a2, a3
|
|
|
-+ mov a3, a5
|
|
|
-+ mov a5, a7
|
|
|
-+ l32i a8, a1, 16
|
|
|
-+ l32i a9, a1, 20
|
|
|
-+ syscall
|
|
|
-+__cp_end:
|
|
|
-+ retw
|
|
|
-+__cp_cancel:
|
|
|
-+ call4 __cancel
|
|
|
-+ mov a2, a6
|
|
|
-+ retw
|
|
|
---
|
|
|
-2.1.4
|
|
|
-
|