summaryrefslogtreecommitdiffstats
path: root/libc-top-half/musl/arch/s390x
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 13:54:38 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 13:54:38 +0000
commit8c1ab65c0f548d20b7f177bdb736daaf603340e1 (patch)
treedf55b7e75bf43f2bf500845b105afe3ac3a5157e /libc-top-half/musl/arch/s390x
parentInitial commit. (diff)
downloadwasi-libc-upstream/0.0_git20221206.8b7148f.tar.xz
wasi-libc-upstream/0.0_git20221206.8b7148f.zip
Adding upstream version 0.0~git20221206.8b7148f.upstream/0.0_git20221206.8b7148f
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--libc-top-half/musl/arch/s390x/atomic_arch.h30
-rw-r--r--libc-top-half/musl/arch/s390x/bits/alltypes.h.in19
-rw-r--r--libc-top-half/musl/arch/s390x/bits/fcntl.h43
-rw-r--r--libc-top-half/musl/arch/s390x/bits/fenv.h17
-rw-r--r--libc-top-half/musl/arch/s390x/bits/float.h20
-rw-r--r--libc-top-half/musl/arch/s390x/bits/hwcap.h15
-rw-r--r--libc-top-half/musl/arch/s390x/bits/ioctl_fix.h2
-rw-r--r--libc-top-half/musl/arch/s390x/bits/limits.h1
-rw-r--r--libc-top-half/musl/arch/s390x/bits/link.h1
-rw-r--r--libc-top-half/musl/arch/s390x/bits/posix.h2
-rw-r--r--libc-top-half/musl/arch/s390x/bits/ptrace.h12
-rw-r--r--libc-top-half/musl/arch/s390x/bits/reg.h2
-rw-r--r--libc-top-half/musl/arch/s390x/bits/setjmp.h1
-rw-r--r--libc-top-half/musl/arch/s390x/bits/signal.h121
-rw-r--r--libc-top-half/musl/arch/s390x/bits/stat.h16
-rw-r--r--libc-top-half/musl/arch/s390x/bits/statfs.h7
-rw-r--r--libc-top-half/musl/arch/s390x/bits/stdint.h20
-rw-r--r--libc-top-half/musl/arch/s390x/bits/syscall.h.in365
-rw-r--r--libc-top-half/musl/arch/s390x/bits/user.h62
-rw-r--r--libc-top-half/musl/arch/s390x/crt_arch.h17
-rw-r--r--libc-top-half/musl/arch/s390x/kstat.h19
-rw-r--r--libc-top-half/musl/arch/s390x/pthread_arch.h12
-rw-r--r--libc-top-half/musl/arch/s390x/reloc.h13
-rw-r--r--libc-top-half/musl/arch/s390x/syscall_arch.h74
24 files changed, 891 insertions, 0 deletions
diff --git a/libc-top-half/musl/arch/s390x/atomic_arch.h b/libc-top-half/musl/arch/s390x/atomic_arch.h
new file mode 100644
index 0000000..9b0e1df
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/atomic_arch.h
@@ -0,0 +1,30 @@
+#define a_cas a_cas
+static inline int a_cas(volatile int *p, int t, int s)
+{
+ __asm__ __volatile__ (
+ "cs %0, %2, %1"
+ : "+d"(t), "+Q"(*p) : "d"(s) : "memory", "cc");
+ return t;
+}
+
+#define a_cas_p a_cas_p
+static inline void *a_cas_p(volatile void *p, void *t, void *s)
+{
+ __asm__ __volatile__ (
+ "csg %0, %2, %1"
+ : "+d"(t), "+Q"(*(void *volatile *)p) : "d"(s)
+ : "memory", "cc");
+ return t;
+}
+
+#define a_barrier a_barrier
+static inline void a_barrier()
+{
+ __asm__ __volatile__ ("bcr 15,0" : : : "memory");
+}
+
+#define a_crash a_crash
+static inline void a_crash()
+{
+ __asm__ __volatile__ (".insn e,0");
+}
diff --git a/libc-top-half/musl/arch/s390x/bits/alltypes.h.in b/libc-top-half/musl/arch/s390x/bits/alltypes.h.in
new file mode 100644
index 0000000..6c0eb7f
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/alltypes.h.in
@@ -0,0 +1,19 @@
+#define _Addr long
+#define _Int64 long
+#define _Reg long
+
+#define __BYTE_ORDER 4321
+#define __LONG_MAX 0x7fffffffffffffffL
+
+#ifndef __cplusplus
+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/libc-top-half/musl/arch/s390x/bits/fcntl.h b/libc-top-half/musl/arch/s390x/bits/fcntl.h
new file mode 100644
index 0000000..a231efb
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/fcntl.h
@@ -0,0 +1,43 @@
+#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
+
+#define POSIX_FADV_DONTNEED 6
+#define POSIX_FADV_NOREUSE 7
diff --git a/libc-top-half/musl/arch/s390x/bits/fenv.h b/libc-top-half/musl/arch/s390x/bits/fenv.h
new file mode 100644
index 0000000..773dad9
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/fenv.h
@@ -0,0 +1,17 @@
+#define FE_TONEAREST 0
+#define FE_TOWARDZERO 1
+#define FE_UPWARD 2
+#define FE_DOWNWARD 3
+
+#define FE_INEXACT 0x00080000
+#define FE_UNDERFLOW 0x00100000
+#define FE_OVERFLOW 0x00200000
+#define FE_DIVBYZERO 0x00400000
+#define FE_INVALID 0x00800000
+
+#define FE_ALL_EXCEPT 0x00f80000
+
+typedef unsigned fexcept_t;
+typedef unsigned fenv_t;
+
+#define FE_DFL_ENV ((const fenv_t *)-1)
diff --git a/libc-top-half/musl/arch/s390x/bits/float.h b/libc-top-half/musl/arch/s390x/bits/float.h
new file mode 100644
index 0000000..e188cb6
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/float.h
@@ -0,0 +1,20 @@
+#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
+#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/libc-top-half/musl/arch/s390x/bits/hwcap.h b/libc-top-half/musl/arch/s390x/bits/hwcap.h
new file mode 100644
index 0000000..ecc6ce1
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/hwcap.h
@@ -0,0 +1,15 @@
+#define HWCAP_S390_ESAN3 1
+#define HWCAP_S390_ZARCH 2
+#define HWCAP_S390_STFLE 4
+#define HWCAP_S390_MSA 8
+#define HWCAP_S390_LDISP 16
+#define HWCAP_S390_EIMM 32
+#define HWCAP_S390_DFP 64
+#define HWCAP_S390_HPAGE 128
+#define HWCAP_S390_ETF3EH 256
+#define HWCAP_S390_HIGH_GPRS 512
+#define HWCAP_S390_TE 1024
+#define HWCAP_S390_VXRS 2048
+#define HWCAP_S390_VXRS_BCD 4096
+#define HWCAP_S390_VXRS_EXT 8192
+#define HWCAP_S390_GS 16384
diff --git a/libc-top-half/musl/arch/s390x/bits/ioctl_fix.h b/libc-top-half/musl/arch/s390x/bits/ioctl_fix.h
new file mode 100644
index 0000000..ebb383d
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/ioctl_fix.h
@@ -0,0 +1,2 @@
+#undef FIOQSIZE
+#define FIOQSIZE 0x545e
diff --git a/libc-top-half/musl/arch/s390x/bits/limits.h b/libc-top-half/musl/arch/s390x/bits/limits.h
new file mode 100644
index 0000000..07743b6
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/limits.h
@@ -0,0 +1 @@
+#define PAGESIZE 4096
diff --git a/libc-top-half/musl/arch/s390x/bits/link.h b/libc-top-half/musl/arch/s390x/bits/link.h
new file mode 100644
index 0000000..923aac5
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/link.h
@@ -0,0 +1 @@
+typedef uint64_t Elf_Symndx;
diff --git a/libc-top-half/musl/arch/s390x/bits/posix.h b/libc-top-half/musl/arch/s390x/bits/posix.h
new file mode 100644
index 0000000..c37b94c
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/posix.h
@@ -0,0 +1,2 @@
+#define _POSIX_V6_LP64_OFF64 1
+#define _POSIX_V7_LP64_OFF64 1
diff --git a/libc-top-half/musl/arch/s390x/bits/ptrace.h b/libc-top-half/musl/arch/s390x/bits/ptrace.h
new file mode 100644
index 0000000..a06cb07
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/ptrace.h
@@ -0,0 +1,12 @@
+#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
+#define PTRACE_ENABLE_TE 0x5009
+#define PTRACE_DISABLE_TE 0x5010
+#define PTRACE_TE_ABORT_RAND 0x5011
+
+#define PT_STEPBLOCK PTRACE_SINGLEBLOCK
diff --git a/libc-top-half/musl/arch/s390x/bits/reg.h b/libc-top-half/musl/arch/s390x/bits/reg.h
new file mode 100644
index 0000000..2633f39
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/reg.h
@@ -0,0 +1,2 @@
+#undef __WORDSIZE
+#define __WORDSIZE 64
diff --git a/libc-top-half/musl/arch/s390x/bits/setjmp.h b/libc-top-half/musl/arch/s390x/bits/setjmp.h
new file mode 100644
index 0000000..b2bd974
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/setjmp.h
@@ -0,0 +1 @@
+typedef unsigned long __jmp_buf[18];
diff --git a/libc-top-half/musl/arch/s390x/bits/signal.h b/libc-top-half/musl/arch/s390x/bits/signal.h
new file mode 100644
index 0000000..e5aca4b
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/signal.h
@@ -0,0 +1,121 @@
+#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 10240
+#endif
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+typedef unsigned long greg_t, gregset_t[27];
+
+typedef struct {
+ unsigned long mask;
+ unsigned long addr;
+} __psw_t;
+
+typedef union {
+ double d;
+ float f;
+} fpreg_t;
+
+typedef struct {
+ unsigned fpc;
+ fpreg_t fprs[16];
+} fpregset_t;
+
+typedef struct
+{
+ __psw_t psw;
+ unsigned long gregs[16];
+ unsigned aregs[16];
+ fpregset_t fpregs;
+} mcontext_t;
+
+struct sigcontext {
+ unsigned long oldmask[1];
+ struct {
+ struct {
+ __psw_t psw;
+ unsigned long gprs[16];
+ unsigned acrs[16];
+ } regs;
+ struct {
+ unsigned fpc;
+ double fprs[16];
+ } fpregs;
+ } *sregs;
+};
+
+#else
+
+typedef struct {
+ unsigned long __regs1[18];
+ unsigned __regs2[18];
+ double __regs3[16];
+} mcontext_t;
+
+#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;
+ mcontext_t uc_mcontext;
+ sigset_t uc_sigmask;
+} ucontext_t;
+
+#define SA_NOCLDSTOP 1U
+#define SA_NOCLDWAIT 2U
+#define SA_SIGINFO 4U
+#define SA_ONSTACK 0x08000000U
+#define SA_RESTART 0x10000000U
+#define SA_NODEFER 0x40000000U
+#define SA_RESETHAND 0x80000000U
+#define SA_RESTORER 0x04000000U
+
+#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/libc-top-half/musl/arch/s390x/bits/stat.h b/libc-top-half/musl/arch/s390x/bits/stat.h
new file mode 100644
index 0000000..2db4ad0
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/stat.h
@@ -0,0 +1,16 @@
+struct stat {
+ dev_t st_dev;
+ ino_t st_ino;
+ nlink_t st_nlink;
+ mode_t st_mode;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ off_t st_size;
+ struct timespec st_atim;
+ struct timespec st_mtim;
+ struct timespec st_ctim;
+ blksize_t st_blksize;
+ blkcnt_t st_blocks;
+ unsigned long __unused[3];
+};
diff --git a/libc-top-half/musl/arch/s390x/bits/statfs.h b/libc-top-half/musl/arch/s390x/bits/statfs.h
new file mode 100644
index 0000000..6617358
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/statfs.h
@@ -0,0 +1,7 @@
+struct statfs {
+ unsigned f_type, f_bsize;
+ fsblkcnt_t f_blocks, f_bfree, f_bavail;
+ fsfilcnt_t f_files, f_ffree;
+ fsid_t f_fsid;
+ unsigned f_namelen, f_frsize, f_flags, f_spare[4];
+};
diff --git a/libc-top-half/musl/arch/s390x/bits/stdint.h b/libc-top-half/musl/arch/s390x/bits/stdint.h
new file mode 100644
index 0000000..1bb147f
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/stdint.h
@@ -0,0 +1,20 @@
+typedef int32_t int_fast16_t;
+typedef int32_t int_fast32_t;
+typedef uint32_t uint_fast16_t;
+typedef uint32_t uint_fast32_t;
+
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
+
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
+
+#define UINT_FAST16_MAX UINT32_MAX
+#define UINT_FAST32_MAX UINT32_MAX
+
+#define INTPTR_MIN INT64_MIN
+#define INTPTR_MAX INT64_MAX
+#define UINTPTR_MAX UINT64_MAX
+#define PTRDIFF_MIN INT64_MIN
+#define PTRDIFF_MAX INT64_MAX
+#define SIZE_MAX UINT64_MAX
diff --git a/libc-top-half/musl/arch/s390x/bits/syscall.h.in b/libc-top-half/musl/arch/s390x/bits/syscall.h.in
new file mode 100644
index 0000000..dfc3847
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/syscall.h.in
@@ -0,0 +1,365 @@
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_restart_syscall 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_brk 45
+#define __NR_signal 48
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_setpgid 57
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_symlink 83
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_lookup_dcookie 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137
+#define __NR_getdents 141
+#define __NR_select 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_query_module 167
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread64 180
+#define __NR_pwrite64 181
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_getpmsg 188
+#define __NR_putpmsg 189
+#define __NR_vfork 190
+#define __NR_getrlimit 191
+#define __NR_lchown 198
+#define __NR_getuid 199
+#define __NR_getgid 200
+#define __NR_geteuid 201
+#define __NR_getegid 202
+#define __NR_setreuid 203
+#define __NR_setregid 204
+#define __NR_getgroups 205
+#define __NR_setgroups 206
+#define __NR_fchown 207
+#define __NR_setresuid 208
+#define __NR_getresuid 209
+#define __NR_setresgid 210
+#define __NR_getresgid 211
+#define __NR_chown 212
+#define __NR_setuid 213
+#define __NR_setgid 214
+#define __NR_setfsuid 215
+#define __NR_setfsgid 216
+#define __NR_pivot_root 217
+#define __NR_mincore 218
+#define __NR_madvise 219
+#define __NR_getdents64 220
+#define __NR_readahead 222
+#define __NR_setxattr 224
+#define __NR_lsetxattr 225
+#define __NR_fsetxattr 226
+#define __NR_getxattr 227
+#define __NR_lgetxattr 228
+#define __NR_fgetxattr 229
+#define __NR_listxattr 230
+#define __NR_llistxattr 231
+#define __NR_flistxattr 232
+#define __NR_removexattr 233
+#define __NR_lremovexattr 234
+#define __NR_fremovexattr 235
+#define __NR_gettid 236
+#define __NR_tkill 237
+#define __NR_futex 238
+#define __NR_sched_setaffinity 239
+#define __NR_sched_getaffinity 240
+#define __NR_tgkill 241
+#define __NR_io_setup 243
+#define __NR_io_destroy 244
+#define __NR_io_getevents 245
+#define __NR_io_submit 246
+#define __NR_io_cancel 247
+#define __NR_exit_group 248
+#define __NR_epoll_create 249
+#define __NR_epoll_ctl 250
+#define __NR_epoll_wait 251
+#define __NR_set_tid_address 252
+#define __NR_fadvise64 253
+#define __NR_timer_create 254
+#define __NR_timer_settime 255
+#define __NR_timer_gettime 256
+#define __NR_timer_getoverrun 257
+#define __NR_timer_delete 258
+#define __NR_clock_settime 259
+#define __NR_clock_gettime 260
+#define __NR_clock_getres 261
+#define __NR_clock_nanosleep 262
+#define __NR_statfs64 265
+#define __NR_fstatfs64 266
+#define __NR_remap_file_pages 267
+#define __NR_mbind 268
+#define __NR_get_mempolicy 269
+#define __NR_set_mempolicy 270
+#define __NR_mq_open 271
+#define __NR_mq_unlink 272
+#define __NR_mq_timedsend 273
+#define __NR_mq_timedreceive 274
+#define __NR_mq_notify 275
+#define __NR_mq_getsetattr 276
+#define __NR_kexec_load 277
+#define __NR_add_key 278
+#define __NR_request_key 279
+#define __NR_keyctl 280
+#define __NR_waitid 281
+#define __NR_ioprio_set 282
+#define __NR_ioprio_get 283
+#define __NR_inotify_init 284
+#define __NR_inotify_add_watch 285
+#define __NR_inotify_rm_watch 286
+#define __NR_migrate_pages 287
+#define __NR_openat 288
+#define __NR_mkdirat 289
+#define __NR_mknodat 290
+#define __NR_fchownat 291
+#define __NR_futimesat 292
+#define __NR_newfstatat 293
+#define __NR_unlinkat 294
+#define __NR_renameat 295
+#define __NR_linkat 296
+#define __NR_symlinkat 297
+#define __NR_readlinkat 298
+#define __NR_fchmodat 299
+#define __NR_faccessat 300
+#define __NR_pselect6 301
+#define __NR_ppoll 302
+#define __NR_unshare 303
+#define __NR_set_robust_list 304
+#define __NR_get_robust_list 305
+#define __NR_splice 306
+#define __NR_sync_file_range 307
+#define __NR_tee 308
+#define __NR_vmsplice 309
+#define __NR_move_pages 310
+#define __NR_getcpu 311
+#define __NR_epoll_pwait 312
+#define __NR_utimes 313
+#define __NR_fallocate 314
+#define __NR_utimensat 315
+#define __NR_signalfd 316
+#define __NR_timerfd 317
+#define __NR_eventfd 318
+#define __NR_timerfd_create 319
+#define __NR_timerfd_settime 320
+#define __NR_timerfd_gettime 321
+#define __NR_signalfd4 322
+#define __NR_eventfd2 323
+#define __NR_inotify_init1 324
+#define __NR_pipe2 325
+#define __NR_dup3 326
+#define __NR_epoll_create1 327
+#define __NR_preadv 328
+#define __NR_pwritev 329
+#define __NR_rt_tgsigqueueinfo 330
+#define __NR_perf_event_open 331
+#define __NR_fanotify_init 332
+#define __NR_fanotify_mark 333
+#define __NR_prlimit64 334
+#define __NR_name_to_handle_at 335
+#define __NR_open_by_handle_at 336
+#define __NR_clock_adjtime 337
+#define __NR_syncfs 338
+#define __NR_setns 339
+#define __NR_process_vm_readv 340
+#define __NR_process_vm_writev 341
+#define __NR_s390_runtime_instr 342
+#define __NR_kcmp 343
+#define __NR_finit_module 344
+#define __NR_sched_setattr 345
+#define __NR_sched_getattr 346
+#define __NR_renameat2 347
+#define __NR_seccomp 348
+#define __NR_getrandom 349
+#define __NR_memfd_create 350
+#define __NR_bpf 351
+#define __NR_s390_pci_mmio_write 352
+#define __NR_s390_pci_mmio_read 353
+#define __NR_execveat 354
+#define __NR_userfaultfd 355
+#define __NR_membarrier 356
+#define __NR_recvmmsg 357
+#define __NR_sendmmsg 358
+#define __NR_socket 359
+#define __NR_socketpair 360
+#define __NR_bind 361
+#define __NR_connect 362
+#define __NR_listen 363
+#define __NR_accept4 364
+#define __NR_getsockopt 365
+#define __NR_setsockopt 366
+#define __NR_getsockname 367
+#define __NR_getpeername 368
+#define __NR_sendto 369
+#define __NR_sendmsg 370
+#define __NR_recvfrom 371
+#define __NR_recvmsg 372
+#define __NR_shutdown 373
+#define __NR_mlock2 374
+#define __NR_copy_file_range 375
+#define __NR_preadv2 376
+#define __NR_pwritev2 377
+#define __NR_s390_guarded_storage 378
+#define __NR_statx 379
+#define __NR_s390_sthyi 380
+#define __NR_kexec_file_load 381
+#define __NR_io_pgetevents 382
+#define __NR_rseq 383
+#define __NR_pkey_mprotect 384
+#define __NR_pkey_alloc 385
+#define __NR_pkey_free 386
+#define __NR_semtimedop 392
+#define __NR_semget 393
+#define __NR_semctl 394
+#define __NR_shmget 395
+#define __NR_shmctl 396
+#define __NR_shmat 397
+#define __NR_shmdt 398
+#define __NR_msgget 399
+#define __NR_msgsnd 400
+#define __NR_msgrcv 401
+#define __NR_msgctl 402
+#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_landlock_create_ruleset 444
+#define __NR_landlock_add_rule 445
+#define __NR_landlock_restrict_self 446
+
diff --git a/libc-top-half/musl/arch/s390x/bits/user.h b/libc-top-half/musl/arch/s390x/bits/user.h
new file mode 100644
index 0000000..ff3f048
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/bits/user.h
@@ -0,0 +1,62 @@
+#undef __WORDSIZE
+#define __WORDSIZE 64
+
+typedef union {
+ double d;
+ float f;
+} elf_fpreg_t;
+
+typedef struct {
+ unsigned fpc;
+ elf_fpreg_t fprs[16];
+} elf_fpregset_t;
+
+#define ELF_NGREG 27
+typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
+
+struct _user_psw_struct {
+ unsigned long mask, addr;
+};
+
+struct _user_fpregs_struct {
+ unsigned fpc;
+ double fprs[16];
+};
+
+struct _user_per_struct {
+ unsigned long control_regs[3];
+ unsigned single_step : 1;
+ unsigned instruction_fetch : 1;
+ unsigned : 30;
+ unsigned long starting_addr, ending_addr;
+ unsigned short perc_atmid;
+ unsigned long address;
+ unsigned char access_id;
+};
+
+struct _user_regs_struct {
+ struct _user_psw_struct psw;
+ unsigned long gprs[16];
+ unsigned acrs[16];
+ unsigned long orig_gpr2;
+ struct _user_fpregs_struct fp_regs;
+ struct _user_per_struct per_info;
+ unsigned long ieee_instruction_pointer;
+};
+
+struct user {
+ struct _user_regs_struct regs;
+ unsigned long u_tsize, u_dsize, u_ssize;
+ unsigned long start_code, start_stack;
+ long signal;
+ struct _user_regs_struct *u_ar0;
+ unsigned long magic;
+ char u_comm[32];
+};
+
+#define PAGE_MASK (~(PAGESIZE-1))
+#define NBPG PAGESIZE
+#define UPAGES 1
+#define HOST_TEXT_START_ADDR (u.start_code)
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
+
diff --git a/libc-top-half/musl/arch/s390x/crt_arch.h b/libc-top-half/musl/arch/s390x/crt_arch.h
new file mode 100644
index 0000000..92091a1
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/crt_arch.h
@@ -0,0 +1,17 @@
+__asm__(
+".text\n"
+".global " START "\n"
+".type " START ", %function\n"
+START ":\n"
+" lgr %r2, %r15\n"
+" larl %r3, 1f\n"
+" agf %r3, 0(%r3)\n"
+" aghi %r15, -160\n"
+" lghi %r0, 0\n"
+" stg %r0, 0(%r15)\n"
+" jg " START "_c\n"
+" .align 8\n"
+".weak _DYNAMIC\n"
+".hidden _DYNAMIC\n"
+"1: .long _DYNAMIC-.\n"
+);
diff --git a/libc-top-half/musl/arch/s390x/kstat.h b/libc-top-half/musl/arch/s390x/kstat.h
new file mode 100644
index 0000000..001c10b
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/kstat.h
@@ -0,0 +1,19 @@
+struct kstat {
+ dev_t st_dev;
+ ino_t st_ino;
+ nlink_t st_nlink;
+ mode_t st_mode;
+ uid_t st_uid;
+ gid_t st_gid;
+ dev_t st_rdev;
+ off_t st_size;
+ long st_atime_sec;
+ long st_atime_nsec;
+ long st_mtime_sec;
+ long st_mtime_nsec;
+ long st_ctime_sec;
+ long st_ctime_nsec;
+ blksize_t st_blksize;
+ blkcnt_t st_blocks;
+ unsigned long __unused[3];
+};
diff --git a/libc-top-half/musl/arch/s390x/pthread_arch.h b/libc-top-half/musl/arch/s390x/pthread_arch.h
new file mode 100644
index 0000000..e54fec3
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/pthread_arch.h
@@ -0,0 +1,12 @@
+static inline uintptr_t __get_tp()
+{
+ uintptr_t tp;
+ __asm__ (
+ "ear %0, %%a0\n"
+ "sllg %0, %0, 32\n"
+ "ear %0, %%a1\n"
+ : "=r"(tp));
+ return tp;
+}
+
+#define MC_PC psw.addr
diff --git a/libc-top-half/musl/arch/s390x/reloc.h b/libc-top-half/musl/arch/s390x/reloc.h
new file mode 100644
index 0000000..6e5c1fb
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/reloc.h
@@ -0,0 +1,13 @@
+#define LDSO_ARCH "s390x"
+
+#define REL_SYMBOLIC R_390_64
+#define REL_GOT R_390_GLOB_DAT
+#define REL_PLT R_390_JMP_SLOT
+#define REL_RELATIVE R_390_RELATIVE
+#define REL_COPY R_390_COPY
+#define REL_DTPMOD R_390_TLS_DTPMOD
+#define REL_DTPOFF R_390_TLS_DTPOFF
+#define REL_TPOFF R_390_TLS_TPOFF
+
+#define CRTJMP(pc,sp) __asm__ __volatile__( \
+ "lgr %%r15,%1; br %0" : : "r"(pc), "r"(sp) : "memory" )
diff --git a/libc-top-half/musl/arch/s390x/syscall_arch.h b/libc-top-half/musl/arch/s390x/syscall_arch.h
new file mode 100644
index 0000000..83cc9a2
--- /dev/null
+++ b/libc-top-half/musl/arch/s390x/syscall_arch.h
@@ -0,0 +1,74 @@
+#define __SYSCALL_LL_E(x) (x)
+#define __SYSCALL_LL_O(x) (x)
+
+#define __asm_syscall(ret, ...) do { \
+ __asm__ __volatile__ ("svc 0\n" \
+ : ret : __VA_ARGS__ : "memory"); \
+ return r2; \
+ } while (0)
+
+static inline long __syscall0(long n)
+{
+ register long r1 __asm__("r1") = n;
+ register long r2 __asm__("r2");
+ __asm_syscall("=r"(r2), "r"(r1));
+}
+
+static inline long __syscall1(long n, long a)
+{
+ register long r1 __asm__("r1") = n;
+ register long r2 __asm__("r2") = a;
+ __asm_syscall("+r"(r2), "r"(r1));
+}
+
+static inline long __syscall2(long n, long a, long b)
+{
+ register long r1 __asm__("r1") = n;
+ register long r2 __asm__("r2") = a;
+ register long r3 __asm__("r3") = b;
+ __asm_syscall("+r"(r2), "r"(r1), "r"(r3));
+}
+
+static inline long __syscall3(long n, long a, long b, long c)
+{
+ register long r1 __asm__("r1") = n;
+ register long r2 __asm__("r2") = a;
+ register long r3 __asm__("r3") = b;
+ register long r4 __asm__("r4") = c;
+ __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4));
+}
+
+static inline long __syscall4(long n, long a, long b, long c, long d)
+{
+ register long r1 __asm__("r1") = n;
+ register long r2 __asm__("r2") = a;
+ register long r3 __asm__("r3") = b;
+ register long r4 __asm__("r4") = c;
+ register long r5 __asm__("r5") = d;
+ __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5));
+}
+
+static inline long __syscall5(long n, long a, long b, long c, long d, long e)
+{
+ register long r1 __asm__("r1") = n;
+ register long r2 __asm__("r2") = a;
+ register long r3 __asm__("r3") = b;
+ register long r4 __asm__("r4") = c;
+ register long r5 __asm__("r5") = d;
+ register long r6 __asm__("r6") = e;
+ __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6));
+}
+
+static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
+{
+ if (n == SYS_mmap) return __syscall1(n, (long)(long[]){a,b,c,d,e,f});
+
+ register long r1 __asm__("r1") = n;
+ register long r2 __asm__("r2") = a;
+ register long r3 __asm__("r3") = b;
+ register long r4 __asm__("r4") = c;
+ register long r5 __asm__("r5") = d;
+ register long r6 __asm__("r6") = e;
+ register long r7 __asm__("r7") = f;
+ __asm_syscall("+r"(r2), "r"(r1), "r"(r3), "r"(r4), "r"(r5), "r"(r6), "r"(r7));
+}