diff options
Diffstat (limited to 'arch')
163 files changed, 1896 insertions, 621 deletions
| diff --git a/arch/aarch64/bits/hwcap.h b/arch/aarch64/bits/hwcap.h index a7484028..424cc4d4 100644 --- a/arch/aarch64/bits/hwcap.h +++ b/arch/aarch64/bits/hwcap.h @@ -38,3 +38,15 @@  #define HWCAP2_SVEBITPERM	(1 << 4)  #define HWCAP2_SVESHA3		(1 << 5)  #define HWCAP2_SVESM4		(1 << 6) +#define HWCAP2_FLAGM2		(1 << 7) +#define HWCAP2_FRINT		(1 << 8) +#define HWCAP2_SVEI8MM		(1 << 9) +#define HWCAP2_SVEF32MM		(1 << 10) +#define HWCAP2_SVEF64MM		(1 << 11) +#define HWCAP2_SVEBF16		(1 << 12) +#define HWCAP2_I8MM		(1 << 13) +#define HWCAP2_BF16		(1 << 14) +#define HWCAP2_DGH		(1 << 15) +#define HWCAP2_RNG		(1 << 16) +#define HWCAP2_BTI		(1 << 17) +#define HWCAP2_MTE		(1 << 18) diff --git a/arch/aarch64/bits/mman.h b/arch/aarch64/bits/mman.h new file mode 100644 index 00000000..8fad5ceb --- /dev/null +++ b/arch/aarch64/bits/mman.h @@ -0,0 +1,2 @@ +#define PROT_BTI 0x10 +#define PROT_MTE 0x20 diff --git a/arch/aarch64/bits/posix.h b/arch/aarch64/bits/posix.h deleted file mode 100644 index c37b94c1..00000000 --- a/arch/aarch64/bits/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define _POSIX_V6_LP64_OFF64  1 -#define _POSIX_V7_LP64_OFF64  1 diff --git a/arch/aarch64/bits/reg.h b/arch/aarch64/bits/reg.h deleted file mode 100644 index 2633f39d..00000000 --- a/arch/aarch64/bits/reg.h +++ /dev/null @@ -1,2 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 diff --git a/arch/aarch64/bits/signal.h b/arch/aarch64/bits/signal.h index b71261f5..5098c734 100644 --- a/arch/aarch64/bits/signal.h +++ b/arch/aarch64/bits/signal.h @@ -11,7 +11,7 @@ typedef unsigned long greg_t;  typedef unsigned long gregset_t[34];  typedef struct { -	long double vregs[32]; +	__uint128_t vregs[32];  	unsigned int fpsr;  	unsigned int fpcr;  } fpregset_t; @@ -34,7 +34,7 @@ struct fpsimd_context {  	struct _aarch64_ctx head;  	unsigned int fpsr;  	unsigned int fpcr; -	long double vregs[32]; +	__uint128_t vregs[32];  };  struct esr_context {  	struct _aarch64_ctx head; diff --git a/arch/aarch64/bits/stdint.h b/arch/aarch64/bits/stdint.h deleted file mode 100644 index 1bb147f2..00000000 --- a/arch/aarch64/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      INT64_MIN -#define INTPTR_MAX      INT64_MAX -#define UINTPTR_MAX     UINT64_MAX -#define PTRDIFF_MIN     INT64_MIN -#define PTRDIFF_MAX     INT64_MAX -#define SIZE_MAX        UINT64_MAX diff --git a/arch/aarch64/bits/syscall.h.in b/arch/aarch64/bits/syscall.h.in index 93648afd..ea5a152a 100644 --- a/arch/aarch64/bits/syscall.h.in +++ b/arch/aarch64/bits/syscall.h.in @@ -289,4 +289,19 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/aarch64/bits/user.h b/arch/aarch64/bits/user.h index d12cdf7f..8a1002aa 100644 --- a/arch/aarch64/bits/user.h +++ b/arch/aarch64/bits/user.h @@ -6,7 +6,7 @@ struct user_regs_struct {  };  struct user_fpsimd_struct { -	long double vregs[32]; +	__uint128_t vregs[32];  	unsigned int fpsr;  	unsigned int fpcr;  }; diff --git a/arch/aarch64/pthread_arch.h b/arch/aarch64/pthread_arch.h index e64b126d..3909616c 100644 --- a/arch/aarch64/pthread_arch.h +++ b/arch/aarch64/pthread_arch.h @@ -1,12 +1,11 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	char *self; -	__asm__ ("mrs %0,tpidr_el0" : "=r"(self)); -	return (void*)(self - sizeof(struct pthread)); +	uintptr_t tp; +	__asm__ ("mrs %0,tpidr_el0" : "=r"(tp)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 16 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread))  #define MC_PC pc diff --git a/arch/arm/bits/posix.h b/arch/arm/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/arm/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/arm/bits/reg.h b/arch/arm/bits/reg.h deleted file mode 100644 index 0c7bffca..00000000 --- a/arch/arm/bits/reg.h +++ /dev/null @@ -1,3 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 32 -/* FIXME */ diff --git a/arch/arm/bits/stdint.h b/arch/arm/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/arm/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/arm/bits/syscall.h.in b/arch/arm/bits/syscall.h.in index 11d67763..157b304d 100644 --- a/arch/arm/bits/syscall.h.in +++ b/arch/arm/bits/syscall.h.in @@ -389,6 +389,21 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452  #define __ARM_NR_breakpoint	0x0f0001  #define __ARM_NR_cacheflush	0x0f0002 diff --git a/arch/arm/pthread_arch.h b/arch/arm/pthread_arch.h index e689ea21..157e2eae 100644 --- a/arch/arm/pthread_arch.h +++ b/arch/arm/pthread_arch.h @@ -1,11 +1,11 @@  #if ((__ARM_ARCH_6K__ || __ARM_ARCH_6KZ__ || __ARM_ARCH_6ZK__) && !__thumb__) \   || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7 -static inline pthread_t __pthread_self() +static inline uintptr_t __get_tp()  { -	char *p; -	__asm__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(p) ); -	return (void *)(p-sizeof(struct pthread)); +	uintptr_t tp; +	__asm__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(tp) ); +	return tp;  }  #else @@ -16,18 +16,17 @@ static inline pthread_t __pthread_self()  #define BLX "blx"  #endif -static inline pthread_t __pthread_self() +static inline uintptr_t __get_tp()  {  	extern hidden uintptr_t __a_gettp_ptr; -	register uintptr_t p __asm__("r0"); -	__asm__ ( BLX " %1" : "=r"(p) : "r"(__a_gettp_ptr) : "cc", "lr" ); -	return (void *)(p-sizeof(struct pthread)); +	register uintptr_t tp __asm__("r0"); +	__asm__ ( BLX " %1" : "=r"(tp) : "r"(__a_gettp_ptr) : "cc", "lr" ); +	return tp;  }  #endif  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 8 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread))  #define MC_PC arm_pc diff --git a/arch/arm/reloc.h b/arch/arm/reloc.h index d091d2ad..d98eb8af 100644 --- a/arch/arm/reloc.h +++ b/arch/arm/reloc.h @@ -26,7 +26,7 @@  #define REL_TPOFF       R_ARM_TLS_TPOFF32  #define REL_TLSDESC     R_ARM_TLS_DESC -#define TLSDESC_BACKWARDS +#define TLSDESC_BACKWARDS 1  #define CRTJMP(pc,sp) __asm__ __volatile__( \  	"mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" ) diff --git a/arch/arm/syscall_arch.h b/arch/arm/syscall_arch.h index a877b2cf..624e992e 100644 --- a/arch/arm/syscall_arch.h +++ b/arch/arm/syscall_arch.h @@ -101,3 +101,10 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  #define SYSCALL_FADVISE_6_ARG  #define SYSCALL_IPC_BROKEN_MODE + +#define VDSO_USEFUL +#define VDSO_CGT32_SYM "__vdso_clock_gettime" +#define VDSO_CGT32_VER "LINUX_2.6" +#define VDSO_CGT_SYM "__vdso_clock_gettime64" +#define VDSO_CGT_VER "LINUX_2.6" +#define VDSO_CGT_WORKAROUND 1 diff --git a/arch/generic/bits/fcntl.h b/arch/generic/bits/fcntl.h index ae233cc0..730a98cf 100644 --- a/arch/generic/bits/fcntl.h +++ b/arch/generic/bits/fcntl.h @@ -30,9 +30,15 @@  #define F_SETSIG 10  #define F_GETSIG 11 +#if __LONG_MAX == 0x7fffffffL  #define F_GETLK 12  #define F_SETLK 13  #define F_SETLKW 14 +#else +#define F_GETLK 5 +#define F_SETLK 6 +#define F_SETLKW 7 +#endif  #define F_SETOWN_EX 15  #define F_GETOWN_EX 16 diff --git a/arch/generic/bits/reg.h b/arch/generic/bits/reg.h new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/arch/generic/bits/reg.h diff --git a/arch/aarch64/bits/stat.h b/arch/generic/bits/stat.h index b7f4221b..f6d9e864 100644 --- a/arch/aarch64/bits/stat.h +++ b/arch/generic/bits/stat.h @@ -6,7 +6,7 @@ struct stat {  	uid_t st_uid;  	gid_t st_gid;  	dev_t st_rdev; -	unsigned long __pad; +	unsigned long long __pad;  	off_t st_size;  	blksize_t st_blksize;  	int __pad2; diff --git a/arch/m68k/bits/stdint.h b/arch/generic/bits/stdint.h index d1b27121..86489187 100644 --- a/arch/m68k/bits/stdint.h +++ b/arch/generic/bits/stdint.h @@ -12,9 +12,18 @@ typedef uint32_t uint_fast32_t;  #define UINT_FAST16_MAX UINT32_MAX  #define UINT_FAST32_MAX UINT32_MAX +#if __LONG_MAX == 0x7fffffffL  #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 +#else +#define INTPTR_MIN      INT64_MIN +#define INTPTR_MAX      INT64_MAX +#define UINTPTR_MAX     UINT64_MAX +#define PTRDIFF_MIN     INT64_MIN +#define PTRDIFF_MAX     INT64_MAX +#define SIZE_MAX        UINT64_MAX +#endif diff --git a/arch/i386/bits/posix.h b/arch/i386/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/i386/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/i386/bits/reg.h b/arch/i386/bits/reg.h index 8bc2582d..7dfe8250 100644 --- a/arch/i386/bits/reg.h +++ b/arch/i386/bits/reg.h @@ -1,5 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 32  #define EBX 0  #define ECX 1  #define EDX 2 diff --git a/arch/i386/bits/stdint.h b/arch/i386/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/i386/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/i386/bits/syscall.h.in b/arch/i386/bits/syscall.h.in index 1ae4e48a..55e91cc4 100644 --- a/arch/i386/bits/syscall.h.in +++ b/arch/i386/bits/syscall.h.in @@ -426,4 +426,20 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_memfd_secret	447 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/i386/crt_arch.h b/arch/i386/crt_arch.h index 43c8477a..1a80fce3 100644 --- a/arch/i386/crt_arch.h +++ b/arch/i386/crt_arch.h @@ -3,6 +3,7 @@ __asm__(  ".weak _DYNAMIC \n"  ".hidden _DYNAMIC \n"  ".global " START "\n" +".type " START ",%function \n"  START ":\n"  "	xor %ebp,%ebp \n"  "	mov %esp,%eax \n" diff --git a/arch/i386/pthread_arch.h b/arch/i386/pthread_arch.h index 6f600b9e..a639c382 100644 --- a/arch/i386/pthread_arch.h +++ b/arch/i386/pthread_arch.h @@ -1,10 +1,8 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	struct pthread *self; -	__asm__ ("movl %%gs:0,%0" : "=r" (self) ); -	return self; +	uintptr_t tp; +	__asm__ ("movl %%gs:0,%0" : "=r" (tp) ); +	return tp;  } -#define TP_ADJ(p) (p) -  #define MC_PC gregs[REG_EIP] diff --git a/arch/i386/syscall_arch.h b/arch/i386/syscall_arch.h index 69642e57..f92b7aa9 100644 --- a/arch/i386/syscall_arch.h +++ b/arch/i386/syscall_arch.h @@ -87,5 +87,3 @@ static inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a  #define VDSO_CGT32_VER "LINUX_2.6"  #define VDSO_CGT_SYM "__vdso_clock_gettime64"  #define VDSO_CGT_VER "LINUX_2.6" - -#define SYSCALL_USE_SOCKETCALL diff --git a/arch/loongarch64/atomic_arch.h b/arch/loongarch64/atomic_arch.h new file mode 100644 index 00000000..2225d027 --- /dev/null +++ b/arch/loongarch64/atomic_arch.h @@ -0,0 +1,53 @@ +#define a_ll a_ll +static inline int a_ll(volatile int *p) +{ +	int v; +	__asm__ __volatile__ ( +		"ll.w %0, %1" +		: "=r"(v) +		: "ZC"(*p)); +	return v; +} + +#define a_sc a_sc +static inline int a_sc(volatile int *p, int v) +{ +	int r; +	__asm__ __volatile__ ( +		"sc.w %0, %1" +		: "=r"(r), "=ZC"(*p) +		: "0"(v) : "memory"); +	return r; +} + +#define a_ll_p a_ll_p +static inline void *a_ll_p(volatile void *p) +{ +	void *v; +	__asm__ __volatile__ ( +		"ll.d %0, %1" +		: "=r"(v) +		: "ZC"(*(void *volatile *)p)); +	return v; +} + +#define a_sc_p a_sc_p +static inline int a_sc_p(volatile void *p, void *v) +{ +	long r; +	__asm__ __volatile__ ( +		"sc.d %0, %1" +		: "=r"(r), "=ZC"(*(void *volatile *)p) +		: "0"(v) +		: "memory"); +	return r; +} + +#define a_barrier a_barrier +static inline void a_barrier() +{ +	__asm__ __volatile__ ("dbar 0" : : : "memory"); +} + +#define a_pre_llsc  a_barrier +#define a_post_llsc a_barrier diff --git a/arch/loongarch64/bits/alltypes.h.in b/arch/loongarch64/bits/alltypes.h.in new file mode 100644 index 00000000..d1807aca --- /dev/null +++ b/arch/loongarch64/bits/alltypes.h.in @@ -0,0 +1,18 @@ +#define _Addr long +#define _Int64 long +#define _Reg long + +#define __BYTE_ORDER 1234 +#define __LONG_MAX 0x7fffffffffffffffL + +#ifndef __cplusplus +TYPEDEF int wchar_t; +#endif + +TYPEDEF float float_t; +TYPEDEF double double_t; + +TYPEDEF struct { long long __ll; long double __ld; } max_align_t; + +TYPEDEF unsigned nlink_t; +TYPEDEF int blksize_t; diff --git a/arch/loongarch64/bits/fenv.h b/arch/loongarch64/bits/fenv.h new file mode 100644 index 00000000..264cafb5 --- /dev/null +++ b/arch/loongarch64/bits/fenv.h @@ -0,0 +1,20 @@ +#define FE_INEXACT    0x010000 +#define FE_UNDERFLOW  0x020000 +#define FE_OVERFLOW   0x040000 +#define FE_DIVBYZERO  0x080000 +#define FE_INVALID    0x100000 + +#define FE_ALL_EXCEPT 0x1F0000 + +#define FE_TONEAREST  0x000 +#define FE_TOWARDZERO 0x100 +#define FE_UPWARD     0x200 +#define FE_DOWNWARD   0x300 + +typedef unsigned fexcept_t; + +typedef struct { +	unsigned __cw; +} fenv_t; + +#define FE_DFL_ENV ((const fenv_t *) -1) diff --git a/arch/loongarch64/bits/float.h b/arch/loongarch64/bits/float.h new file mode 100644 index 00000000..719c7908 --- /dev/null +++ b/arch/loongarch64/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L +#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L +#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L +#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L + +#define LDBL_MANT_DIG 113 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 33 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 36 diff --git a/arch/loongarch64/bits/hwcap.h b/arch/loongarch64/bits/hwcap.h new file mode 100644 index 00000000..b8184f69 --- /dev/null +++ b/arch/loongarch64/bits/hwcap.h @@ -0,0 +1,14 @@ +#define HWCAP_LOONGARCH_CPUCFG          (1 << 0) +#define HWCAP_LOONGARCH_LAM             (1 << 1) +#define HWCAP_LOONGARCH_UAL             (1 << 2) +#define HWCAP_LOONGARCH_FPU             (1 << 3) +#define HWCAP_LOONGARCH_LSX             (1 << 4) +#define HWCAP_LOONGARCH_LASX            (1 << 5) +#define HWCAP_LOONGARCH_CRC32           (1 << 6) +#define HWCAP_LOONGARCH_COMPLEX         (1 << 7) +#define HWCAP_LOONGARCH_CRYPTO          (1 << 8) +#define HWCAP_LOONGARCH_LVZ             (1 << 9) +#define HWCAP_LOONGARCH_LBT_X86         (1 << 10) +#define HWCAP_LOONGARCH_LBT_ARM         (1 << 11) +#define HWCAP_LOONGARCH_LBT_MIPS        (1 << 12) +#define HWCAP_LOONGARCH_PTW             (1 << 13) diff --git a/arch/loongarch64/bits/setjmp.h b/arch/loongarch64/bits/setjmp.h new file mode 100644 index 00000000..3b15e87b --- /dev/null +++ b/arch/loongarch64/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long __jmp_buf[23]; diff --git a/arch/loongarch64/bits/signal.h b/arch/loongarch64/bits/signal.h new file mode 100644 index 00000000..5a9ed8c9 --- /dev/null +++ b/arch/loongarch64/bits/signal.h @@ -0,0 +1,101 @@ +#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 4096 +#define SIGSTKSZ 16384 +#endif + +#if defined(_GNU_SOURCE) +#define LARCH_NGREG 32 +#define LARCH_REG_RA 1 +#define LARCH_REG_SP 3 +#define LARCH_REG_S0 23 +#define LARCH_REG_S1 24 +#define LARCH_REG_A0 4 +#define LARCH_REG_S2 25 +#define LARCH_REG_NARGS 8 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long greg_t, gregset_t[32]; + +struct sigcontext { +	unsigned long sc_pc; +	unsigned long sc_regs[32]; +	unsigned sc_flags; +	unsigned long sc_extcontext[] __attribute__((__aligned__(16))); +}; +#endif + +typedef struct { +	unsigned long __pc; +	unsigned long __gregs[32]; +	unsigned __flags; +	unsigned long __extcontext[] __attribute__((__aligned__(16))); +} 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; +	sigset_t uc_sigmask; +	long __uc_pad; +	mcontext_t uc_mcontext; +} ucontext_t; + +#define __uc_flags uc_flags + +#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 + +#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   SIGIO +#define SIGPWR    30 +#define SIGSYS    31 +#define SIGUNUSED SIGSYS + +#define _NSIG 65 diff --git a/arch/loongarch64/bits/syscall.h.in b/arch/loongarch64/bits/syscall.h.in new file mode 100644 index 00000000..2afb4ea1 --- /dev/null +++ b/arch/loongarch64/bits/syscall.h.in @@ -0,0 +1,316 @@ +#define __NR_io_setup                   0 +#define __NR_io_destroy                 1 +#define __NR_io_submit                  2 +#define __NR_io_cancel                  3 +#define __NR_io_getevents               4 +#define __NR_setxattr                   5 +#define __NR_lsetxattr                  6 +#define __NR_fsetxattr                  7 +#define __NR_getxattr                   8 +#define __NR_lgetxattr                  9 +#define __NR_fgetxattr                  10 +#define __NR_listxattr                  11 +#define __NR_llistxattr                 12 +#define __NR_flistxattr                 13 +#define __NR_removexattr                14 +#define __NR_lremovexattr               15 +#define __NR_fremovexattr               16 +#define __NR_getcwd                     17 +#define __NR_lookup_dcookie             18 +#define __NR_eventfd2                   19 +#define __NR_epoll_create1              20 +#define __NR_epoll_ctl                  21 +#define __NR_epoll_pwait                22 +#define __NR_dup                        23 +#define __NR_dup3                       24 +#define __NR3264_fcntl                  25 +#define __NR_inotify_init1              26 +#define __NR_inotify_add_watch          27 +#define __NR_inotify_rm_watch           28 +#define __NR_ioctl                      29 +#define __NR_ioprio_set                 30 +#define __NR_ioprio_get                 31 +#define __NR_flock                      32 +#define __NR_mknodat                    33 +#define __NR_mkdirat                    34 +#define __NR_unlinkat                   35 +#define __NR_symlinkat                  36 +#define __NR_linkat                     37 +#define __NR_umount2                    39 +#define __NR_mount                      40 +#define __NR_pivot_root                 41 +#define __NR_nfsservctl                 42 +#define __NR3264_statfs                 43 +#define __NR3264_fstatfs                44 +#define __NR3264_truncate               45 +#define __NR3264_ftruncate              46 +#define __NR_fallocate                  47 +#define __NR_faccessat                  48 +#define __NR_chdir                      49 +#define __NR_fchdir                     50 +#define __NR_chroot                     51 +#define __NR_fchmod                     52 +#define __NR_fchmodat                   53 +#define __NR_fchownat                   54 +#define __NR_fchown                     55 +#define __NR_openat                     56 +#define __NR_close                      57 +#define __NR_vhangup                    58 +#define __NR_pipe2                      59 +#define __NR_quotactl                   60 +#define __NR_getdents64                 61 +#define __NR3264_lseek                  62 +#define __NR_read                       63 +#define __NR_write                      64 +#define __NR_readv                      65 +#define __NR_writev                     66 +#define __NR_pread64                    67 +#define __NR_pwrite64                   68 +#define __NR_preadv                     69 +#define __NR_pwritev                    70 +#define __NR3264_sendfile               71 +#define __NR_pselect6                   72 +#define __NR_ppoll                      73 +#define __NR_signalfd4                  74 +#define __NR_vmsplice                   75 +#define __NR_splice                     76 +#define __NR_tee                        77 +#define __NR_readlinkat                 78 +#define __NR_sync                       81 +#define __NR_fsync                      82 +#define __NR_fdatasync                  83 +#define __NR_sync_file_range            84 +#define __NR_timerfd_create             85 +#define __NR_timerfd_settime            86 +#define __NR_timerfd_gettime            87 +#define __NR_utimensat                  88 +#define __NR_acct                       89 +#define __NR_capget                     90 +#define __NR_capset                     91 +#define __NR_personality                92 +#define __NR_exit                       93 +#define __NR_exit_group                 94 +#define __NR_waitid                     95 +#define __NR_set_tid_address            96 +#define __NR_unshare                    97 +#define __NR_futex                      98 +#define __NR_set_robust_list            99 +#define __NR_get_robust_list            100 +#define __NR_nanosleep                  101 +#define __NR_getitimer                  102 +#define __NR_setitimer                  103 +#define __NR_kexec_load                 104 +#define __NR_init_module                105 +#define __NR_delete_module              106 +#define __NR_timer_create               107 +#define __NR_timer_gettime              108 +#define __NR_timer_getoverrun           109 +#define __NR_timer_settime              110 +#define __NR_timer_delete               111 +#define __NR_clock_settime              112 +#define __NR_clock_gettime              113 +#define __NR_clock_getres               114 +#define __NR_clock_nanosleep            115 +#define __NR_syslog                     116 +#define __NR_ptrace                     117 +#define __NR_sched_setparam             118 +#define __NR_sched_setscheduler         119 +#define __NR_sched_getscheduler         120 +#define __NR_sched_getparam             121 +#define __NR_sched_setaffinity          122 +#define __NR_sched_getaffinity          123 +#define __NR_sched_yield                124 +#define __NR_sched_get_priority_max     125 +#define __NR_sched_get_priority_min     126 +#define __NR_sched_rr_get_interval      127 +#define __NR_restart_syscall            128 +#define __NR_kill                       129 +#define __NR_tkill                      130 +#define __NR_tgkill                     131 +#define __NR_sigaltstack                132 +#define __NR_rt_sigsuspend              133 +#define __NR_rt_sigaction               134 +#define __NR_rt_sigprocmask             135 +#define __NR_rt_sigpending              136 +#define __NR_rt_sigtimedwait            137 +#define __NR_rt_sigqueueinfo            138 +#define __NR_rt_sigreturn               139 +#define __NR_setpriority                140 +#define __NR_getpriority                141 +#define __NR_reboot                     142 +#define __NR_setregid                   143 +#define __NR_setgid                     144 +#define __NR_setreuid                   145 +#define __NR_setuid                     146 +#define __NR_setresuid                  147 +#define __NR_getresuid                  148 +#define __NR_setresgid                  149 +#define __NR_getresgid                  150 +#define __NR_setfsuid                   151 +#define __NR_setfsgid                   152 +#define __NR_times                      153 +#define __NR_setpgid                    154 +#define __NR_getpgid                    155 +#define __NR_getsid                     156 +#define __NR_setsid                     157 +#define __NR_getgroups                  158 +#define __NR_setgroups                  159 +#define __NR_uname                      160 +#define __NR_sethostname                161 +#define __NR_setdomainname              162 +#define __NR_getrusage                  165 +#define __NR_umask                      166 +#define __NR_prctl                      167 +#define __NR_getcpu                     168 +#define __NR_gettimeofday               169 +#define __NR_settimeofday               170 +#define __NR_adjtimex                   171 +#define __NR_getpid                     172 +#define __NR_getppid                    173 +#define __NR_getuid                     174 +#define __NR_geteuid                    175 +#define __NR_getgid                     176 +#define __NR_getegid                    177 +#define __NR_gettid                     178 +#define __NR_sysinfo                    179 +#define __NR_mq_open                    180 +#define __NR_mq_unlink                  181 +#define __NR_mq_timedsend               182 +#define __NR_mq_timedreceive            183 +#define __NR_mq_notify                  184 +#define __NR_mq_getsetattr              185 +#define __NR_msgget                     186 +#define __NR_msgctl                     187 +#define __NR_msgrcv                     188 +#define __NR_msgsnd                     189 +#define __NR_semget                     190 +#define __NR_semctl                     191 +#define __NR_semtimedop                 192 +#define __NR_semop                      193 +#define __NR_shmget                     194 +#define __NR_shmctl                     195 +#define __NR_shmat                      196 +#define __NR_shmdt                      197 +#define __NR_socket                     198 +#define __NR_socketpair                 199 +#define __NR_bind                       200 +#define __NR_listen                     201 +#define __NR_accept                     202 +#define __NR_connect                    203 +#define __NR_getsockname                204 +#define __NR_getpeername                205 +#define __NR_sendto                     206 +#define __NR_recvfrom                   207 +#define __NR_setsockopt                 208 +#define __NR_getsockopt                 209 +#define __NR_shutdown                   210 +#define __NR_sendmsg                    211 +#define __NR_recvmsg                    212 +#define __NR_readahead                  213 +#define __NR_brk                        214 +#define __NR_munmap                     215 +#define __NR_mremap                     216 +#define __NR_add_key                    217 +#define __NR_request_key                218 +#define __NR_keyctl                     219 +#define __NR_clone                      220 +#define __NR_execve                     221 +#define __NR3264_mmap                   222 +#define __NR3264_fadvise64              223 +#define __NR_swapon                     224 +#define __NR_swapoff                    225 +#define __NR_mprotect                   226 +#define __NR_msync                      227 +#define __NR_mlock                      228 +#define __NR_munlock                    229 +#define __NR_mlockall                   230 +#define __NR_munlockall                 231 +#define __NR_mincore                    232 +#define __NR_madvise                    233 +#define __NR_remap_file_pages           234 +#define __NR_mbind                      235 +#define __NR_get_mempolicy              236 +#define __NR_set_mempolicy              237 +#define __NR_migrate_pages              238 +#define __NR_move_pages                 239 +#define __NR_rt_tgsigqueueinfo          240 +#define __NR_perf_event_open            241 +#define __NR_accept4                    242 +#define __NR_recvmmsg                   243 +#define __NR_arch_specific_syscall      244 +#define __NR_wait4                      260 +#define __NR_prlimit64                  261 +#define __NR_fanotify_init              262 +#define __NR_fanotify_mark              263 +#define __NR_name_to_handle_at          264 +#define __NR_open_by_handle_at          265 +#define __NR_clock_adjtime              266 +#define __NR_syncfs                     267 +#define __NR_setns                      268 +#define __NR_sendmmsg                   269 +#define __NR_process_vm_readv           270 +#define __NR_process_vm_writev          271 +#define __NR_kcmp                       272 +#define __NR_finit_module               273 +#define __NR_sched_setattr              274 +#define __NR_sched_getattr              275 +#define __NR_renameat2                  276 +#define __NR_seccomp                    277 +#define __NR_getrandom                  278 +#define __NR_memfd_create               279 +#define __NR_bpf                        280 +#define __NR_execveat                   281 +#define __NR_userfaultfd                282 +#define __NR_membarrier                 283 +#define __NR_mlock2                     284 +#define __NR_copy_file_range            285 +#define __NR_preadv2                    286 +#define __NR_pwritev2                   287 +#define __NR_pkey_mprotect              288 +#define __NR_pkey_alloc                 289 +#define __NR_pkey_free                  290 +#define __NR_statx                      291 +#define __NR_io_pgetevents              292 +#define __NR_rseq                       293 +#define __NR_kexec_file_load            294 +#define __NR_pidfd_send_signal          424 +#define __NR_io_uring_setup             425 +#define __NR_io_uring_enter             426 +#define __NR_io_uring_register          427 +#define __NR_open_tree                  428 +#define __NR_move_mount                 429 +#define __NR_fsopen                     430 +#define __NR_fsconfig                   431 +#define __NR_fsmount                    432 +#define __NR_fspick                     433 +#define __NR_pidfd_open                 434 +#define __NR_clone3                     435 +#define __NR_close_range                436 +#define __NR_openat2                    437 +#define __NR_pidfd_getfd                438 +#define __NR_faccessat2                 439 +#define __NR_process_madvise            440 +#define __NR_epoll_pwait2               441 +#define __NR_mount_setattr              442 +#define __NR_quotactl_fd                443 +#define __NR_landlock_create_ruleset    444 +#define __NR_landlock_add_rule          445 +#define __NR_landlock_restrict_self     446 +#define __NR_process_mrelease           448 +#define __NR_futex_waitv                449 +#define __NR_set_mempolicy_home_node    450 +#define __NR_cachestat                  451 +#define __NR_fchmodat2                  452 +#define __NR_map_shadow_stack           453 +#define __NR_futex_wake                 454 +#define __NR_futex_wait                 455 +#define __NR_futex_requeue              456 +#define __NR_fcntl                      __NR3264_fcntl +#define __NR_statfs                     __NR3264_statfs +#define __NR_fstatfs                    __NR3264_fstatfs +#define __NR_truncate                   __NR3264_truncate +#define __NR_ftruncate                  __NR3264_ftruncate +#define __NR_lseek                      __NR3264_lseek +#define __NR_sendfile                   __NR3264_sendfile +#define __NR_mmap                       __NR3264_mmap +#define __NR_fadvise64                  __NR3264_fadvise64 diff --git a/arch/loongarch64/bits/user.h b/arch/loongarch64/bits/user.h new file mode 100644 index 00000000..fd9b7b22 --- /dev/null +++ b/arch/loongarch64/bits/user.h @@ -0,0 +1,24 @@ +#define ELF_NGREG    45 +#define ELF_NFPREG   34 + +struct user_regs_struct { +	unsigned long regs[32]; +	unsigned long orig_a0; +	unsigned long csr_era; +	unsigned long csr_badv; +	unsigned long reserved[10]; +}; + +struct user_fp_struct { +	unsigned long fpr[32]; +	unsigned long fcc; +	unsigned int fcsr; +}; + +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; + +typedef union { +	double d; +	float f; +} elf_fpreg_t; +typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; diff --git a/arch/loongarch64/crt_arch.h b/arch/loongarch64/crt_arch.h new file mode 100644 index 00000000..e0760d9e --- /dev/null +++ b/arch/loongarch64/crt_arch.h @@ -0,0 +1,13 @@ +__asm__( +".text \n" +".global " START "\n" +".type   " START ", @function\n" +START ":\n" +"	move $fp, $zero\n" +"	move $a0, $sp\n" +".weak _DYNAMIC\n" +".hidden _DYNAMIC\n" +"	la.local $a1, _DYNAMIC\n" +"	bstrins.d $sp, $zero, 3, 0\n" +"	b " START "_c\n" +); diff --git a/arch/loongarch64/pthread_arch.h b/arch/loongarch64/pthread_arch.h new file mode 100644 index 00000000..365f6ca8 --- /dev/null +++ b/arch/loongarch64/pthread_arch.h @@ -0,0 +1,11 @@ +static inline uintptr_t __get_tp() +{ +	register uintptr_t tp __asm__("tp"); +	__asm__ ("" : "=r" (tp) ); +	return tp; +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP   0 +#define DTP_OFFSET     0 +#define MC_PC          __pc diff --git a/arch/loongarch64/reloc.h b/arch/loongarch64/reloc.h new file mode 100644 index 00000000..a4db6a9c --- /dev/null +++ b/arch/loongarch64/reloc.h @@ -0,0 +1,30 @@ +#ifdef __loongarch_soft_float +#define FP_SUFFIX "-sf" +#elif defined __loongarch_single_float +#define FP_SUFFIX "-sp" +#else +#define FP_SUFFIX "" +#endif + +#define LDSO_ARCH "loongarch64" FP_SUFFIX + +#define TPOFF_K         0 + +#define REL_PLT         R_LARCH_JUMP_SLOT +#define REL_COPY        R_LARCH_COPY +#define REL_DTPMOD      R_LARCH_TLS_DTPMOD64 +#define REL_DTPOFF      R_LARCH_TLS_DTPREL64 +#define REL_TPOFF       R_LARCH_TLS_TPREL64 +#define REL_RELATIVE    R_LARCH_RELATIVE +#define REL_SYMBOLIC    R_LARCH_64 +#define REL_TLSDESC     R_LARCH_TLS_DESC64 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ +	"move $sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) + +#define GETFUNCSYM(fp, sym, got) __asm__ ( \ +	".hidden " #sym "\n" \ +	".align 8 \n" \ +	"	la.local $t1, "#sym" \n" \ +	"	move %0, $t1 \n" \ +	: "=r"(*(fp)) : : "memory" ) diff --git a/arch/loongarch64/syscall_arch.h b/arch/loongarch64/syscall_arch.h new file mode 100644 index 00000000..4d5e1885 --- /dev/null +++ b/arch/loongarch64/syscall_arch.h @@ -0,0 +1,137 @@ +#define __SYSCALL_LL_E(x) (x) +#define __SYSCALL_LL_O(x) (x) + +#define SYSCALL_CLOBBERLIST \ +	"$t0", "$t1", "$t2", "$t3", \ +	"$t4", "$t5", "$t6", "$t7", "$t8", "memory" + +static inline long __syscall0(long n) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0"); + +	__asm__ __volatile__ ( +		"syscall 0" +		: "=r"(a0) +		: "r"(a7) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +static inline long __syscall1(long n, long a) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0") = a; + +	__asm__ __volatile__ ( +		"syscall 0" +		: "+r"(a0) +		: "r"(a7) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +static inline long __syscall2(long n, long a, long b) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0") = a; +	register long a1 __asm__("$a1") = b; + +	__asm__ __volatile__ ( +		"syscall 0" +		: "+r"(a0) +	        : "r"(a7), "r"(a1) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +static inline long __syscall3(long n, long a, long b, long c) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0") = a; +	register long a1 __asm__("$a1") = b; +	register long a2 __asm__("$a2") = c; + +	__asm__ __volatile__ ( +		"syscall 0" +		: "+r"(a0) +	        : "r"(a7), "r"(a1), "r"(a2) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0") = a; +	register long a1 __asm__("$a1") = b; +	register long a2 __asm__("$a2") = c; +	register long a3 __asm__("$a3") = d; + +	__asm__ __volatile__ ( +		"syscall 0" +		: "+r"(a0) +	        : "r"(a7), "r"(a1), "r"(a2), "r"(a3) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0") = a; +	register long a1 __asm__("$a1") = b; +	register long a2 __asm__("$a2") = c; +	register long a3 __asm__("$a3") = d; +	register long a4 __asm__("$a4") = e; + +	__asm__ __volatile__ ( +		"syscall 0" +		: "+r"(a0) +	        : "r"(a7), "r"(a1), "r"(a2), "r"(a3), "r"(a4) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0") = a; +	register long a1 __asm__("$a1") = b; +	register long a2 __asm__("$a2") = c; +	register long a3 __asm__("$a3") = d; +	register long a4 __asm__("$a4") = e; +	register long a5 __asm__("$a5") = f; + +	__asm__ __volatile__ ( +		"syscall 0" +		: "+r"(a0) +	        : "r"(a7), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +static inline long __syscall7(long n, long a, long b, long c, long d, long e, long f, long g) +{ +	register long a7 __asm__("$a7") = n; +	register long a0 __asm__("$a0") = a; +	register long a1 __asm__("$a1") = b; +	register long a2 __asm__("$a2") = c; +	register long a3 __asm__("$a3") = d; +	register long a4 __asm__("$a4") = e; +	register long a5 __asm__("$a5") = f; +	register long a6 __asm__("$a6") = g; + +	__asm__ __volatile__ ( +		"syscall 0" +		: "+r"(a0) +	        : "r"(a7), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5), "r"(a6) +		: SYSCALL_CLOBBERLIST); +	return a0; +} + +#define VDSO_USEFUL +#define VDSO_CGT_SYM "__vdso_clock_gettime" +#define VDSO_CGT_VER "LINUX_5.10" + +#define IPC_64  0 diff --git a/arch/m68k/bits/poll.h b/arch/m68k/bits/poll.h new file mode 100644 index 00000000..00063f41 --- /dev/null +++ b/arch/m68k/bits/poll.h @@ -0,0 +1,2 @@ +#define POLLWRNORM POLLOUT +#define POLLWRBAND 256 diff --git a/arch/m68k/bits/posix.h b/arch/m68k/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/m68k/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/m68k/bits/reg.h b/arch/m68k/bits/reg.h index 99201f70..fedc4f9f 100644 --- a/arch/m68k/bits/reg.h +++ b/arch/m68k/bits/reg.h @@ -1,5 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 32  #define PT_D1 0  #define PT_D2 1  #define PT_D3 2 diff --git a/arch/m68k/bits/syscall.h.in b/arch/m68k/bits/syscall.h.in index ddfa72e4..5cd84602 100644 --- a/arch/m68k/bits/syscall.h.in +++ b/arch/m68k/bits/syscall.h.in @@ -405,3 +405,19 @@  #define __NR_fsmount		432  #define __NR_fspick		433  #define __NR_pidfd_open		434 +#define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/m68k/pthread_arch.h b/arch/m68k/pthread_arch.h index 02d5b8a0..5bea4e1a 100644 --- a/arch/m68k/pthread_arch.h +++ b/arch/m68k/pthread_arch.h @@ -1,13 +1,12 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	uintptr_t tp = __syscall(SYS_get_thread_area); -	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +	return __syscall(SYS_get_thread_area);  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) +#define TP_OFFSET 0x7000  #define DTP_OFFSET 0x8000  #define MC_PC gregs[R_PC] diff --git a/arch/m68k/syscall_arch.h b/arch/m68k/syscall_arch.h index af79c306..6a9d0ae8 100644 --- a/arch/m68k/syscall_arch.h +++ b/arch/m68k/syscall_arch.h @@ -87,5 +87,4 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  	return d0;  } -#define SYSCALL_USE_SOCKETCALL  #define SYSCALL_IPC_BROKEN_MODE diff --git a/arch/microblaze/bits/posix.h b/arch/microblaze/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/microblaze/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/microblaze/bits/reg.h b/arch/microblaze/bits/reg.h deleted file mode 100644 index 0c7bffca..00000000 --- a/arch/microblaze/bits/reg.h +++ /dev/null @@ -1,3 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 32 -/* FIXME */ diff --git a/arch/microblaze/bits/signal.h b/arch/microblaze/bits/signal.h index 490f83bf..f25b7c6a 100644 --- a/arch/microblaze/bits/signal.h +++ b/arch/microblaze/bits/signal.h @@ -46,7 +46,6 @@ typedef struct __ucontext {  #define SA_RESTART    0x10000000  #define SA_NODEFER    0x40000000  #define SA_RESETHAND  0x80000000 -#define SA_RESTORER   0x04000000  #endif diff --git a/arch/microblaze/bits/stdint.h b/arch/microblaze/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/microblaze/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/microblaze/bits/syscall.h.in b/arch/microblaze/bits/syscall.h.in index 963386a8..40860e6d 100644 --- a/arch/microblaze/bits/syscall.h.in +++ b/arch/microblaze/bits/syscall.h.in @@ -427,4 +427,19 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/microblaze/pthread_arch.h b/arch/microblaze/pthread_arch.h index f6ba8de9..ff26624e 100644 --- a/arch/microblaze/pthread_arch.h +++ b/arch/microblaze/pthread_arch.h @@ -1,10 +1,8 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	struct pthread *self; -	__asm__ ("ori %0, r21, 0" : "=r" (self) ); -	return self; +	uintptr_t tp; +	__asm__ ("ori %0, r21, 0" : "=r" (tp) ); +	return tp;  } -#define TP_ADJ(p) (p) -  #define MC_PC regs.pc diff --git a/arch/microblaze/syscall_arch.h b/arch/microblaze/syscall_arch.h index 169013f8..61d8248e 100644 --- a/arch/microblaze/syscall_arch.h +++ b/arch/microblaze/syscall_arch.h @@ -95,3 +95,5 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  }  #define SYSCALL_IPC_BROKEN_MODE + +#undef SYS_socketcall diff --git a/arch/mips/bits/posix.h b/arch/mips/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/mips/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/mips/bits/reg.h b/arch/mips/bits/reg.h index 0c370987..2611b632 100644 --- a/arch/mips/bits/reg.h +++ b/arch/mips/bits/reg.h @@ -1,6 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 32 -  #define EF_R0 6  #define EF_R1 7  #define EF_R2 8 diff --git a/arch/mips/bits/signal.h b/arch/mips/bits/signal.h index 1b69e762..a3b3857a 100644 --- a/arch/mips/bits/signal.h +++ b/arch/mips/bits/signal.h @@ -66,7 +66,6 @@ typedef struct __ucontext {  #define SA_RESTART    0x10000000  #define SA_NODEFER    0x40000000  #define SA_RESETHAND  0x80000000 -#define SA_RESTORER   0x04000000  #undef SIG_BLOCK  #undef SIG_UNBLOCK diff --git a/arch/mips/bits/stdint.h b/arch/mips/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/mips/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/mips/bits/syscall.h.in b/arch/mips/bits/syscall.h.in index 86251bf3..55e35742 100644 --- a/arch/mips/bits/syscall.h.in +++ b/arch/mips/bits/syscall.h.in @@ -408,4 +408,19 @@  #define __NR_fspick		4433  #define __NR_pidfd_open		4434  #define __NR_clone3		4435 +#define __NR_close_range	4436 +#define __NR_openat2		4437 +#define __NR_pidfd_getfd	4438 +#define __NR_faccessat2		4439 +#define __NR_process_madvise	4440 +#define __NR_epoll_pwait2	4441 +#define __NR_mount_setattr	4442 +#define __NR_landlock_create_ruleset	4444 +#define __NR_landlock_add_rule	4445 +#define __NR_landlock_restrict_self	4446 +#define __NR_process_mrelease	4448 +#define __NR_futex_waitv	4449 +#define __NR_set_mempolicy_home_node	4450 +#define __NR_cachestat		4451 +#define __NR_fchmodat2		4452 diff --git a/arch/mips/ksigaction.h b/arch/mips/ksigaction.h index 63fdfab0..485abf75 100644 --- a/arch/mips/ksigaction.h +++ b/arch/mips/ksigaction.h @@ -4,10 +4,7 @@ struct k_sigaction {  	unsigned flags;  	void (*handler)(int);  	unsigned long mask[4]; -	/* The following field is past the end of the structure the -	 * kernel will read or write, and exists only to avoid having -	 * mips-specific preprocessor conditionals in sigaction.c. */ -	void (*restorer)(); +	void *unused;  };  hidden void __restore(), __restore_rt(); diff --git a/arch/mips/pthread_arch.h b/arch/mips/pthread_arch.h index 1e7839ea..376b7741 100644 --- a/arch/mips/pthread_arch.h +++ b/arch/mips/pthread_arch.h @@ -1,19 +1,18 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { +	register uintptr_t tp __asm__("$3");  #if __mips_isa_rev < 2 -	register char *tp __asm__("$3");  	__asm__ (".word 0x7c03e83b" : "=r" (tp) );  #else -	char *tp;  	__asm__ ("rdhwr %0, $29" : "=r" (tp) );  #endif -	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) +#define TP_OFFSET 0x7000  #define DTP_OFFSET 0x8000  #define MC_PC pc diff --git a/arch/mips/reloc.h b/arch/mips/reloc.h index 88d23639..f4023b16 100644 --- a/arch/mips/reloc.h +++ b/arch/mips/reloc.h @@ -29,6 +29,7 @@  #define NEED_MIPS_GOT_RELOCS 1  #define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP +#define DT_DEBUG_INDIRECT_REL DT_MIPS_RLD_MAP_REL  #define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))  #define CRTJMP(pc,sp) __asm__ __volatile__( \ diff --git a/arch/mips/syscall_arch.h b/arch/mips/syscall_arch.h index 380a94b3..5b7c38de 100644 --- a/arch/mips/syscall_arch.h +++ b/arch/mips/syscall_arch.h @@ -149,3 +149,5 @@ static inline long __syscall7(long n, long a, long b, long c, long d, long e, lo  #define SO_SNDTIMEO_OLD 0x1005  #define SO_RCVTIMEO_OLD 0x1006 + +#undef SYS_socketcall diff --git a/arch/mips64/bits/fcntl.h b/arch/mips64/bits/fcntl.h index 3bcec15e..5da1eef8 100644 --- a/arch/mips64/bits/fcntl.h +++ b/arch/mips64/bits/fcntl.h @@ -13,7 +13,7 @@  #define O_ASYNC      010000  #define O_DIRECT    0100000 -#define O_LARGEFILE       0 +#define O_LARGEFILE  020000  #define O_NOATIME  01000000  #define O_PATH    010000000  #define O_TMPFILE 020200000 diff --git a/arch/mips64/bits/posix.h b/arch/mips64/bits/posix.h deleted file mode 100644 index acf42944..00000000 --- a/arch/mips64/bits/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define _POSIX_V6_LP64_OFFBIG 1 -#define _POSIX_V7_LP64_OFFBIG 1 diff --git a/arch/mips64/bits/reg.h b/arch/mips64/bits/reg.h index a3f63acc..16178dd3 100644 --- a/arch/mips64/bits/reg.h +++ b/arch/mips64/bits/reg.h @@ -1,6 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 -  #define EF_R0 0  #define EF_R1 1  #define EF_R2 2 diff --git a/arch/mips64/bits/signal.h b/arch/mips64/bits/signal.h index 4f91c9fc..ffec7fd0 100644 --- a/arch/mips64/bits/signal.h +++ b/arch/mips64/bits/signal.h @@ -85,7 +85,6 @@ typedef struct __ucontext {  #define SA_RESTART    0x10000000  #define SA_NODEFER    0x40000000  #define SA_RESETHAND  0x80000000 -#define SA_RESTORER   0x04000000  #undef SIG_BLOCK  #undef SIG_UNBLOCK diff --git a/arch/mips64/bits/stdint.h b/arch/mips64/bits/stdint.h deleted file mode 100644 index 1bb147f2..00000000 --- a/arch/mips64/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      INT64_MIN -#define INTPTR_MAX      INT64_MAX -#define UINTPTR_MAX     UINT64_MAX -#define PTRDIFF_MIN     INT64_MIN -#define PTRDIFF_MAX     INT64_MAX -#define SIZE_MAX        UINT64_MAX diff --git a/arch/mips64/bits/syscall.h.in b/arch/mips64/bits/syscall.h.in index 9b406e9a..50cec45a 100644 --- a/arch/mips64/bits/syscall.h.in +++ b/arch/mips64/bits/syscall.h.in @@ -338,4 +338,19 @@  #define __NR_fspick		5433  #define __NR_pidfd_open		5434  #define __NR_clone3		5435 +#define __NR_close_range	5436 +#define __NR_openat2		5437 +#define __NR_pidfd_getfd	5438 +#define __NR_faccessat2		5439 +#define __NR_process_madvise	5440 +#define __NR_epoll_pwait2	5441 +#define __NR_mount_setattr	5442 +#define __NR_landlock_create_ruleset	5444 +#define __NR_landlock_add_rule	5445 +#define __NR_landlock_restrict_self	5446 +#define __NR_process_mrelease	5448 +#define __NR_futex_waitv	5449 +#define __NR_set_mempolicy_home_node	5450 +#define __NR_cachestat		5451 +#define __NR_fchmodat2		5452 diff --git a/arch/mips64/ksigaction.h b/arch/mips64/ksigaction.h index c16e4731..b4d0fa5f 100644 --- a/arch/mips64/ksigaction.h +++ b/arch/mips64/ksigaction.h @@ -4,7 +4,7 @@ struct k_sigaction {  	unsigned flags;  	void (*handler)(int);  	unsigned long mask[2]; -	void (*restorer)(); +	void *unused;  };  hidden void __restore(), __restore_rt(); diff --git a/arch/mips64/pthread_arch.h b/arch/mips64/pthread_arch.h index 1e7839ea..c45347ab 100644 --- a/arch/mips64/pthread_arch.h +++ b/arch/mips64/pthread_arch.h @@ -1,19 +1,19 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  {  #if __mips_isa_rev < 2 -	register char *tp __asm__("$3"); +	register uintptr_t tp __asm__("$3");  	__asm__ (".word 0x7c03e83b" : "=r" (tp) );  #else -	char *tp; +	uintptr_t tp;  	__asm__ ("rdhwr %0, $29" : "=r" (tp) );  #endif -	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) +#define TP_OFFSET 0x7000  #define DTP_OFFSET 0x8000  #define MC_PC pc diff --git a/arch/mips64/reloc.h b/arch/mips64/reloc.h index fdb5edc9..145d8b0b 100644 --- a/arch/mips64/reloc.h +++ b/arch/mips64/reloc.h @@ -38,6 +38,7 @@  #define NEED_MIPS_GOT_RELOCS 1  #define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP +#define DT_DEBUG_INDIRECT_REL DT_MIPS_RLD_MAP_REL  #define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))  #define CRTJMP(pc,sp) __asm__ __volatile__( \ diff --git a/arch/mipsn32/bits/posix.h b/arch/mipsn32/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/mipsn32/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/mipsn32/bits/reg.h b/arch/mipsn32/bits/reg.h index a3f63acc..16178dd3 100644 --- a/arch/mipsn32/bits/reg.h +++ b/arch/mipsn32/bits/reg.h @@ -1,6 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 -  #define EF_R0 0  #define EF_R1 1  #define EF_R2 2 diff --git a/arch/mipsn32/bits/signal.h b/arch/mipsn32/bits/signal.h index 4f91c9fc..ffec7fd0 100644 --- a/arch/mipsn32/bits/signal.h +++ b/arch/mipsn32/bits/signal.h @@ -85,7 +85,6 @@ typedef struct __ucontext {  #define SA_RESTART    0x10000000  #define SA_NODEFER    0x40000000  #define SA_RESETHAND  0x80000000 -#define SA_RESTORER   0x04000000  #undef SIG_BLOCK  #undef SIG_UNBLOCK diff --git a/arch/mipsn32/bits/stdint.h b/arch/mipsn32/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/mipsn32/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/mipsn32/bits/syscall.h.in b/arch/mipsn32/bits/syscall.h.in index 2ad48d10..9a4bd301 100644 --- a/arch/mipsn32/bits/syscall.h.in +++ b/arch/mipsn32/bits/syscall.h.in @@ -362,4 +362,19 @@  #define __NR_fspick		6433  #define __NR_pidfd_open		6434  #define __NR_clone3		6435 +#define __NR_close_range	6436 +#define __NR_openat2		6437 +#define __NR_pidfd_getfd	6438 +#define __NR_faccessat2		6439 +#define __NR_process_madvise	6440 +#define __NR_epoll_pwait2	6441 +#define __NR_mount_setattr	6442 +#define __NR_landlock_create_ruleset	6444 +#define __NR_landlock_add_rule	6445 +#define __NR_landlock_restrict_self	6446 +#define __NR_process_mrelease	6448 +#define __NR_futex_waitv	6449 +#define __NR_set_mempolicy_home_node	6450 +#define __NR_cachestat		6451 +#define __NR_fchmodat2		6452 diff --git a/arch/mipsn32/ksigaction.h b/arch/mipsn32/ksigaction.h index b565f1fc..485abf75 100644 --- a/arch/mipsn32/ksigaction.h +++ b/arch/mipsn32/ksigaction.h @@ -4,7 +4,7 @@ struct k_sigaction {  	unsigned flags;  	void (*handler)(int);  	unsigned long mask[4]; -	void (*restorer)(); +	void *unused;  };  hidden void __restore(), __restore_rt(); diff --git a/arch/mipsn32/pthread_arch.h b/arch/mipsn32/pthread_arch.h index 1e7839ea..c45347ab 100644 --- a/arch/mipsn32/pthread_arch.h +++ b/arch/mipsn32/pthread_arch.h @@ -1,19 +1,19 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  {  #if __mips_isa_rev < 2 -	register char *tp __asm__("$3"); +	register uintptr_t tp __asm__("$3");  	__asm__ (".word 0x7c03e83b" : "=r" (tp) );  #else -	char *tp; +	uintptr_t tp;  	__asm__ ("rdhwr %0, $29" : "=r" (tp) );  #endif -	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) +#define TP_OFFSET 0x7000  #define DTP_OFFSET 0x8000  #define MC_PC pc diff --git a/arch/mipsn32/reloc.h b/arch/mipsn32/reloc.h index 47c6e591..bf00bd6a 100644 --- a/arch/mipsn32/reloc.h +++ b/arch/mipsn32/reloc.h @@ -29,6 +29,7 @@  #define NEED_MIPS_GOT_RELOCS 1  #define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP +#define DT_DEBUG_INDIRECT_REL DT_MIPS_RLD_MAP_REL  #define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))  #define CRTJMP(pc,sp) __asm__ __volatile__( \ diff --git a/arch/or1k/bits/posix.h b/arch/or1k/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/or1k/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/or1k/bits/reg.h b/arch/or1k/bits/reg.h deleted file mode 100644 index 0c7bffca..00000000 --- a/arch/or1k/bits/reg.h +++ /dev/null @@ -1,3 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 32 -/* FIXME */ diff --git a/arch/or1k/bits/signal.h b/arch/or1k/bits/signal.h index be576d1d..c45be676 100644 --- a/arch/or1k/bits/signal.h +++ b/arch/or1k/bits/signal.h @@ -43,7 +43,6 @@ typedef struct __ucontext {  #define SA_RESTART    0x10000000  #define SA_NODEFER    0x40000000  #define SA_RESETHAND  0x80000000 -#define SA_RESTORER   0x04000000  #endif diff --git a/arch/or1k/bits/stdint.h b/arch/or1k/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/or1k/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/or1k/bits/syscall.h.in b/arch/or1k/bits/syscall.h.in index e9c925e4..00812bf8 100644 --- a/arch/or1k/bits/syscall.h.in +++ b/arch/or1k/bits/syscall.h.in @@ -311,4 +311,19 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/or1k/pthread_arch.h b/arch/or1k/pthread_arch.h index 1b806f89..f75ea7e4 100644 --- a/arch/or1k/pthread_arch.h +++ b/arch/or1k/pthread_arch.h @@ -1,18 +1,16 @@ -/* or1k use variant I, but with the twist that tp points to the end of TCB */ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  {  #ifdef __clang__ -	char *tp; +	uintptr_t tp;  	__asm__ ("l.ori %0, r10, 0" : "=r" (tp) );  #else -	register char *tp __asm__("r10"); +	register uintptr_t tp __asm__("r10");  	__asm__ ("" : "=r" (tp) );  #endif -	return (struct pthread *) (tp - sizeof(struct pthread)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread))  #define MC_PC regs.pc diff --git a/arch/powerpc/bits/fenv.h b/arch/powerpc/bits/fenv.h index c5a3e5c5..5b15c69a 100644 --- a/arch/powerpc/bits/fenv.h +++ b/arch/powerpc/bits/fenv.h @@ -1,4 +1,4 @@ -#ifdef _SOFT_FLOAT +#if defined(_SOFT_FLOAT) || defined(__NO_FPRS__)  #define FE_ALL_EXCEPT 0  #define FE_TONEAREST  0  #else diff --git a/arch/powerpc/bits/hwcap.h b/arch/powerpc/bits/hwcap.h index 803de9b5..12981623 100644 --- a/arch/powerpc/bits/hwcap.h +++ b/arch/powerpc/bits/hwcap.h @@ -41,3 +41,5 @@  #define PPC_FEATURE2_DARN		0x00200000  #define PPC_FEATURE2_SCV		0x00100000  #define PPC_FEATURE2_HTM_NO_SUSPEND	0x00080000 +#define PPC_FEATURE2_ARCH_3_1		0x00040000 +#define PPC_FEATURE2_MMA		0x00020000 diff --git a/arch/powerpc/bits/posix.h b/arch/powerpc/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/powerpc/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/powerpc/bits/reg.h b/arch/powerpc/bits/reg.h deleted file mode 100644 index 0c7bffca..00000000 --- a/arch/powerpc/bits/reg.h +++ /dev/null @@ -1,3 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 32 -/* FIXME */ diff --git a/arch/powerpc/bits/shm.h b/arch/powerpc/bits/shm.h index fb1d4020..7f1ca17e 100644 --- a/arch/powerpc/bits/shm.h +++ b/arch/powerpc/bits/shm.h @@ -8,11 +8,11 @@ struct shmid_ds {  	unsigned long __shm_dtime_lo;  	unsigned long __shm_ctime_hi;  	unsigned long __shm_ctime_lo; +	unsigned long __pad1;  	size_t shm_segsz;  	pid_t shm_cpid;  	pid_t shm_lpid;  	unsigned long shm_nattch; -	unsigned long __pad1;  	unsigned long __pad2;  	time_t shm_atime;  	time_t shm_dtime; diff --git a/arch/powerpc/bits/stdint.h b/arch/powerpc/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/powerpc/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/powerpc/bits/syscall.h.in b/arch/powerpc/bits/syscall.h.in index 8d4f79b5..ea95f3ed 100644 --- a/arch/powerpc/bits/syscall.h.in +++ b/arch/powerpc/bits/syscall.h.in @@ -415,4 +415,19 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/powerpc/pthread_arch.h b/arch/powerpc/pthread_arch.h index ae0f28d6..42e88b07 100644 --- a/arch/powerpc/pthread_arch.h +++ b/arch/powerpc/pthread_arch.h @@ -1,18 +1,16 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	register char *tp __asm__("r2"); +	register uintptr_t tp __asm__("r2");  	__asm__ ("" : "=r" (tp) ); -	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) +#define TP_OFFSET 0x7000  #define DTP_OFFSET 0x8000  // the kernel calls the ip "nip", it's the first saved value after the 32  // GPRs.  #define MC_PC gregs[32] - -#define CANARY canary_at_end diff --git a/arch/powerpc/reloc.h b/arch/powerpc/reloc.h index 527b6b7c..fdfbf827 100644 --- a/arch/powerpc/reloc.h +++ b/arch/powerpc/reloc.h @@ -1,4 +1,4 @@ -#ifdef _SOFT_FLOAT +#if defined(_SOFT_FLOAT) || defined(__NO_FPRS__)  #define FP_SUFFIX "-sf"  #else  #define FP_SUFFIX "" diff --git a/arch/powerpc/syscall_arch.h b/arch/powerpc/syscall_arch.h index ede97c1c..fe893af4 100644 --- a/arch/powerpc/syscall_arch.h +++ b/arch/powerpc/syscall_arch.h @@ -9,7 +9,7 @@ static inline long __syscall0(long n)  	register long r3 __asm__("r3");  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "=r"(r3) -	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -19,7 +19,7 @@ static inline long __syscall1(long n, long a)  	register long r3 __asm__("r3") = a;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3) -	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -30,7 +30,7 @@ static inline long __syscall2(long n, long a, long b)  	register long r4 __asm__("r4") = b;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4) -	:: "memory", "cr0", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -42,7 +42,7 @@ static inline long __syscall3(long n, long a, long b, long c)  	register long r5 __asm__("r5") = c;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5) -	:: "memory", "cr0", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -55,7 +55,7 @@ static inline long __syscall4(long n, long a, long b, long c, long d)  	register long r6 __asm__("r6") = d;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6) -	:: "memory", "cr0", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -69,7 +69,7 @@ static inline long __syscall5(long n, long a, long b, long c, long d, long e)  	register long r7 __asm__("r7") = e;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7) -	:: "memory", "cr0", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -84,7 +84,7 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  	register long r8 __asm__("r8") = f;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7), "+r"(r8) -	:: "memory", "cr0", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -92,3 +92,9 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  #define SO_RCVTIMEO_OLD  18  #define SO_SNDTIMEO_OLD  19 + +#define VDSO_USEFUL +#define VDSO_CGT32_SYM "__kernel_clock_gettime" +#define VDSO_CGT32_VER "LINUX_2.6.15" +#define VDSO_CGT_SYM "__kernel_clock_gettime64" +#define VDSO_CGT_VER "LINUX_5.11" diff --git a/arch/powerpc64/bits/hwcap.h b/arch/powerpc64/bits/hwcap.h index 803de9b5..12981623 100644 --- a/arch/powerpc64/bits/hwcap.h +++ b/arch/powerpc64/bits/hwcap.h @@ -41,3 +41,5 @@  #define PPC_FEATURE2_DARN		0x00200000  #define PPC_FEATURE2_SCV		0x00100000  #define PPC_FEATURE2_HTM_NO_SUSPEND	0x00080000 +#define PPC_FEATURE2_ARCH_3_1		0x00040000 +#define PPC_FEATURE2_MMA		0x00020000 diff --git a/arch/powerpc64/bits/posix.h b/arch/powerpc64/bits/posix.h deleted file mode 100644 index c37b94c1..00000000 --- a/arch/powerpc64/bits/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define _POSIX_V6_LP64_OFF64  1 -#define _POSIX_V7_LP64_OFF64  1 diff --git a/arch/powerpc64/bits/reg.h b/arch/powerpc64/bits/reg.h deleted file mode 100644 index 49382c8f..00000000 --- a/arch/powerpc64/bits/reg.h +++ /dev/null @@ -1,3 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 -/* FIXME */ diff --git a/arch/powerpc64/bits/stdint.h b/arch/powerpc64/bits/stdint.h deleted file mode 100644 index 1bb147f2..00000000 --- a/arch/powerpc64/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      INT64_MIN -#define INTPTR_MAX      INT64_MAX -#define UINTPTR_MAX     UINT64_MAX -#define PTRDIFF_MIN     INT64_MIN -#define PTRDIFF_MAX     INT64_MAX -#define SIZE_MAX        UINT64_MAX diff --git a/arch/powerpc64/bits/syscall.h.in b/arch/powerpc64/bits/syscall.h.in index b935864c..43551079 100644 --- a/arch/powerpc64/bits/syscall.h.in +++ b/arch/powerpc64/bits/syscall.h.in @@ -387,4 +387,19 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/powerpc64/pthread_arch.h b/arch/powerpc64/pthread_arch.h index 79c3ecd8..1b7b9079 100644 --- a/arch/powerpc64/pthread_arch.h +++ b/arch/powerpc64/pthread_arch.h @@ -1,18 +1,16 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	register char *tp __asm__("r13"); +	register uintptr_t tp __asm__("r13");  	__asm__ ("" : "=r" (tp) ); -	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000) +#define TP_OFFSET 0x7000  #define DTP_OFFSET 0x8000  // the kernel calls the ip "nip", it's the first saved value after the 32  // GPRs.  #define MC_PC gp_regs[32] - -#define CANARY canary_at_end diff --git a/arch/powerpc64/syscall_arch.h b/arch/powerpc64/syscall_arch.h index 76b4e335..4c5d3ae9 100644 --- a/arch/powerpc64/syscall_arch.h +++ b/arch/powerpc64/syscall_arch.h @@ -7,7 +7,7 @@ static inline long __syscall0(long n)  	register long r3 __asm__("r3");  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "=r"(r3) -	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -17,7 +17,7 @@ static inline long __syscall1(long n, long a)  	register long r3 __asm__("r3") = a;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3) -	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -28,7 +28,7 @@ static inline long __syscall2(long n, long a, long b)  	register long r4 __asm__("r4") = b;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4) -	:: "memory", "cr0", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -40,7 +40,7 @@ static inline long __syscall3(long n, long a, long b, long c)  	register long r5 __asm__("r5") = c;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5) -	:: "memory", "cr0", "r6", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r6", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -53,7 +53,7 @@ static inline long __syscall4(long n, long a, long b, long c, long d)  	register long r6 __asm__("r6") = d;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6) -	:: "memory", "cr0", "r7", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r7", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -67,7 +67,7 @@ static inline long __syscall5(long n, long a, long b, long c, long d, long e)  	register long r7 __asm__("r7") = e;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7) -	:: "memory", "cr0", "r8", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r8", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  } @@ -82,9 +82,13 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  	register long r8 __asm__("r8") = f;  	__asm__ __volatile__("sc ; bns+ 1f ; neg %1, %1 ; 1:"  	: "+r"(r0), "+r"(r3), "+r"(r4), "+r"(r5), "+r"(r6), "+r"(r7), "+r"(r8) -	:: "memory", "cr0", "r9", "r10", "r11", "r12"); +	:: "memory", "cr0", "r9", "r10", "r11", "r12", "ctr", "xer");  	return r3;  }  #define SO_RCVTIMEO_OLD  18  #define SO_SNDTIMEO_OLD  19 + +#define VDSO_USEFUL +#define VDSO_CGT_SYM "__kernel_clock_gettime" +#define VDSO_CGT_VER "LINUX_2.6.15" diff --git a/arch/riscv32/atomic_arch.h b/arch/riscv32/atomic_arch.h new file mode 100644 index 00000000..4d418f63 --- /dev/null +++ b/arch/riscv32/atomic_arch.h @@ -0,0 +1,21 @@ +#define a_barrier a_barrier +static inline void a_barrier() +{ +	__asm__ __volatile__ ("fence rw,rw" : : : "memory"); +} + +#define a_cas a_cas +static inline int a_cas(volatile int *p, int t, int s) +{ +	int old, tmp; +	__asm__ __volatile__ ( +		"\n1:	lr.w.aqrl %0, (%2)\n" +		"	bne %0, %3, 1f\n" +		"	sc.w.aqrl %1, %4, (%2)\n" +		"	bnez %1, 1b\n" +		"1:" +		: "=&r"(old), "=&r"(tmp) +		: "r"(p), "r"((long)t), "r"((long)s) +		: "memory"); +	return old; +} diff --git a/arch/riscv32/bits/alltypes.h.in b/arch/riscv32/bits/alltypes.h.in new file mode 100644 index 00000000..e2b6129e --- /dev/null +++ b/arch/riscv32/bits/alltypes.h.in @@ -0,0 +1,18 @@ +#define _Addr int +#define _Int64 long long +#define _Reg int + +#define __BYTE_ORDER 1234 +#define __LONG_MAX 0x7fffffffL + +#ifndef __cplusplus +TYPEDEF int wchar_t; +#endif + +TYPEDEF int blksize_t; +TYPEDEF unsigned int nlink_t; + +TYPEDEF float float_t; +TYPEDEF double double_t; + +TYPEDEF struct { long long __ll; long double __ld; } max_align_t; diff --git a/arch/riscv32/bits/fenv.h b/arch/riscv32/bits/fenv.h new file mode 100644 index 00000000..806ec40f --- /dev/null +++ b/arch/riscv32/bits/fenv.h @@ -0,0 +1,17 @@ +#define FE_INVALID      16 +#define FE_DIVBYZERO    8 +#define FE_OVERFLOW     4 +#define FE_UNDERFLOW    2 +#define FE_INEXACT      1 + +#define FE_ALL_EXCEPT   31 + +#define FE_TONEAREST    0 +#define FE_DOWNWARD     2 +#define FE_UPWARD       3 +#define FE_TOWARDZERO   1 + +typedef unsigned int fexcept_t; +typedef unsigned int fenv_t; + +#define FE_DFL_ENV      ((const fenv_t *) -1) diff --git a/arch/riscv32/bits/float.h b/arch/riscv32/bits/float.h new file mode 100644 index 00000000..719c7908 --- /dev/null +++ b/arch/riscv32/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_EVAL_METHOD 0 + +#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L +#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L +#define LDBL_MAX 1.18973149535723176508575932662800702e+4932L +#define LDBL_EPSILON 1.92592994438723585305597794258492732e-34L + +#define LDBL_MANT_DIG 113 +#define LDBL_MIN_EXP (-16381) +#define LDBL_MAX_EXP 16384 + +#define LDBL_DIG 33 +#define LDBL_MIN_10_EXP (-4931) +#define LDBL_MAX_10_EXP 4932 + +#define DECIMAL_DIG 36 diff --git a/arch/riscv32/bits/ipcstat.h b/arch/riscv32/bits/ipcstat.h new file mode 100644 index 00000000..4f4fcb0c --- /dev/null +++ b/arch/riscv32/bits/ipcstat.h @@ -0,0 +1 @@ +#define IPC_STAT 0x102 diff --git a/arch/riscv32/bits/msg.h b/arch/riscv32/bits/msg.h new file mode 100644 index 00000000..7bbbb2bf --- /dev/null +++ b/arch/riscv32/bits/msg.h @@ -0,0 +1,18 @@ +struct msqid_ds { +	struct ipc_perm msg_perm; +	unsigned long __msg_stime_lo; +	unsigned long __msg_stime_hi; +	unsigned long __msg_rtime_lo; +	unsigned long __msg_rtime_hi; +	unsigned long __msg_ctime_lo; +	unsigned long __msg_ctime_hi; +	unsigned long msg_cbytes; +	msgqnum_t msg_qnum; +	msglen_t msg_qbytes; +	pid_t msg_lspid; +	pid_t msg_lrpid; +	unsigned long __unused[2]; +	time_t msg_stime; +	time_t msg_rtime; +	time_t msg_ctime; +}; diff --git a/arch/riscv32/bits/sem.h b/arch/riscv32/bits/sem.h new file mode 100644 index 00000000..544e3d2a --- /dev/null +++ b/arch/riscv32/bits/sem.h @@ -0,0 +1,18 @@ +struct semid_ds { +	struct ipc_perm sem_perm; +	unsigned long __sem_otime_lo; +	unsigned long __sem_otime_hi; +	unsigned long __sem_ctime_lo; +	unsigned long __sem_ctime_hi; +#if __BYTE_ORDER == __LITTLE_ENDIAN +	unsigned short sem_nsems; +	char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +#else +	char __sem_nsems_pad[sizeof(long)-sizeof(short)]; +	unsigned short sem_nsems; +#endif +	long __unused3; +	long __unused4; +	time_t sem_otime; +	time_t sem_ctime; +}; diff --git a/arch/riscv32/bits/setjmp.h b/arch/riscv32/bits/setjmp.h new file mode 100644 index 00000000..51e96276 --- /dev/null +++ b/arch/riscv32/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long long __jmp_buf[19]; diff --git a/arch/riscv32/bits/shm.h b/arch/riscv32/bits/shm.h new file mode 100644 index 00000000..725fb469 --- /dev/null +++ b/arch/riscv32/bits/shm.h @@ -0,0 +1,31 @@ +#define SHMLBA 4096 + +struct shmid_ds { +	struct ipc_perm shm_perm; +	size_t shm_segsz; +	unsigned long __shm_atime_lo; +	unsigned long __shm_atime_hi; +	unsigned long __shm_dtime_lo; +	unsigned long __shm_dtime_hi; +	unsigned long __shm_ctime_lo; +	unsigned long __shm_ctime_hi; +	pid_t shm_cpid; +	pid_t shm_lpid; +	unsigned long shm_nattch; +	unsigned long __pad1; +	unsigned long __pad2; +	unsigned long __pad3; +	time_t shm_atime; +	time_t shm_dtime; +	time_t shm_ctime; +}; + +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/riscv32/bits/signal.h b/arch/riscv32/bits/signal.h new file mode 100644 index 00000000..50b66ec9 --- /dev/null +++ b/arch/riscv32/bits/signal.h @@ -0,0 +1,120 @@ +#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 unsigned long __riscv_mc_gp_state[32]; + +struct __riscv_mc_f_ext_state { +	unsigned int __f[32]; +	unsigned int __fcsr; +}; + +struct __riscv_mc_d_ext_state { +	unsigned long long __f[32]; +	unsigned int __fcsr; +}; + +struct __riscv_mc_q_ext_state { +	unsigned long long __f[64] __attribute__((__aligned__(16))); +	unsigned int __fcsr; +	unsigned int __reserved[3]; +}; + +union __riscv_mc_fp_state { +	struct __riscv_mc_f_ext_state __f; +	struct __riscv_mc_d_ext_state __d; +	struct __riscv_mc_q_ext_state __q; +}; + +typedef struct mcontext_t { +	__riscv_mc_gp_state __gregs; +	union __riscv_mc_fp_state __fpregs; +} mcontext_t; + +#if defined(_GNU_SOURCE) +#define REG_PC 0 +#define REG_RA 1 +#define REG_SP 2 +#define REG_TP 4 +#define REG_S0 8 +#define REG_S1 9 +#define REG_A0 10 +#define REG_S2 18 +#endif + +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) +typedef unsigned long greg_t; +typedef unsigned long gregset_t[32]; +typedef union __riscv_mc_fp_state fpregset_t; +struct sigcontext { +	gregset_t gregs; +	fpregset_t fpregs; +}; +#endif + +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; +	sigset_t uc_sigmask; +	mcontext_t uc_mcontext; +} 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   SIGIO +#define SIGPWR    30 +#define SIGSYS    31 +#define SIGUNUSED SIGSYS + +#define _NSIG     65 diff --git a/arch/riscv32/bits/syscall.h.in b/arch/riscv32/bits/syscall.h.in new file mode 100644 index 00000000..9228d840 --- /dev/null +++ b/arch/riscv32/bits/syscall.h.in @@ -0,0 +1,300 @@ +#define __NR_io_setup 0 +#define __NR_io_destroy 1 +#define __NR_io_submit 2 +#define __NR_io_cancel 3 +#define __NR_setxattr 5 +#define __NR_lsetxattr 6 +#define __NR_fsetxattr 7 +#define __NR_getxattr 8 +#define __NR_lgetxattr 9 +#define __NR_fgetxattr 10 +#define __NR_listxattr 11 +#define __NR_llistxattr 12 +#define __NR_flistxattr 13 +#define __NR_removexattr 14 +#define __NR_lremovexattr 15 +#define __NR_fremovexattr 16 +#define __NR_getcwd 17 +#define __NR_lookup_dcookie 18 +#define __NR_eventfd2 19 +#define __NR_epoll_create1 20 +#define __NR_epoll_ctl 21 +#define __NR_epoll_pwait 22 +#define __NR_dup 23 +#define __NR_dup3 24 +#define __NR_fcntl64 25 +#define __NR_inotify_init1 26 +#define __NR_inotify_add_watch 27 +#define __NR_inotify_rm_watch 28 +#define __NR_ioctl 29 +#define __NR_ioprio_set 30 +#define __NR_ioprio_get 31 +#define __NR_flock 32 +#define __NR_mknodat 33 +#define __NR_mkdirat 34 +#define __NR_unlinkat 35 +#define __NR_symlinkat 36 +#define __NR_linkat 37 +#define __NR_umount2 39 +#define __NR_mount 40 +#define __NR_pivot_root 41 +#define __NR_nfsservctl 42 +#define __NR_statfs64 43 +#define __NR_fstatfs64 44 +#define __NR_truncate64 45 +#define __NR_ftruncate64 46 +#define __NR_fallocate 47 +#define __NR_faccessat 48 +#define __NR_chdir 49 +#define __NR_fchdir 50 +#define __NR_chroot 51 +#define __NR_fchmod 52 +#define __NR_fchmodat 53 +#define __NR_fchownat 54 +#define __NR_fchown 55 +#define __NR_openat 56 +#define __NR_close 57 +#define __NR_vhangup 58 +#define __NR_pipe2 59 +#define __NR_quotactl 60 +#define __NR_getdents64 61 +#define __NR__llseek 62 +#define __NR_read 63 +#define __NR_write 64 +#define __NR_readv 65 +#define __NR_writev 66 +#define __NR_pread64 67 +#define __NR_pwrite64 68 +#define __NR_preadv 69 +#define __NR_pwritev 70 +#define __NR_sendfile64 71 +#define __NR_signalfd4 74 +#define __NR_vmsplice 75 +#define __NR_splice 76 +#define __NR_tee 77 +#define __NR_readlinkat 78 +#define __NR_sync 81 +#define __NR_fsync 82 +#define __NR_fdatasync 83 +#define __NR_sync_file_range 84 +#define __NR_timerfd_create 85 +#define __NR_acct 89 +#define __NR_capget 90 +#define __NR_capset 91 +#define __NR_personality 92 +#define __NR_exit 93 +#define __NR_exit_group 94 +#define __NR_waitid 95 +#define __NR_set_tid_address 96 +#define __NR_unshare 97 +#define __NR_set_robust_list 99 +#define __NR_get_robust_list 100 +#define __NR_nanosleep 101 +#define __NR_getitimer 102 +#define __NR_setitimer 103 +#define __NR_kexec_load 104 +#define __NR_init_module 105 +#define __NR_delete_module 106 +#define __NR_timer_create 107 +#define __NR_timer_getoverrun 109 +#define __NR_timer_delete 111 +#define __NR_syslog 116 +#define __NR_ptrace 117 +#define __NR_sched_setparam 118 +#define __NR_sched_setscheduler 119 +#define __NR_sched_getscheduler 120 +#define __NR_sched_getparam 121 +#define __NR_sched_setaffinity 122 +#define __NR_sched_getaffinity 123 +#define __NR_sched_yield 124 +#define __NR_sched_get_priority_max 125 +#define __NR_sched_get_priority_min 126 +#define __NR_restart_syscall 128 +#define __NR_kill 129 +#define __NR_tkill 130 +#define __NR_tgkill 131 +#define __NR_sigaltstack 132 +#define __NR_rt_sigsuspend 133 +#define __NR_rt_sigaction 134 +#define __NR_rt_sigprocmask 135 +#define __NR_rt_sigpending 136 +#define __NR_rt_sigqueueinfo 138 +#define __NR_rt_sigreturn 139 +#define __NR_setpriority 140 +#define __NR_getpriority 141 +#define __NR_reboot 142 +#define __NR_setregid 143 +#define __NR_setgid 144 +#define __NR_setreuid 145 +#define __NR_setuid 146 +#define __NR_setresuid 147 +#define __NR_getresuid 148 +#define __NR_setresgid 149 +#define __NR_getresgid 150 +#define __NR_setfsuid 151 +#define __NR_setfsgid 152 +#define __NR_times 153 +#define __NR_setpgid 154 +#define __NR_getpgid 155 +#define __NR_getsid 156 +#define __NR_setsid 157 +#define __NR_getgroups 158 +#define __NR_setgroups 159 +#define __NR_uname 160 +#define __NR_sethostname 161 +#define __NR_setdomainname 162 +#define __NR_getrusage 165 +#define __NR_umask 166 +#define __NR_prctl 167 +#define __NR_getcpu 168 +#define __NR_getpid 172 +#define __NR_getppid 173 +#define __NR_getuid 174 +#define __NR_geteuid 175 +#define __NR_getgid 176 +#define __NR_getegid 177 +#define __NR_gettid 178 +#define __NR_sysinfo 179 +#define __NR_mq_open 180 +#define __NR_mq_unlink 181 +#define __NR_mq_notify 184 +#define __NR_mq_getsetattr 185 +#define __NR_msgget 186 +#define __NR_msgctl 187 +#define __NR_msgrcv 188 +#define __NR_msgsnd 189 +#define __NR_semget 190 +#define __NR_semctl 191 +#define __NR_semop 193 +#define __NR_shmget 194 +#define __NR_shmctl 195 +#define __NR_shmat 196 +#define __NR_shmdt 197 +#define __NR_socket 198 +#define __NR_socketpair 199 +#define __NR_bind 200 +#define __NR_listen 201 +#define __NR_accept 202 +#define __NR_connect 203 +#define __NR_getsockname 204 +#define __NR_getpeername 205 +#define __NR_sendto 206 +#define __NR_recvfrom 207 +#define __NR_setsockopt 208 +#define __NR_getsockopt 209 +#define __NR_shutdown 210 +#define __NR_sendmsg 211 +#define __NR_recvmsg 212 +#define __NR_readahead 213 +#define __NR_brk 214 +#define __NR_munmap 215 +#define __NR_mremap 216 +#define __NR_add_key 217 +#define __NR_request_key 218 +#define __NR_keyctl 219 +#define __NR_clone 220 +#define __NR_execve 221 +#define __NR_mmap2 222 +#define __NR_fadvise64_64 223 +#define __NR_swapon 224 +#define __NR_swapoff 225 +#define __NR_mprotect 226 +#define __NR_msync 227 +#define __NR_mlock 228 +#define __NR_munlock 229 +#define __NR_mlockall 230 +#define __NR_munlockall 231 +#define __NR_mincore 232 +#define __NR_madvise 233 +#define __NR_remap_file_pages 234 +#define __NR_mbind 235 +#define __NR_get_mempolicy 236 +#define __NR_set_mempolicy 237 +#define __NR_migrate_pages 238 +#define __NR_move_pages 239 +#define __NR_rt_tgsigqueueinfo 240 +#define __NR_perf_event_open 241 +#define __NR_accept4 242 +#define __NR_arch_specific_syscall 244 +#define __NR_prlimit64 261 +#define __NR_fanotify_init 262 +#define __NR_fanotify_mark 263 +#define __NR_name_to_handle_at 264 +#define __NR_open_by_handle_at 265 +#define __NR_syncfs 267 +#define __NR_setns 268 +#define __NR_sendmmsg 269 +#define __NR_process_vm_readv 270 +#define __NR_process_vm_writev 271 +#define __NR_kcmp 272 +#define __NR_finit_module 273 +#define __NR_sched_setattr 274 +#define __NR_sched_getattr 275 +#define __NR_renameat2 276 +#define __NR_seccomp 277 +#define __NR_getrandom 278 +#define __NR_memfd_create 279 +#define __NR_bpf 280 +#define __NR_execveat 281 +#define __NR_userfaultfd 282 +#define __NR_membarrier 283 +#define __NR_mlock2 284 +#define __NR_copy_file_range 285 +#define __NR_preadv2 286 +#define __NR_pwritev2 287 +#define __NR_pkey_mprotect 288 +#define __NR_pkey_alloc 289 +#define __NR_pkey_free 290 +#define __NR_statx 291 +#define __NR_rseq 293 +#define __NR_kexec_file_load 294 +#define __NR_clock_gettime64		403 +#define __NR_clock_settime64		404 +#define __NR_clock_adjtime64		405 +#define __NR_clock_getres_time64	406 +#define __NR_clock_nanosleep_time64	407 +#define __NR_timer_gettime64		408 +#define __NR_timer_settime64		409 +#define __NR_timerfd_gettime64		410 +#define __NR_timerfd_settime64		411 +#define __NR_utimensat_time64		412 +#define __NR_pselect6_time64		413 +#define __NR_ppoll_time64		414 +#define __NR_io_pgetevents_time64	416 +#define __NR_recvmmsg_time64		417 +#define __NR_mq_timedsend_time64	418 +#define __NR_mq_timedreceive_time64	419 +#define __NR_semtimedop_time64		420 +#define __NR_rt_sigtimedwait_time64	421 +#define __NR_futex_time64		422 +#define __NR_sched_rr_get_interval_time64 423 +#define __NR_pidfd_send_signal 424 +#define __NR_io_uring_setup 425 +#define __NR_io_uring_enter 426 +#define __NR_io_uring_register 427 +#define __NR_open_tree		428 +#define __NR_move_mount		429 +#define __NR_fsopen		430 +#define __NR_fsconfig		431 +#define __NR_fsmount		432 +#define __NR_fspick		433 +#define __NR_pidfd_open		434 +#define __NR_clone3		435 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 +#define __NR_futex __NR_futex_time64 + +#define __NR_sysriscv __NR_arch_specific_syscall +#define __NR_riscv_flush_icache (__NR_sysriscv + 15) diff --git a/arch/riscv32/bits/user.h b/arch/riscv32/bits/user.h new file mode 100644 index 00000000..0d37de0b --- /dev/null +++ b/arch/riscv32/bits/user.h @@ -0,0 +1,6 @@ +#include <signal.h> + +#define ELF_NGREG 32 +#define ELF_NFPREG 33 +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; +typedef union __riscv_mc_fp_state elf_fpregset_t; diff --git a/arch/riscv32/crt_arch.h b/arch/riscv32/crt_arch.h new file mode 100644 index 00000000..6b93fcfd --- /dev/null +++ b/arch/riscv32/crt_arch.h @@ -0,0 +1,19 @@ +__asm__( +".section .sdata,\"aw\"\n" +".text\n" +".global " START "\n" +".type " START ",%function\n" +START ":\n" +".weak __global_pointer$\n" +".hidden __global_pointer$\n" +".option push\n" +".option norelax\n\t" +"lla gp, __global_pointer$\n" +".option pop\n\t" +"mv a0, sp\n" +".weak _DYNAMIC\n" +".hidden _DYNAMIC\n\t" +"lla a1, _DYNAMIC\n\t" +"andi sp, sp, -16\n\t" +"tail " START "_c" +); diff --git a/arch/riscv32/kstat.h b/arch/riscv32/kstat.h new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/arch/riscv32/kstat.h diff --git a/arch/riscv32/pthread_arch.h b/arch/riscv32/pthread_arch.h new file mode 100644 index 00000000..a20d7fba --- /dev/null +++ b/arch/riscv32/pthread_arch.h @@ -0,0 +1,13 @@ +static inline uintptr_t __get_tp() +{ +	uintptr_t tp; +	__asm__ __volatile__("mv %0, tp" : "=r"(tp)); +	return tp; +} + +#define TLS_ABOVE_TP +#define GAP_ABOVE_TP 0 + +#define DTP_OFFSET 0x800 + +#define MC_PC __gregs[0] diff --git a/arch/riscv32/reloc.h b/arch/riscv32/reloc.h new file mode 100644 index 00000000..59d15f17 --- /dev/null +++ b/arch/riscv32/reloc.h @@ -0,0 +1,22 @@ +#if defined __riscv_float_abi_soft +#define RISCV_FP_SUFFIX "-sf" +#elif defined __riscv_float_abi_single +#define RISCV_FP_SUFFIX "-sp" +#elif defined __riscv_float_abi_double +#define RISCV_FP_SUFFIX "" +#endif + +#define LDSO_ARCH "riscv32" RISCV_FP_SUFFIX + +#define TPOFF_K 0 + +#define REL_SYMBOLIC    R_RISCV_32 +#define REL_PLT         R_RISCV_JUMP_SLOT +#define REL_RELATIVE    R_RISCV_RELATIVE +#define REL_COPY        R_RISCV_COPY +#define REL_DTPMOD      R_RISCV_TLS_DTPMOD32 +#define REL_DTPOFF      R_RISCV_TLS_DTPREL32 +#define REL_TPOFF       R_RISCV_TLS_TPREL32 + +#define CRTJMP(pc,sp) __asm__ __volatile__( \ +	"mv sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) diff --git a/arch/riscv32/syscall_arch.h b/arch/riscv32/syscall_arch.h new file mode 100644 index 00000000..70d2773f --- /dev/null +++ b/arch/riscv32/syscall_arch.h @@ -0,0 +1,79 @@ +#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)) + +#define __asm_syscall(...) \ +	__asm__ __volatile__ ("ecall\n\t" \ +	: "=r"(a0) : __VA_ARGS__ : "memory"); \ +	return a0; \ + +static inline long __syscall0(long n) +{ +	register long a7 __asm__("a7") = n; +	register long a0 __asm__("a0"); +	__asm_syscall("r"(a7)) +} + +static inline long __syscall1(long n, long a) +{ +	register long a7 __asm__("a7") = n; +	register long a0 __asm__("a0") = a; +	__asm_syscall("r"(a7), "0"(a0)) +} + +static inline long __syscall2(long n, long a, long b) +{ +	register long a7 __asm__("a7") = n; +	register long a0 __asm__("a0") = a; +	register long a1 __asm__("a1") = b; +	__asm_syscall("r"(a7), "0"(a0), "r"(a1)) +} + +static inline long __syscall3(long n, long a, long b, long c) +{ +	register long a7 __asm__("a7") = n; +	register long a0 __asm__("a0") = a; +	register long a1 __asm__("a1") = b; +	register long a2 __asm__("a2") = c; +	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2)) +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ +	register long a7 __asm__("a7") = n; +	register long a0 __asm__("a0") = a; +	register long a1 __asm__("a1") = b; +	register long a2 __asm__("a2") = c; +	register long a3 __asm__("a3") = d; +	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3)) +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ +	register long a7 __asm__("a7") = n; +	register long a0 __asm__("a0") = a; +	register long a1 __asm__("a1") = b; +	register long a2 __asm__("a2") = c; +	register long a3 __asm__("a3") = d; +	register long a4 __asm__("a4") = e; +	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4)) +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ +	register long a7 __asm__("a7") = n; +	register long a0 __asm__("a0") = a; +	register long a1 __asm__("a1") = b; +	register long a2 __asm__("a2") = c; +	register long a3 __asm__("a3") = d; +	register long a4 __asm__("a4") = e; +	register long a5 __asm__("a5") = f; +	__asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)) +} + +#define VDSO_USEFUL +#define VDSO_CGT_SYM "__vdso_clock_gettime" +#define VDSO_CGT_VER "LINUX_4.15" + +#define IPC_64 0 diff --git a/arch/riscv64/bits/fcntl.h b/arch/riscv64/bits/fcntl.h deleted file mode 100644 index ecb4d18f..00000000 --- a/arch/riscv64/bits/fcntl.h +++ /dev/null @@ -1,38 +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_PATH    010000000 -#define O_TMPFILE 020200000 -#define O_NDELAY O_NONBLOCK - -#define F_DUPFD  0 -#define F_GETFD  1 -#define F_SETFD  2 -#define F_GETFL  3 -#define F_SETFL  4 -#define F_GETLK  5 -#define F_SETLK  6 -#define F_SETLKW 7 -#define F_SETOWN 8 -#define F_GETOWN 9 -#define F_SETSIG 10 -#define F_GETSIG 11 - -#define F_SETOWN_EX 15 -#define F_GETOWN_EX 16 - -#define F_GETOWNER_UIDS 17 diff --git a/arch/riscv64/bits/posix.h b/arch/riscv64/bits/posix.h deleted file mode 100644 index 8068ce98..00000000 --- a/arch/riscv64/bits/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define _POSIX_V6_LP64_OFF64 1 -#define _POSIX_V7_LP64_OFF64 1 diff --git a/arch/riscv64/bits/reg.h b/arch/riscv64/bits/reg.h deleted file mode 100644 index 2633f39d..00000000 --- a/arch/riscv64/bits/reg.h +++ /dev/null @@ -1,2 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 diff --git a/arch/riscv64/bits/signal.h b/arch/riscv64/bits/signal.h index b006334f..56f8fe17 100644 --- a/arch/riscv64/bits/signal.h +++ b/arch/riscv64/bits/signal.h @@ -19,7 +19,7 @@ struct __riscv_mc_d_ext_state {  };  struct __riscv_mc_q_ext_state { -	unsigned long long __f[64] __attribute__((aligned(16))); +	unsigned long long __f[64] __attribute__((__aligned__(16)));  	unsigned int __fcsr;  	unsigned int __reserved[3];  }; @@ -41,7 +41,9 @@ typedef struct mcontext_t {  #define REG_SP 2  #define REG_TP 4  #define REG_S0 8 +#define REG_S1 9  #define REG_A0 10 +#define REG_S2 18  #endif  #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) @@ -60,10 +62,10 @@ struct sigaltstack {  	size_t ss_size;  }; -typedef struct ucontext_t +typedef struct __ucontext  {  	unsigned long uc_flags; -	struct ucontext_t *uc_link; +	struct __ucontext *uc_link;  	stack_t uc_stack;  	sigset_t uc_sigmask;  	mcontext_t uc_mcontext; @@ -76,7 +78,6 @@ typedef struct ucontext_t  #define SA_RESTART   0x10000000  #define SA_NODEFER   0x40000000  #define SA_RESETHAND 0x80000000 -#define SA_RESTORER  0x04000000  #endif diff --git a/arch/riscv64/bits/stat.h b/arch/riscv64/bits/stat.h deleted file mode 100644 index b7f4221b..00000000 --- a/arch/riscv64/bits/stat.h +++ /dev/null @@ -1,18 +0,0 @@ -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; -	unsigned long __pad; -	off_t st_size; -	blksize_t st_blksize; -	int __pad2; -	blkcnt_t st_blocks; -	struct timespec st_atim; -	struct timespec st_mtim; -	struct timespec st_ctim; -	unsigned __unused[2]; -}; diff --git a/arch/riscv64/bits/stdint.h b/arch/riscv64/bits/stdint.h deleted file mode 100644 index 1bb147f2..00000000 --- a/arch/riscv64/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      INT64_MIN -#define INTPTR_MAX      INT64_MAX -#define UINTPTR_MAX     UINT64_MAX -#define PTRDIFF_MIN     INT64_MIN -#define PTRDIFF_MAX     INT64_MAX -#define SIZE_MAX        UINT64_MAX diff --git a/arch/riscv64/bits/syscall.h.in b/arch/riscv64/bits/syscall.h.in index 0043eeba..e362bd0e 100644 --- a/arch/riscv64/bits/syscall.h.in +++ b/arch/riscv64/bits/syscall.h.in @@ -76,7 +76,7 @@  #define __NR_splice 76  #define __NR_tee 77  #define __NR_readlinkat 78 -#define __NR_fstatat 79 +#define __NR_newfstatat 79  #define __NR_fstat 80  #define __NR_sync 81  #define __NR_fsync 82 @@ -289,6 +289,21 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452  #define __NR_sysriscv __NR_arch_specific_syscall  #define __NR_riscv_flush_icache (__NR_sysriscv + 15) diff --git a/arch/riscv64/bits/user.h b/arch/riscv64/bits/user.h index 2da743ea..0d37de0b 100644 --- a/arch/riscv64/bits/user.h +++ b/arch/riscv64/bits/user.h @@ -1,5 +1,6 @@  #include <signal.h>  #define ELF_NGREG 32 +#define ELF_NFPREG 33  typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];  typedef union __riscv_mc_fp_state elf_fpregset_t; diff --git a/arch/riscv64/pthread_arch.h b/arch/riscv64/pthread_arch.h index db414b17..a20d7fba 100644 --- a/arch/riscv64/pthread_arch.h +++ b/arch/riscv64/pthread_arch.h @@ -1,13 +1,12 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	char *tp; +	uintptr_t tp;  	__asm__ __volatile__("mv %0, tp" : "=r"(tp)); -	return (void *)(tp - sizeof(struct pthread)); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 0 -#define TP_ADJ(p) ((char *)p + sizeof(struct pthread))  #define DTP_OFFSET 0x800 diff --git a/arch/riscv64/reloc.h b/arch/riscv64/reloc.h index 1ca13811..7c7c0611 100644 --- a/arch/riscv64/reloc.h +++ b/arch/riscv64/reloc.h @@ -17,6 +17,7 @@  #define REL_DTPMOD      R_RISCV_TLS_DTPMOD64  #define REL_DTPOFF      R_RISCV_TLS_DTPREL64  #define REL_TPOFF       R_RISCV_TLS_TPREL64 +#define REL_TLSDESC     R_RISCV_TLSDESC  #define CRTJMP(pc,sp) __asm__ __volatile__( \  	"mv sp, %1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" ) diff --git a/arch/riscv64/syscall_arch.h b/arch/riscv64/syscall_arch.h index 7fd042cd..81993fc8 100644 --- a/arch/riscv64/syscall_arch.h +++ b/arch/riscv64/syscall_arch.h @@ -71,8 +71,7 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  }  #define VDSO_USEFUL -/* We don't have a clock_gettime function.  #define VDSO_CGT_SYM "__vdso_clock_gettime" -#define VDSO_CGT_VER "LINUX_2.6" */ +#define VDSO_CGT_VER "LINUX_4.15"  #define IPC_64 0 diff --git a/arch/s390x/bits/alltypes.h.in b/arch/s390x/bits/alltypes.h.in index 15d18c8f..6c0eb7f4 100644 --- a/arch/s390x/bits/alltypes.h.in +++ b/arch/s390x/bits/alltypes.h.in @@ -9,7 +9,11 @@  TYPEDEF int wchar_t;  #endif +#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 1  TYPEDEF double float_t; +#else +TYPEDEF float float_t; +#endif  TYPEDEF double double_t;  TYPEDEF struct { long long __ll; long double __ld; } max_align_t; diff --git a/arch/s390x/bits/float.h b/arch/s390x/bits/float.h index 90b73bee..e188cb61 100644 --- a/arch/s390x/bits/float.h +++ b/arch/s390x/bits/float.h @@ -1,4 +1,8 @@ -#define FLT_EVAL_METHOD 1 +#ifdef __FLT_EVAL_METHOD__ +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#else +#define FLT_EVAL_METHOD 0 +#endif  #define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L  #define LDBL_MIN 3.36210314311209350626267781732175260e-4932L diff --git a/arch/s390x/bits/posix.h b/arch/s390x/bits/posix.h deleted file mode 100644 index c37b94c1..00000000 --- a/arch/s390x/bits/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define _POSIX_V6_LP64_OFF64  1 -#define _POSIX_V7_LP64_OFF64  1 diff --git a/arch/s390x/bits/ptrace.h b/arch/s390x/bits/ptrace.h index d50e3262..a06cb077 100644 --- a/arch/s390x/bits/ptrace.h +++ b/arch/s390x/bits/ptrace.h @@ -1,4 +1,7 @@  #define PTRACE_SINGLEBLOCK		12 +#define PTRACE_OLDSETOPTIONS		21 +#define PTRACE_SYSEMU			31 +#define PTRACE_SYSEMU_SINGLESTEP	32  #define PTRACE_PEEKUSR_AREA		0x5000  #define PTRACE_POKEUSR_AREA		0x5001  #define PTRACE_GET_LAST_BREAK		0x5006 diff --git a/arch/s390x/bits/reg.h b/arch/s390x/bits/reg.h deleted file mode 100644 index 2633f39d..00000000 --- a/arch/s390x/bits/reg.h +++ /dev/null @@ -1,2 +0,0 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 diff --git a/arch/s390x/bits/stdint.h b/arch/s390x/bits/stdint.h deleted file mode 100644 index 1bb147f2..00000000 --- a/arch/s390x/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      INT64_MIN -#define INTPTR_MAX      INT64_MAX -#define UINTPTR_MAX     UINT64_MAX -#define PTRDIFF_MIN     INT64_MIN -#define PTRDIFF_MAX     INT64_MAX -#define SIZE_MAX        UINT64_MAX diff --git a/arch/s390x/bits/syscall.h.in b/arch/s390x/bits/syscall.h.in index e89f3782..e60711a6 100644 --- a/arch/s390x/bits/syscall.h.in +++ b/arch/s390x/bits/syscall.h.in @@ -352,4 +352,20 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_memfd_secret	447 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/s390x/bits/user.h b/arch/s390x/bits/user.h index ff3f0483..47f94f20 100644 --- a/arch/s390x/bits/user.h +++ b/arch/s390x/bits/user.h @@ -1,6 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 -  typedef union {  	double d;  	float f; diff --git a/arch/s390x/pthread_arch.h b/arch/s390x/pthread_arch.h index e2251f1f..e54fec3f 100644 --- a/arch/s390x/pthread_arch.h +++ b/arch/s390x/pthread_arch.h @@ -1,14 +1,12 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	struct pthread *self; +	uintptr_t tp;  	__asm__ (  		"ear  %0, %%a0\n"  		"sllg %0, %0, 32\n"  		"ear  %0, %%a1\n" -		: "=r"(self)); -	return self; +		: "=r"(tp)); +	return tp;  } -#define TP_ADJ(p) (p) -  #define MC_PC psw.addr diff --git a/arch/s390x/reloc.h b/arch/s390x/reloc.h index 6e5c1fb8..38de9d9b 100644 --- a/arch/s390x/reloc.h +++ b/arch/s390x/reloc.h @@ -10,4 +10,4 @@  #define REL_TPOFF       R_390_TLS_TPOFF  #define CRTJMP(pc,sp) __asm__ __volatile__( \ -	"lgr %%r15,%1; br %0" : : "r"(pc), "r"(sp) : "memory" ) +	"lgr %%r15,%1; br %0" : : "a"(pc), "r"(sp) : "memory" ) diff --git a/arch/s390x/syscall_arch.h b/arch/s390x/syscall_arch.h index afb99852..d1cfd2e8 100644 --- a/arch/s390x/syscall_arch.h +++ b/arch/s390x/syscall_arch.h @@ -73,4 +73,6 @@ static inline long __syscall6(long n, long a, long b, long c, long d, long e, lo  	__asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7));  } -#define SYSCALL_USE_SOCKETCALL +#define VDSO_USEFUL +#define VDSO_CGT_SYM "__kernel_clock_gettime" +#define VDSO_CGT_VER "LINUX_2.6.29" diff --git a/arch/sh/bits/posix.h b/arch/sh/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/sh/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/sh/bits/signal.h b/arch/sh/bits/signal.h index 160311fa..d0b14828 100644 --- a/arch/sh/bits/signal.h +++ b/arch/sh/bits/signal.h @@ -9,7 +9,16 @@  #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)  typedef int greg_t, gregset_t[16];  typedef int freg_t, fpregset_t[16]; -typedef struct sigcontext { +typedef struct { +	unsigned long oldmask; +	unsigned long gregs[16]; +	unsigned long pc, pr, sr; +	unsigned long gbr, mach, macl; +	unsigned long fpregs[16]; +	unsigned long xfpregs[16]; +	unsigned int fpscr, fpul, ownedfp; +} mcontext_t; +struct sigcontext {  	unsigned long oldmask;  	unsigned long sc_regs[16];  	unsigned long sc_pc, sc_pr, sc_sr; @@ -17,7 +26,7 @@ typedef struct sigcontext {  	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]; diff --git a/arch/sh/bits/stdint.h b/arch/sh/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/sh/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/sh/bits/syscall.h.in b/arch/sh/bits/syscall.h.in index 0102ddaf..915a79cd 100644 --- a/arch/sh/bits/syscall.h.in +++ b/arch/sh/bits/syscall.h.in @@ -398,4 +398,20 @@  #define __NR_fsmount		432  #define __NR_fspick		433  #define __NR_pidfd_open		434 +#define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/sh/bits/user.h b/arch/sh/bits/user.h index 07fe843b..b6ba16ed 100644 --- a/arch/sh/bits/user.h +++ b/arch/sh/bits/user.h @@ -1,6 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 32 -  #define REG_REG0	 0  #define REG_REG15	15  #define REG_PC		16 diff --git a/arch/sh/pthread_arch.h b/arch/sh/pthread_arch.h index 3ee9c1a9..199c2d55 100644 --- a/arch/sh/pthread_arch.h +++ b/arch/sh/pthread_arch.h @@ -1,17 +1,16 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	char *self; -	__asm__ ("stc gbr,%0" : "=r" (self) ); -	return (struct pthread *) (self - sizeof(struct pthread)); +	uintptr_t tp; +	__asm__ ("stc gbr,%0" : "=r" (tp) ); +	return tp;  }  #define TLS_ABOVE_TP  #define GAP_ABOVE_TP 8 -#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread)) -#define MC_PC sc_pc +#define MC_PC pc  #ifdef __FDPIC__ -#define MC_GOT sc_regs[12] +#define MC_GOT gregs[12]  #define CANCEL_GOT (*(uintptr_t *)((char *)__syscall_cp_asm+sizeof(uintptr_t)))  #endif diff --git a/arch/x32/bits/fcntl.h b/arch/x32/bits/fcntl.h index 1b88ad39..08627f81 100644 --- a/arch/x32/bits/fcntl.h +++ b/arch/x32/bits/fcntl.h @@ -13,7 +13,7 @@  #define O_ASYNC      020000  #define O_DIRECT     040000 -#define O_LARGEFILE       0 +#define O_LARGEFILE 0100000  #define O_NOATIME  01000000  #define O_PATH    010000000  #define O_TMPFILE 020200000 diff --git a/arch/x32/bits/posix.h b/arch/x32/bits/posix.h deleted file mode 100644 index 30a38714..00000000 --- a/arch/x32/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/x32/bits/reg.h b/arch/x32/bits/reg.h index 5faaef1a..6e54abcf 100644 --- a/arch/x32/bits/reg.h +++ b/arch/x32/bits/reg.h @@ -1,5 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 32  #define R15    0  #define R14    1  #define R13    2 diff --git a/arch/x32/bits/stdint.h b/arch/x32/bits/stdint.h deleted file mode 100644 index d1b27121..00000000 --- a/arch/x32/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/x32/bits/syscall.h.in b/arch/x32/bits/syscall.h.in index f47bdee5..1d065eea 100644 --- a/arch/x32/bits/syscall.h.in +++ b/arch/x32/bits/syscall.h.in @@ -298,6 +298,22 @@  #define __NR_fspick		(0x40000000 + 433)  #define __NR_pidfd_open		(0x40000000 + 434)  #define __NR_clone3		(0x40000000 + 435) +#define __NR_close_range	(0x40000000 + 436) +#define __NR_openat2		(0x40000000 + 437) +#define __NR_pidfd_getfd	(0x40000000 + 438) +#define __NR_faccessat2		(0x40000000 + 439) +#define __NR_process_madvise	(0x40000000 + 440) +#define __NR_epoll_pwait2	(0x40000000 + 441) +#define __NR_mount_setattr	(0x40000000 + 442) +#define __NR_landlock_create_ruleset	(0x40000000 + 444) +#define __NR_landlock_add_rule	(0x40000000 + 445) +#define __NR_landlock_restrict_self	(0x40000000 + 446) +#define __NR_memfd_secret	(0x40000000 + 447) +#define __NR_process_mrelease	(0x40000000 + 448) +#define __NR_futex_waitv	(0x40000000 + 449) +#define __NR_set_mempolicy_home_node	(0x40000000 + 450) +#define __NR_cachestat		(0x40000000 + 451) +#define __NR_fchmodat2		(0x40000000 + 452)  #define __NR_rt_sigaction (0x40000000 + 512) diff --git a/arch/x32/bits/user.h b/arch/x32/bits/user.h index 4073cc06..b328edf9 100644 --- a/arch/x32/bits/user.h +++ b/arch/x32/bits/user.h @@ -1,6 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 -  typedef struct user_fpregs_struct {  	uint16_t cwd, swd, ftw, fop;  	uint64_t rip, rdp; diff --git a/arch/x32/crt_arch.h b/arch/x32/crt_arch.h index 3eec61bd..b1c9c476 100644 --- a/arch/x32/crt_arch.h +++ b/arch/x32/crt_arch.h @@ -1,6 +1,7 @@  __asm__(  ".text \n"  ".global " START " \n" +".type " START ",%function \n"  START ": \n"  "	xor %rbp,%rbp \n"  "	mov %rsp,%rdi \n" diff --git a/arch/x32/pthread_arch.h b/arch/x32/pthread_arch.h index f640a1a1..c1e7716d 100644 --- a/arch/x32/pthread_arch.h +++ b/arch/x32/pthread_arch.h @@ -1,14 +1,12 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	struct pthread *self; -	__asm__ ("mov %%fs:0,%0" : "=r" (self) ); -	return self; +	uintptr_t tp; +	__asm__ ("mov %%fs:0,%0" : "=r" (tp) ); +	return tp;  } -#define TP_ADJ(p) (p) -  #define MC_PC gregs[REG_RIP] -#define CANARY canary2 +#define CANARY_PAD  #define tls_mod_off_t unsigned long long diff --git a/arch/x86_64/bits/fcntl.h b/arch/x86_64/bits/fcntl.h deleted file mode 100644 index 1b88ad39..00000000 --- a/arch/x86_64/bits/fcntl.h +++ /dev/null @@ -1,40 +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       0 -#define O_NOATIME  01000000 -#define O_PATH    010000000 -#define O_TMPFILE 020200000 -#define O_NDELAY O_NONBLOCK - -#define F_DUPFD  0 -#define F_GETFD  1 -#define F_SETFD  2 -#define F_GETFL  3 -#define F_SETFL  4 - -#define F_SETOWN 8 -#define F_GETOWN 9 -#define F_SETSIG 10 -#define F_GETSIG 11 - -#define F_GETLK 5 -#define F_SETLK 6 -#define F_SETLKW 7 - -#define F_SETOWN_EX 15 -#define F_GETOWN_EX 16 - -#define F_GETOWNER_UIDS 17 diff --git a/arch/x86_64/bits/posix.h b/arch/x86_64/bits/posix.h deleted file mode 100644 index c37b94c1..00000000 --- a/arch/x86_64/bits/posix.h +++ /dev/null @@ -1,2 +0,0 @@ -#define _POSIX_V6_LP64_OFF64  1 -#define _POSIX_V7_LP64_OFF64  1 diff --git a/arch/x86_64/bits/reg.h b/arch/x86_64/bits/reg.h index a4df04ce..6e54abcf 100644 --- a/arch/x86_64/bits/reg.h +++ b/arch/x86_64/bits/reg.h @@ -1,5 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 64  #define R15    0  #define R14    1  #define R13    2 diff --git a/arch/x86_64/bits/stdint.h b/arch/x86_64/bits/stdint.h deleted file mode 100644 index 1bb147f2..00000000 --- a/arch/x86_64/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      INT64_MIN -#define INTPTR_MAX      INT64_MAX -#define UINTPTR_MAX     UINT64_MAX -#define PTRDIFF_MIN     INT64_MIN -#define PTRDIFF_MAX     INT64_MAX -#define SIZE_MAX        UINT64_MAX diff --git a/arch/x86_64/bits/syscall.h.in b/arch/x86_64/bits/syscall.h.in index 6a646ad3..6543bbba 100644 --- a/arch/x86_64/bits/syscall.h.in +++ b/arch/x86_64/bits/syscall.h.in @@ -345,4 +345,20 @@  #define __NR_fspick		433  #define __NR_pidfd_open		434  #define __NR_clone3		435 +#define __NR_close_range	436 +#define __NR_openat2		437 +#define __NR_pidfd_getfd	438 +#define __NR_faccessat2		439 +#define __NR_process_madvise	440 +#define __NR_epoll_pwait2	441 +#define __NR_mount_setattr	442 +#define __NR_landlock_create_ruleset	444 +#define __NR_landlock_add_rule	445 +#define __NR_landlock_restrict_self	446 +#define __NR_memfd_secret	447 +#define __NR_process_mrelease	448 +#define __NR_futex_waitv	449 +#define __NR_set_mempolicy_home_node	450 +#define __NR_cachestat		451 +#define __NR_fchmodat2		452 diff --git a/arch/x86_64/bits/user.h b/arch/x86_64/bits/user.h index 4073cc06..b328edf9 100644 --- a/arch/x86_64/bits/user.h +++ b/arch/x86_64/bits/user.h @@ -1,6 +1,3 @@ -#undef __WORDSIZE -#define __WORDSIZE 64 -  typedef struct user_fpregs_struct {  	uint16_t cwd, swd, ftw, fop;  	uint64_t rip, rdp; diff --git a/arch/x86_64/crt_arch.h b/arch/x86_64/crt_arch.h index 3eec61bd..b1c9c476 100644 --- a/arch/x86_64/crt_arch.h +++ b/arch/x86_64/crt_arch.h @@ -1,6 +1,7 @@  __asm__(  ".text \n"  ".global " START " \n" +".type " START ",%function \n"  START ": \n"  "	xor %rbp,%rbp \n"  "	mov %rsp,%rdi \n" diff --git a/arch/x86_64/pthread_arch.h b/arch/x86_64/pthread_arch.h index 65e880c6..c8c63f2e 100644 --- a/arch/x86_64/pthread_arch.h +++ b/arch/x86_64/pthread_arch.h @@ -1,10 +1,8 @@ -static inline struct pthread *__pthread_self() +static inline uintptr_t __get_tp()  { -	struct pthread *self; -	__asm__ ("mov %%fs:0,%0" : "=r" (self) ); -	return self; +	uintptr_t tp; +	__asm__ ("mov %%fs:0,%0" : "=r" (tp) ); +	return tp;  } -#define TP_ADJ(p) (p) -  #define MC_PC gregs[REG_RIP] | 
