about summary refs log tree commit diff
diff options
context:
space:
mode:
authorrofl0r <retnyg@gmx.net>2014-01-07 22:53:38 +0100
committerrofl0r <retnyg@gmx.net>2014-02-23 11:09:16 +0100
commit664cd341921007cea52c8891f27ce35927dca378 (patch)
treeb6aa7594609a40616db8458f879dfdb0dddf4b7c
parent323272db175204b951f119dae4bd99ef05e20f13 (diff)
downloadmusl-664cd341921007cea52c8891f27ce35927dca378.tar.gz
musl-664cd341921007cea52c8891f27ce35927dca378.tar.xz
musl-664cd341921007cea52c8891f27ce35927dca378.zip
x32 port (diff against vanilla x86_64)
-rw-r--r--arch/x32/bits/alltypes.h.in12
-rw-r--r--arch/x32/bits/ipc.h4
-rw-r--r--arch/x32/bits/limits.h4
-rw-r--r--arch/x32/bits/msg.h5
-rw-r--r--arch/x32/bits/reg.h2
-rw-r--r--arch/x32/bits/setjmp.h2
-rw-r--r--arch/x32/bits/shm.h20
-rw-r--r--arch/x32/bits/signal.h12
-rw-r--r--arch/x32/bits/stat.h2
-rw-r--r--arch/x32/bits/stdint.h12
-rw-r--r--arch/x32/bits/syscall.h1239
-rw-r--r--arch/x32/src/syscall_cp_fixup.c34
-rw-r--r--arch/x32/syscall_arch.h93
-rw-r--r--src/fenv/x32/fenv.s52
-rw-r--r--src/ldso/x32/start.s22
-rw-r--r--src/math/x32/acosl.s2
-rw-r--r--src/math/x32/asinl.s2
-rw-r--r--src/math/x32/atan2l.s4
-rw-r--r--src/math/x32/atanl.s2
-rw-r--r--src/math/x32/exp2l.s42
-rw-r--r--src/math/x32/expl.s32
-rw-r--r--src/math/x32/fabsl.s2
-rw-r--r--src/math/x32/floorl.s18
-rw-r--r--src/math/x32/fmodl.s4
-rw-r--r--src/math/x32/llrintl.s6
-rw-r--r--src/math/x32/log10l.s2
-rw-r--r--src/math/x32/log1pl.s4
-rw-r--r--src/math/x32/log2l.s2
-rw-r--r--src/math/x32/logl.s2
-rw-r--r--src/math/x32/lrintl.s6
-rw-r--r--src/math/x32/remainderl.s4
-rw-r--r--src/math/x32/rintl.s2
-rw-r--r--src/math/x32/sqrtl.s2
-rw-r--r--src/process/x32/vfork.s2
-rw-r--r--src/signal/x32/restore.s2
-rw-r--r--src/thread/x32/__set_thread_area.s2
-rw-r--r--src/thread/x32/__unmapself.s4
-rw-r--r--src/thread/x32/clone.s6
-rw-r--r--src/thread/x32/syscall_cp.s6
39 files changed, 882 insertions, 793 deletions
diff --git a/arch/x32/bits/alltypes.h.in b/arch/x32/bits/alltypes.h.in
index 277e9448..b077fc93 100644
--- a/arch/x32/bits/alltypes.h.in
+++ b/arch/x32/bits/alltypes.h.in
@@ -1,12 +1,12 @@
-#define _Addr long
-#define _Int64 long
-#define _Reg long
+#define _Addr int
+#define _Int64 long long
+#define _Reg long long
 
 TYPEDEF __builtin_va_list va_list;
 TYPEDEF __builtin_va_list __isoc_va_list;
 
 #ifndef __cplusplus
-TYPEDEF int wchar_t;
+TYPEDEF long wchar_t;
 #endif
 TYPEDEF unsigned wint_t;
 
@@ -18,8 +18,8 @@ TYPEDEF float float_t;
 TYPEDEF double double_t;
 #endif
 
-TYPEDEF long time_t;
-TYPEDEF long suseconds_t;
+TYPEDEF long long time_t;
+TYPEDEF long long suseconds_t;
 
 TYPEDEF struct { union { int __i[14]; unsigned long __s[7]; } __u; } pthread_attr_t;
 TYPEDEF struct { union { int __i[10]; void *__p[5]; } __u; } pthread_mutex_t;
diff --git a/arch/x32/bits/ipc.h b/arch/x32/bits/ipc.h
index ac5d0979..6e604cef 100644
--- a/arch/x32/bits/ipc.h
+++ b/arch/x32/bits/ipc.h
@@ -7,8 +7,8 @@ struct ipc_perm
 	gid_t cgid;
 	mode_t mode;
 	int __ipc_perm_seq;
-	long __pad1;
-	long __pad2;
+	long long __pad1;
+	long long __pad2;
 };
 
 #define IPC_64 0
diff --git a/arch/x32/bits/limits.h b/arch/x32/bits/limits.h
index 792a30b9..65a3dd64 100644
--- a/arch/x32/bits/limits.h
+++ b/arch/x32/bits/limits.h
@@ -1,8 +1,8 @@
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define PAGE_SIZE 4096
-#define LONG_BIT 64
+#define LONG_BIT 32
 #endif
 
-#define LONG_MAX  0x7fffffffffffffffL
+#define LONG_MAX  0x7fffffffL
 #define LLONG_MAX  0x7fffffffffffffffLL
diff --git a/arch/x32/bits/msg.h b/arch/x32/bits/msg.h
index badcf168..c3b4eae0 100644
--- a/arch/x32/bits/msg.h
+++ b/arch/x32/bits/msg.h
@@ -5,9 +5,12 @@ struct msqid_ds
 	time_t msg_rtime;
 	time_t msg_ctime;
 	unsigned long msg_cbytes;
+	long __unused1;
 	msgqnum_t msg_qnum;
+	long __unused2;
 	msglen_t msg_qbytes;
+	long __unused3;
 	pid_t msg_lspid;
 	pid_t msg_lrpid;
-	unsigned long __unused[2];
+	unsigned long long __unused[2];
 };
diff --git a/arch/x32/bits/reg.h b/arch/x32/bits/reg.h
index a4df04ce..5faaef1a 100644
--- a/arch/x32/bits/reg.h
+++ b/arch/x32/bits/reg.h
@@ -1,5 +1,5 @@
 #undef __WORDSIZE
-#define __WORDSIZE 64
+#define __WORDSIZE 32
 #define R15    0
 #define R14    1
 #define R13    2
diff --git a/arch/x32/bits/setjmp.h b/arch/x32/bits/setjmp.h
index 63973a80..a9262a64 100644
--- a/arch/x32/bits/setjmp.h
+++ b/arch/x32/bits/setjmp.h
@@ -1 +1 @@
-typedef unsigned long __jmp_buf[8];
+typedef unsigned long long __jmp_buf[8];
diff --git a/arch/x32/bits/shm.h b/arch/x32/bits/shm.h
index 4c3c9fb7..8fa9e73d 100644
--- a/arch/x32/bits/shm.h
+++ b/arch/x32/bits/shm.h
@@ -10,16 +10,24 @@ struct shmid_ds
 	pid_t shm_cpid;
 	pid_t shm_lpid;
 	unsigned long shm_nattch;
-	unsigned long __pad1;
-	unsigned long __pad2;
+	unsigned long __pad0;
+	unsigned long long __pad1;
+	unsigned long long __pad2;
 };
 
 struct shminfo {
-	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+	unsigned long shmmax, __pad0, shmmin, __pad1, shmmni, __pad2,
+	              shmseg, __pad3, shmall, __pad4;
+	unsigned long long __unused[4];
 };
 
 struct shm_info {
 	int __used_ids;
-	unsigned long shm_tot, shm_rss, shm_swp;
-	unsigned long __swap_attempts, __swap_successes;
-};
+	int __pad_ids;
+	unsigned long shm_tot, __pad0, shm_rss, __pad1, shm_swp, __pad2;
+	unsigned long __swap_attempts, __pad3, __swap_successes, __pad4;
+}
+#ifdef __GNUC__
+__attribute__((__aligned__(8)))
+#endif
+;
diff --git a/arch/x32/bits/signal.h b/arch/x32/bits/signal.h
index d5f01ced..ecbb8139 100644
--- a/arch/x32/bits/signal.h
+++ b/arch/x32/bits/signal.h
@@ -42,12 +42,12 @@ typedef struct _fpstate {
 	unsigned padding[24];
 } *fpregset_t;
 struct sigcontext {
-	unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
-	unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+	unsigned long long r8, r9, r10, r11, r12, r13, r14, r15;
+	unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
 	unsigned short cs, gs, fs, __pad0;
-	unsigned long err, trapno, oldmask, cr2;
+	unsigned long long err, trapno, oldmask, cr2;
 	struct _fpstate *fpstate;
-	unsigned long __reserved1[8];
+	unsigned long long __reserved1[8];
 };
 typedef struct {
 	gregset_t gregs;
@@ -56,7 +56,7 @@ typedef struct {
 } mcontext_t;
 #else
 typedef struct {
-	unsigned long __space[32];
+	unsigned long long __space[32];
 } mcontext_t;
 #endif
 
@@ -66,7 +66,7 @@ typedef struct __ucontext {
 	stack_t uc_stack;
 	mcontext_t uc_mcontext;
 	sigset_t uc_sigmask;
-	unsigned long __fpregs_mem[64];
+	unsigned long long __fpregs_mem[64];
 } ucontext_t;
 
 #define SA_NOCLDSTOP  1
diff --git a/arch/x32/bits/stat.h b/arch/x32/bits/stat.h
index 081237c3..1f3aa1ed 100644
--- a/arch/x32/bits/stat.h
+++ b/arch/x32/bits/stat.h
@@ -18,5 +18,5 @@ struct stat {
 	struct timespec st_atim;
 	struct timespec st_mtim;
 	struct timespec st_ctim;
-	long __unused[3];
+	long long __unused[3];
 };
diff --git a/arch/x32/bits/stdint.h b/arch/x32/bits/stdint.h
index 1bb147f2..d1b27121 100644
--- a/arch/x32/bits/stdint.h
+++ b/arch/x32/bits/stdint.h
@@ -12,9 +12,9 @@ typedef uint32_t uint_fast32_t;
 #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
+#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 b/arch/x32/bits/syscall.h
index 5eb9b830..95e2d2f7 100644
--- a/arch/x32/bits/syscall.h
+++ b/arch/x32/bits/syscall.h
@@ -1,317 +1,307 @@
-#define __NR_read				0
-#define __NR_write				1
-#define __NR_open				2
-#define __NR_close				3
-#define __NR_stat				4
-#define __NR_fstat				5
-#define __NR_lstat				6
-#define __NR_poll				7
-#define __NR_lseek				8
-#define __NR_mmap				9
-#define __NR_mprotect			10
-#define __NR_munmap				11
-#define __NR_brk				12
-#define __NR_rt_sigaction		13
-#define __NR_rt_sigprocmask		14
-#define __NR_rt_sigreturn		15
-#define __NR_ioctl				16
-#define __NR_pread64			17
-#define __NR_pwrite64			18
-#define __NR_readv				19
-#define __NR_writev				20
-#define __NR_access				21
-#define __NR_pipe				22
-#define __NR_select				23
-#define __NR_sched_yield		24
-#define __NR_mremap				25
-#define __NR_msync				26
-#define __NR_mincore			27
-#define __NR_madvise			28
-#define __NR_shmget				29
-#define __NR_shmat				30
-#define __NR_shmctl				31
-#define __NR_dup				32
-#define __NR_dup2				33
-#define __NR_pause				34
-#define __NR_nanosleep			35
-#define __NR_getitimer			36
-#define __NR_alarm				37
-#define __NR_setitimer			38
-#define __NR_getpid				39
-#define __NR_sendfile			40
-#define __NR_socket				41
-#define __NR_connect			42
-#define __NR_accept				43
-#define __NR_sendto				44
-#define __NR_recvfrom			45
-#define __NR_sendmsg			46
-#define __NR_recvmsg			47
-#define __NR_shutdown			48
-#define __NR_bind				49
-#define __NR_listen				50
-#define __NR_getsockname		51
-#define __NR_getpeername		52
-#define __NR_socketpair			53
-#define __NR_setsockopt			54
-#define __NR_getsockopt			55
-#define __NR_clone				56
-#define __NR_fork				57
-#define __NR_vfork				58
-#define __NR_execve				59
-#define __NR_exit				60
-#define __NR_wait4				61
-#define __NR_kill				62
-#define __NR_uname				63
-#define __NR_semget				64
-#define __NR_semop				65
-#define __NR_semctl				66
-#define __NR_shmdt				67
-#define __NR_msgget				68
-#define __NR_msgsnd				69
-#define __NR_msgrcv				70
-#define __NR_msgctl				71
-#define __NR_fcntl				72
-#define __NR_flock				73
-#define __NR_fsync				74
-#define __NR_fdatasync			75
-#define __NR_truncate			76
-#define __NR_ftruncate			77
-#define __NR_getdents			78
-#define __NR_getcwd				79
-#define __NR_chdir				80
-#define __NR_fchdir				81
-#define __NR_rename				82
-#define __NR_mkdir				83
-#define __NR_rmdir				84
-#define __NR_creat				85
-#define __NR_link				86
-#define __NR_unlink				87
-#define __NR_symlink			88
-#define __NR_readlink			89
-#define __NR_chmod				90
-#define __NR_fchmod				91
-#define __NR_chown				92
-#define __NR_fchown				93
-#define __NR_lchown				94
-#define __NR_umask				95
-#define __NR_gettimeofday		96
-#define __NR_getrlimit			97
-#define __NR_getrusage			98
-#define __NR_sysinfo			99
-#define __NR_times				100
-#define __NR_ptrace				101
-#define __NR_getuid				102
-#define __NR_syslog				103
-#define __NR_getgid				104
-#define __NR_setuid				105
-#define __NR_setgid				106
-#define __NR_geteuid			107
-#define __NR_getegid			108
-#define __NR_setpgid			109
-#define __NR_getppid			110
-#define __NR_getpgrp			111
-#define __NR_setsid				112
-#define __NR_setreuid			113
-#define __NR_setregid			114
-#define __NR_getgroups			115
-#define __NR_setgroups			116
-#define __NR_setresuid			117
-#define __NR_getresuid			118
-#define __NR_setresgid			119
-#define __NR_getresgid			120
-#define __NR_getpgid			121
-#define __NR_setfsuid			122
-#define __NR_setfsgid			123
-#define __NR_getsid				124
-#define __NR_capget				125
-#define __NR_capset				126
-#define __NR_rt_sigpending		127
-#define __NR_rt_sigtimedwait	128
-#define __NR_rt_sigqueueinfo	129
-#define __NR_rt_sigsuspend		130
-#define __NR_sigaltstack		131
-#define __NR_utime				132
-#define __NR_mknod				133
-#define __NR_uselib				134
-#define __NR_personality		135
-#define __NR_ustat				136
-#define __NR_statfs				137
-#define __NR_fstatfs			138
-#define __NR_sysfs				139
-#define __NR_getpriority			140
-#define __NR_setpriority			141
-#define __NR_sched_setparam			142
-#define __NR_sched_getparam			143
-#define __NR_sched_setscheduler		144
-#define __NR_sched_getscheduler		145
-#define __NR_sched_get_priority_max	146
-#define __NR_sched_get_priority_min	147
-#define __NR_sched_rr_get_interval	148
-#define __NR_mlock					149
-#define __NR_munlock				150
-#define __NR_mlockall				151
-#define __NR_munlockall				152
-#define __NR_vhangup				153
-#define __NR_modify_ldt				154
-#define __NR_pivot_root				155
-#define __NR__sysctl				156
-#define __NR_prctl					157
-#define __NR_arch_prctl				158
-#define __NR_adjtimex				159
-#define __NR_setrlimit				160
-#define __NR_chroot					161
-#define __NR_sync					162
-#define __NR_acct					163
-#define __NR_settimeofday			164
-#define __NR_mount					165
-#define __NR_umount2				166
-#define __NR_swapon					167
-#define __NR_swapoff				168
-#define __NR_reboot					169
-#define __NR_sethostname			170
-#define __NR_setdomainname			171
-#define __NR_iopl					172
-#define __NR_ioperm					173
-#define __NR_create_module			174
-#define __NR_init_module			175
-#define __NR_delete_module			176
-#define __NR_get_kernel_syms		177
-#define __NR_query_module			178
-#define __NR_quotactl				179
-#define __NR_nfsservctl				180
-#define __NR_getpmsg				181
-#define __NR_putpmsg				182
-#define __NR_afs_syscall			183
-#define __NR_tuxcall				184
-#define __NR_security				185
-#define __NR_gettid					186
-#define __NR_readahead				187
-#define __NR_setxattr				188
-#define __NR_lsetxattr				189
-#define __NR_fsetxattr				190
-#define __NR_getxattr				191
-#define __NR_lgetxattr				192
-#define __NR_fgetxattr				193
-#define __NR_listxattr				194
-#define __NR_llistxattr				195
-#define __NR_flistxattr				196
-#define __NR_removexattr			197
-#define __NR_lremovexattr			198
-#define __NR_fremovexattr			199
-#define __NR_tkill					200
-#define __NR_time					201
-#define __NR_futex					202
-#define __NR_sched_setaffinity		203
-#define __NR_sched_getaffinity		204
-#define __NR_set_thread_area		205
-#define __NR_io_setup				206
-#define __NR_io_destroy				207
-#define __NR_io_getevents			208
-#define __NR_io_submit				209
-#define __NR_io_cancel				210
-#define __NR_get_thread_area		211
-#define __NR_lookup_dcookie			212
-#define __NR_epoll_create			213
-#define __NR_epoll_ctl_old			214
-#define __NR_epoll_wait_old			215
-#define __NR_remap_file_pages		216
-#define __NR_getdents64				217
-#define __NR_set_tid_address		218
-#define __NR_restart_syscall		219
-#define __NR_semtimedop				220
-#define __NR_fadvise64				221
-#define __NR_timer_create			222
-#define __NR_timer_settime			223
-#define __NR_timer_gettime			224
-#define __NR_timer_getoverrun		225
-#define __NR_timer_delete			226
-#define __NR_clock_settime			227
-#define __NR_clock_gettime			228
-#define __NR_clock_getres			229
-#define __NR_clock_nanosleep		230
-#define __NR_exit_group				231
-#define __NR_epoll_wait				232
-#define __NR_epoll_ctl				233
-#define __NR_tgkill					234
-#define __NR_utimes					235
-#define __NR_vserver				236
-#define __NR_mbind					237
-#define __NR_set_mempolicy			238
-#define __NR_get_mempolicy			239
-#define __NR_mq_open				240
-#define __NR_mq_unlink				241
-#define __NR_mq_timedsend			242
-#define __NR_mq_timedreceive		243
-#define __NR_mq_notify				244
-#define __NR_mq_getsetattr			245
-#define __NR_kexec_load				246
-#define __NR_waitid					247
-#define __NR_add_key				248
-#define __NR_request_key			249
-#define __NR_keyctl					250
-#define __NR_ioprio_set				251
-#define __NR_ioprio_get				252
-#define __NR_inotify_init			253
-#define __NR_inotify_add_watch		254
-#define __NR_inotify_rm_watch		255
-#define __NR_migrate_pages			256
-#define __NR_openat					257
-#define __NR_mkdirat				258
-#define __NR_mknodat				259
-#define __NR_fchownat				260
-#define __NR_futimesat				261
-#define __NR_newfstatat				262
-#define __NR_unlinkat				263
-#define __NR_renameat				264
-#define __NR_linkat					265
-#define __NR_symlinkat				266
-#define __NR_readlinkat				267
-#define __NR_fchmodat				268
-#define __NR_faccessat				269
-#define __NR_pselect6				270
-#define __NR_ppoll					271
-#define __NR_unshare				272
-#define __NR_set_robust_list		273
-#define __NR_get_robust_list		274
-#define __NR_splice					275
-#define __NR_tee					276
-#define __NR_sync_file_range		277
-#define __NR_vmsplice				278
-#define __NR_move_pages				279
-#define __NR_utimensat				280
-#define __NR_epoll_pwait			281
-#define __NR_signalfd				282
-#define __NR_timerfd_create			283
-#define __NR_eventfd				284
-#define __NR_fallocate				285
-#define __NR_timerfd_settime		286
-#define __NR_timerfd_gettime		287
-#define __NR_accept4				288
-#define __NR_signalfd4				289
-#define __NR_eventfd2				290
-#define __NR_epoll_create1			291
-#define __NR_dup3					292
-#define __NR_pipe2					293
-#define __NR_inotify_init1			294
-#define __NR_preadv					295
-#define __NR_pwritev				296
-#define __NR_rt_tgsigqueueinfo		297
-#define __NR_perf_event_open		298
-#define __NR_recvmmsg				299
-#define __NR_fanotify_init			300
-#define __NR_fanotify_mark			301
-#define __NR_prlimit64				302
-#define __NR_name_to_handle_at			303
-#define __NR_open_by_handle_at			304
-#define __NR_clock_adjtime			305
-#define __NR_syncfs				306
-#define __NR_sendmmsg				307
-#define __NR_setns				308
-#define __NR_getcpu				309
-#define __NR_process_vm_readv			310
-#define __NR_process_vm_writev			311
-#define __NR_kcmp				312
-#define __NR_finit_module			313
+#define __X32_SYSCALL_BIT        0x40000000
+#define __NR_read (__X32_SYSCALL_BIT + 0)
+#define __NR_write (__X32_SYSCALL_BIT + 1)
+#define __NR_open (__X32_SYSCALL_BIT + 2)
+#define __NR_close (__X32_SYSCALL_BIT + 3)
+#define __NR_stat (__X32_SYSCALL_BIT + 4)
+#define __NR_fstat (__X32_SYSCALL_BIT + 5)
+#define __NR_lstat (__X32_SYSCALL_BIT + 6)
+#define __NR_poll (__X32_SYSCALL_BIT + 7)
+#define __NR_lseek (__X32_SYSCALL_BIT + 8)
+#define __NR_mmap (__X32_SYSCALL_BIT + 9)
+#define __NR_mprotect (__X32_SYSCALL_BIT + 10)
+#define __NR_munmap (__X32_SYSCALL_BIT + 11)
+#define __NR_brk (__X32_SYSCALL_BIT + 12)
+#define __NR_rt_sigprocmask (__X32_SYSCALL_BIT + 14)
+#define __NR_pread64 (__X32_SYSCALL_BIT + 17)
+#define __NR_pwrite64 (__X32_SYSCALL_BIT + 18)
+#define __NR_access (__X32_SYSCALL_BIT + 21)
+#define __NR_pipe (__X32_SYSCALL_BIT + 22)
+#define __NR_select (__X32_SYSCALL_BIT + 23)
+#define __NR_sched_yield (__X32_SYSCALL_BIT + 24)
+#define __NR_mremap (__X32_SYSCALL_BIT + 25)
+#define __NR_msync (__X32_SYSCALL_BIT + 26)
+#define __NR_mincore (__X32_SYSCALL_BIT + 27)
+#define __NR_madvise (__X32_SYSCALL_BIT + 28)
+#define __NR_shmget (__X32_SYSCALL_BIT + 29)
+#define __NR_shmat (__X32_SYSCALL_BIT + 30)
+#define __NR_shmctl (__X32_SYSCALL_BIT + 31)
+#define __NR_dup (__X32_SYSCALL_BIT + 32)
+#define __NR_dup2 (__X32_SYSCALL_BIT + 33)
+#define __NR_pause (__X32_SYSCALL_BIT + 34)
+#define __NR_nanosleep (__X32_SYSCALL_BIT + 35)
+#define __NR_getitimer (__X32_SYSCALL_BIT + 36)
+#define __NR_alarm (__X32_SYSCALL_BIT + 37)
+#define __NR_setitimer (__X32_SYSCALL_BIT + 38)
+#define __NR_getpid (__X32_SYSCALL_BIT + 39)
+#define __NR_sendfile (__X32_SYSCALL_BIT + 40)
+#define __NR_socket (__X32_SYSCALL_BIT + 41)
+#define __NR_connect (__X32_SYSCALL_BIT + 42)
+#define __NR_accept (__X32_SYSCALL_BIT + 43)
+#define __NR_sendto (__X32_SYSCALL_BIT + 44)
+#define __NR_shutdown (__X32_SYSCALL_BIT + 48)
+#define __NR_bind (__X32_SYSCALL_BIT + 49)
+#define __NR_listen (__X32_SYSCALL_BIT + 50)
+#define __NR_getsockname (__X32_SYSCALL_BIT + 51)
+#define __NR_getpeername (__X32_SYSCALL_BIT + 52)
+#define __NR_socketpair (__X32_SYSCALL_BIT + 53)
+#define __NR_clone (__X32_SYSCALL_BIT + 56)
+#define __NR_fork (__X32_SYSCALL_BIT + 57)
+#define __NR_vfork (__X32_SYSCALL_BIT + 58)
+#define __NR_exit (__X32_SYSCALL_BIT + 60)
+#define __NR_wait4 (__X32_SYSCALL_BIT + 61)
+#define __NR_kill (__X32_SYSCALL_BIT + 62)
+#define __NR_uname (__X32_SYSCALL_BIT + 63)
+#define __NR_semget (__X32_SYSCALL_BIT + 64)
+#define __NR_semop (__X32_SYSCALL_BIT + 65)
+#define __NR_semctl (__X32_SYSCALL_BIT + 66)
+#define __NR_shmdt (__X32_SYSCALL_BIT + 67)
+#define __NR_msgget (__X32_SYSCALL_BIT + 68)
+#define __NR_msgsnd (__X32_SYSCALL_BIT + 69)
+#define __NR_msgrcv (__X32_SYSCALL_BIT + 70)
+#define __NR_msgctl (__X32_SYSCALL_BIT + 71)
+#define __NR_fcntl (__X32_SYSCALL_BIT + 72)
+#define __NR_flock (__X32_SYSCALL_BIT + 73)
+#define __NR_fsync (__X32_SYSCALL_BIT + 74)
+#define __NR_fdatasync (__X32_SYSCALL_BIT + 75)
+#define __NR_truncate (__X32_SYSCALL_BIT + 76)
+#define __NR_ftruncate (__X32_SYSCALL_BIT + 77)
+#define __NR_getdents (__X32_SYSCALL_BIT + 78)
+#define __NR_getcwd (__X32_SYSCALL_BIT + 79)
+#define __NR_chdir (__X32_SYSCALL_BIT + 80)
+#define __NR_fchdir (__X32_SYSCALL_BIT + 81)
+#define __NR_rename (__X32_SYSCALL_BIT + 82)
+#define __NR_mkdir (__X32_SYSCALL_BIT + 83)
+#define __NR_rmdir (__X32_SYSCALL_BIT + 84)
+#define __NR_creat (__X32_SYSCALL_BIT + 85)
+#define __NR_link (__X32_SYSCALL_BIT + 86)
+#define __NR_unlink (__X32_SYSCALL_BIT + 87)
+#define __NR_symlink (__X32_SYSCALL_BIT + 88)
+#define __NR_readlink (__X32_SYSCALL_BIT + 89)
+#define __NR_chmod (__X32_SYSCALL_BIT + 90)
+#define __NR_fchmod (__X32_SYSCALL_BIT + 91)
+#define __NR_chown (__X32_SYSCALL_BIT + 92)
+#define __NR_fchown (__X32_SYSCALL_BIT + 93)
+#define __NR_lchown (__X32_SYSCALL_BIT + 94)
+#define __NR_umask (__X32_SYSCALL_BIT + 95)
+#define __NR_gettimeofday (__X32_SYSCALL_BIT + 96)
+#define __NR_getrlimit (__X32_SYSCALL_BIT + 97)
+#define __NR_getrusage (__X32_SYSCALL_BIT + 98)
+#define __NR_sysinfo (__X32_SYSCALL_BIT + 99)
+#define __NR_times (__X32_SYSCALL_BIT + 100)
+#define __NR_getuid (__X32_SYSCALL_BIT + 102)
+#define __NR_syslog (__X32_SYSCALL_BIT + 103)
+#define __NR_getgid (__X32_SYSCALL_BIT + 104)
+#define __NR_setuid (__X32_SYSCALL_BIT + 105)
+#define __NR_setgid (__X32_SYSCALL_BIT + 106)
+#define __NR_geteuid (__X32_SYSCALL_BIT + 107)
+#define __NR_getegid (__X32_SYSCALL_BIT + 108)
+#define __NR_setpgid (__X32_SYSCALL_BIT + 109)
+#define __NR_getppid (__X32_SYSCALL_BIT + 110)
+#define __NR_getpgrp (__X32_SYSCALL_BIT + 111)
+#define __NR_setsid (__X32_SYSCALL_BIT + 112)
+#define __NR_setreuid (__X32_SYSCALL_BIT + 113)
+#define __NR_setregid (__X32_SYSCALL_BIT + 114)
+#define __NR_getgroups (__X32_SYSCALL_BIT + 115)
+#define __NR_setgroups (__X32_SYSCALL_BIT + 116)
+#define __NR_setresuid (__X32_SYSCALL_BIT + 117)
+#define __NR_getresuid (__X32_SYSCALL_BIT + 118)
+#define __NR_setresgid (__X32_SYSCALL_BIT + 119)
+#define __NR_getresgid (__X32_SYSCALL_BIT + 120)
+#define __NR_getpgid (__X32_SYSCALL_BIT + 121)
+#define __NR_setfsuid (__X32_SYSCALL_BIT + 122)
+#define __NR_setfsgid (__X32_SYSCALL_BIT + 123)
+#define __NR_getsid (__X32_SYSCALL_BIT + 124)
+#define __NR_capget (__X32_SYSCALL_BIT + 125)
+#define __NR_capset (__X32_SYSCALL_BIT + 126)
+#define __NR_rt_sigsuspend (__X32_SYSCALL_BIT + 130)
+#define __NR_utime (__X32_SYSCALL_BIT + 132)
+#define __NR_mknod (__X32_SYSCALL_BIT + 133)
+#define __NR_personality (__X32_SYSCALL_BIT + 135)
+#define __NR_ustat (__X32_SYSCALL_BIT + 136)
+#define __NR_statfs (__X32_SYSCALL_BIT + 137)
+#define __NR_fstatfs (__X32_SYSCALL_BIT + 138)
+#define __NR_sysfs (__X32_SYSCALL_BIT + 139)
+#define __NR_getpriority (__X32_SYSCALL_BIT + 140)
+#define __NR_setpriority (__X32_SYSCALL_BIT + 141)
+#define __NR_sched_setparam (__X32_SYSCALL_BIT + 142)
+#define __NR_sched_getparam (__X32_SYSCALL_BIT + 143)
+#define __NR_sched_setscheduler (__X32_SYSCALL_BIT + 144)
+#define __NR_sched_getscheduler (__X32_SYSCALL_BIT + 145)
+#define __NR_sched_get_priority_max (__X32_SYSCALL_BIT + 146)
+#define __NR_sched_get_priority_min (__X32_SYSCALL_BIT + 147)
+#define __NR_sched_rr_get_interval (__X32_SYSCALL_BIT + 148)
+#define __NR_mlock (__X32_SYSCALL_BIT + 149)
+#define __NR_munlock (__X32_SYSCALL_BIT + 150)
+#define __NR_mlockall (__X32_SYSCALL_BIT + 151)
+#define __NR_munlockall (__X32_SYSCALL_BIT + 152)
+#define __NR_vhangup (__X32_SYSCALL_BIT + 153)
+#define __NR_modify_ldt (__X32_SYSCALL_BIT + 154)
+#define __NR_pivot_root (__X32_SYSCALL_BIT + 155)
+#define __NR_prctl (__X32_SYSCALL_BIT + 157)
+#define __NR_arch_prctl (__X32_SYSCALL_BIT + 158)
+#define __NR_adjtimex (__X32_SYSCALL_BIT + 159)
+#define __NR_setrlimit (__X32_SYSCALL_BIT + 160)
+#define __NR_chroot (__X32_SYSCALL_BIT + 161)
+#define __NR_sync (__X32_SYSCALL_BIT + 162)
+#define __NR_acct (__X32_SYSCALL_BIT + 163)
+#define __NR_settimeofday (__X32_SYSCALL_BIT + 164)
+#define __NR_mount (__X32_SYSCALL_BIT + 165)
+#define __NR_umount2 (__X32_SYSCALL_BIT + 166)
+#define __NR_swapon (__X32_SYSCALL_BIT + 167)
+#define __NR_swapoff (__X32_SYSCALL_BIT + 168)
+#define __NR_reboot (__X32_SYSCALL_BIT + 169)
+#define __NR_sethostname (__X32_SYSCALL_BIT + 170)
+#define __NR_setdomainname (__X32_SYSCALL_BIT + 171)
+#define __NR_iopl (__X32_SYSCALL_BIT + 172)
+#define __NR_ioperm (__X32_SYSCALL_BIT + 173)
+#define __NR_init_module (__X32_SYSCALL_BIT + 175)
+#define __NR_delete_module (__X32_SYSCALL_BIT + 176)
+#define __NR_quotactl (__X32_SYSCALL_BIT + 179)
+#define __NR_getpmsg (__X32_SYSCALL_BIT + 181)
+#define __NR_putpmsg (__X32_SYSCALL_BIT + 182)
+#define __NR_afs_syscall (__X32_SYSCALL_BIT + 183)
+#define __NR_tuxcall (__X32_SYSCALL_BIT + 184)
+#define __NR_security (__X32_SYSCALL_BIT + 185)
+#define __NR_gettid (__X32_SYSCALL_BIT + 186)
+#define __NR_readahead (__X32_SYSCALL_BIT + 187)
+#define __NR_setxattr (__X32_SYSCALL_BIT + 188)
+#define __NR_lsetxattr (__X32_SYSCALL_BIT + 189)
+#define __NR_fsetxattr (__X32_SYSCALL_BIT + 190)
+#define __NR_getxattr (__X32_SYSCALL_BIT + 191)
+#define __NR_lgetxattr (__X32_SYSCALL_BIT + 192)
+#define __NR_fgetxattr (__X32_SYSCALL_BIT + 193)
+#define __NR_listxattr (__X32_SYSCALL_BIT + 194)
+#define __NR_llistxattr (__X32_SYSCALL_BIT + 195)
+#define __NR_flistxattr (__X32_SYSCALL_BIT + 196)
+#define __NR_removexattr (__X32_SYSCALL_BIT + 197)
+#define __NR_lremovexattr (__X32_SYSCALL_BIT + 198)
+#define __NR_fremovexattr (__X32_SYSCALL_BIT + 199)
+#define __NR_tkill (__X32_SYSCALL_BIT + 200)
+#define __NR_time (__X32_SYSCALL_BIT + 201)
+#define __NR_futex (__X32_SYSCALL_BIT + 202)
+#define __NR_sched_setaffinity (__X32_SYSCALL_BIT + 203)
+#define __NR_sched_getaffinity (__X32_SYSCALL_BIT + 204)
+#define __NR_io_setup (__X32_SYSCALL_BIT + 206)
+#define __NR_io_destroy (__X32_SYSCALL_BIT + 207)
+#define __NR_io_getevents (__X32_SYSCALL_BIT + 208)
+#define __NR_io_submit (__X32_SYSCALL_BIT + 209)
+#define __NR_io_cancel (__X32_SYSCALL_BIT + 210)
+#define __NR_lookup_dcookie (__X32_SYSCALL_BIT + 212)
+#define __NR_epoll_create (__X32_SYSCALL_BIT + 213)
+#define __NR_remap_file_pages (__X32_SYSCALL_BIT + 216)
+#define __NR_getdents64 (__X32_SYSCALL_BIT + 217)
+#define __NR_set_tid_address (__X32_SYSCALL_BIT + 218)
+#define __NR_restart_syscall (__X32_SYSCALL_BIT + 219)
+#define __NR_semtimedop (__X32_SYSCALL_BIT + 220)
+#define __NR_fadvise64 (__X32_SYSCALL_BIT + 221)
+#define __NR_timer_settime (__X32_SYSCALL_BIT + 223)
+#define __NR_timer_gettime (__X32_SYSCALL_BIT + 224)
+#define __NR_timer_getoverrun (__X32_SYSCALL_BIT + 225)
+#define __NR_timer_delete (__X32_SYSCALL_BIT + 226)
+#define __NR_clock_settime (__X32_SYSCALL_BIT + 227)
+#define __NR_clock_gettime (__X32_SYSCALL_BIT + 228)
+#define __NR_clock_getres (__X32_SYSCALL_BIT + 229)
+#define __NR_clock_nanosleep (__X32_SYSCALL_BIT + 230)
+#define __NR_exit_group (__X32_SYSCALL_BIT + 231)
+#define __NR_epoll_wait (__X32_SYSCALL_BIT + 232)
+#define __NR_epoll_ctl (__X32_SYSCALL_BIT + 233)
+#define __NR_tgkill (__X32_SYSCALL_BIT + 234)
+#define __NR_utimes (__X32_SYSCALL_BIT + 235)
+#define __NR_mbind (__X32_SYSCALL_BIT + 237)
+#define __NR_set_mempolicy (__X32_SYSCALL_BIT + 238)
+#define __NR_get_mempolicy (__X32_SYSCALL_BIT + 239)
+#define __NR_mq_open (__X32_SYSCALL_BIT + 240)
+#define __NR_mq_unlink (__X32_SYSCALL_BIT + 241)
+#define __NR_mq_timedsend (__X32_SYSCALL_BIT + 242)
+#define __NR_mq_timedreceive (__X32_SYSCALL_BIT + 243)
+#define __NR_mq_getsetattr (__X32_SYSCALL_BIT + 245)
+#define __NR_add_key (__X32_SYSCALL_BIT + 248)
+#define __NR_request_key (__X32_SYSCALL_BIT + 249)
+#define __NR_keyctl (__X32_SYSCALL_BIT + 250)
+#define __NR_ioprio_set (__X32_SYSCALL_BIT + 251)
+#define __NR_ioprio_get (__X32_SYSCALL_BIT + 252)
+#define __NR_inotify_init (__X32_SYSCALL_BIT + 253)
+#define __NR_inotify_add_watch (__X32_SYSCALL_BIT + 254)
+#define __NR_inotify_rm_watch (__X32_SYSCALL_BIT + 255)
+#define __NR_migrate_pages (__X32_SYSCALL_BIT + 256)
+#define __NR_openat (__X32_SYSCALL_BIT + 257)
+#define __NR_mkdirat (__X32_SYSCALL_BIT + 258)
+#define __NR_mknodat (__X32_SYSCALL_BIT + 259)
+#define __NR_fchownat (__X32_SYSCALL_BIT + 260)
+#define __NR_futimesat (__X32_SYSCALL_BIT + 261)
+#define __NR_newfstatat (__X32_SYSCALL_BIT + 262)
+#define __NR_unlinkat (__X32_SYSCALL_BIT + 263)
+#define __NR_renameat (__X32_SYSCALL_BIT + 264)
+#define __NR_linkat (__X32_SYSCALL_BIT + 265)
+#define __NR_symlinkat (__X32_SYSCALL_BIT + 266)
+#define __NR_readlinkat (__X32_SYSCALL_BIT + 267)
+#define __NR_fchmodat (__X32_SYSCALL_BIT + 268)
+#define __NR_faccessat (__X32_SYSCALL_BIT + 269)
+#define __NR_pselect6 (__X32_SYSCALL_BIT + 270)
+#define __NR_ppoll (__X32_SYSCALL_BIT + 271)
+#define __NR_unshare (__X32_SYSCALL_BIT + 272)
+#define __NR_splice (__X32_SYSCALL_BIT + 275)
+#define __NR_tee (__X32_SYSCALL_BIT + 276)
+#define __NR_sync_file_range (__X32_SYSCALL_BIT + 277)
+#define __NR_utimensat (__X32_SYSCALL_BIT + 280)
+#define __NR_epoll_pwait (__X32_SYSCALL_BIT + 281)
+#define __NR_signalfd (__X32_SYSCALL_BIT + 282)
+#define __NR_timerfd_create (__X32_SYSCALL_BIT + 283)
+#define __NR_eventfd (__X32_SYSCALL_BIT + 284)
+#define __NR_fallocate (__X32_SYSCALL_BIT + 285)
+#define __NR_timerfd_settime (__X32_SYSCALL_BIT + 286)
+#define __NR_timerfd_gettime (__X32_SYSCALL_BIT + 287)
+#define __NR_accept4 (__X32_SYSCALL_BIT + 288)
+#define __NR_signalfd4 (__X32_SYSCALL_BIT + 289)
+#define __NR_eventfd2 (__X32_SYSCALL_BIT + 290)
+#define __NR_epoll_create1 (__X32_SYSCALL_BIT + 291)
+#define __NR_dup3 (__X32_SYSCALL_BIT + 292)
+#define __NR_pipe2 (__X32_SYSCALL_BIT + 293)
+#define __NR_inotify_init1 (__X32_SYSCALL_BIT + 294)
+#define __NR_perf_event_open (__X32_SYSCALL_BIT + 298)
+#define __NR_fanotify_init (__X32_SYSCALL_BIT + 300)
+#define __NR_fanotify_mark (__X32_SYSCALL_BIT + 301)
+#define __NR_prlimit64 (__X32_SYSCALL_BIT + 302)
+#define __NR_name_to_handle_at (__X32_SYSCALL_BIT + 303)
+#define __NR_open_by_handle_at (__X32_SYSCALL_BIT + 304)
+#define __NR_clock_adjtime (__X32_SYSCALL_BIT + 305)
+#define __NR_syncfs (__X32_SYSCALL_BIT + 306)
+#define __NR_setns (__X32_SYSCALL_BIT + 308)
+#define __NR_getcpu (__X32_SYSCALL_BIT + 309)
+#define __NR_kcmp (__X32_SYSCALL_BIT + 312)
+#define __NR_finit_module (__X32_SYSCALL_BIT + 313)
+#define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
+#define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
+#define __NR_ioctl (__X32_SYSCALL_BIT + 514)
+#define __NR_readv (__X32_SYSCALL_BIT + 515)
+#define __NR_writev (__X32_SYSCALL_BIT + 516)
+#define __NR_recvfrom (__X32_SYSCALL_BIT + 517)
+#define __NR_sendmsg (__X32_SYSCALL_BIT + 518)
+#define __NR_recvmsg (__X32_SYSCALL_BIT + 519)
+#define __NR_execve (__X32_SYSCALL_BIT + 520)
+#define __NR_ptrace (__X32_SYSCALL_BIT + 521)
+#define __NR_rt_sigpending (__X32_SYSCALL_BIT + 522)
+#define __NR_rt_sigtimedwait (__X32_SYSCALL_BIT + 523)
+#define __NR_rt_sigqueueinfo (__X32_SYSCALL_BIT + 524)
+#define __NR_sigaltstack (__X32_SYSCALL_BIT + 525)
+#define __NR_timer_create (__X32_SYSCALL_BIT + 526)
+#define __NR_mq_notify (__X32_SYSCALL_BIT + 527)
+#define __NR_kexec_load (__X32_SYSCALL_BIT + 528)
+#define __NR_waitid (__X32_SYSCALL_BIT + 529)
+#define __NR_set_robust_list (__X32_SYSCALL_BIT + 530)
+#define __NR_get_robust_list (__X32_SYSCALL_BIT + 531)
+#define __NR_vmsplice (__X32_SYSCALL_BIT + 532)
+#define __NR_move_pages (__X32_SYSCALL_BIT + 533)
+#define __NR_preadv (__X32_SYSCALL_BIT + 534)
+#define __NR_pwritev (__X32_SYSCALL_BIT + 535)
+#define __NR_rt_tgsigqueueinfo (__X32_SYSCALL_BIT + 536)
+#define __NR_recvmmsg (__X32_SYSCALL_BIT + 537)
+#define __NR_sendmmsg (__X32_SYSCALL_BIT + 538)
+#define __NR_process_vm_readv (__X32_SYSCALL_BIT + 539)
+#define __NR_process_vm_writev (__X32_SYSCALL_BIT + 540)
+#define __NR_setsockopt (__X32_SYSCALL_BIT + 541)
+#define __NR_getsockopt (__X32_SYSCALL_BIT + 542)
 
 #undef __NR_fstatat
 #undef __NR_pread
@@ -327,320 +317,311 @@
 
 /* Repeat with SYS_ prefix */
 
-#define SYS_read				0
-#define SYS_write				1
-#define SYS_open				2
-#define SYS_close				3
-#define SYS_stat				4
-#define SYS_fstat				5
-#define SYS_lstat				6
-#define SYS_poll				7
-#define SYS_lseek				8
-#define SYS_mmap				9
-#define SYS_mprotect			10
-#define SYS_munmap				11
-#define SYS_brk				12
-#define SYS_rt_sigaction		13
-#define SYS_rt_sigprocmask		14
-#define SYS_rt_sigreturn		15
-#define SYS_ioctl				16
-#define SYS_pread64			17
-#define SYS_pwrite64			18
-#define SYS_readv				19
-#define SYS_writev				20
-#define SYS_access				21
-#define SYS_pipe				22
-#define SYS_select				23
-#define SYS_sched_yield		24
-#define SYS_mremap				25
-#define SYS_msync				26
-#define SYS_mincore			27
-#define SYS_madvise			28
-#define SYS_shmget				29
-#define SYS_shmat				30
-#define SYS_shmctl				31
-#define SYS_dup				32
-#define SYS_dup2				33
-#define SYS_pause				34
-#define SYS_nanosleep			35
-#define SYS_getitimer			36
-#define SYS_alarm				37
-#define SYS_setitimer			38
-#define SYS_getpid				39
-#define SYS_sendfile			40
-#define SYS_socket				41
-#define SYS_connect			42
-#define SYS_accept				43
-#define SYS_sendto				44
-#define SYS_recvfrom			45
-#define SYS_sendmsg			46
-#define SYS_recvmsg			47
-#define SYS_shutdown			48
-#define SYS_bind				49
-#define SYS_listen				50
-#define SYS_getsockname		51
-#define SYS_getpeername		52
-#define SYS_socketpair			53
-#define SYS_setsockopt			54
-#define SYS_getsockopt			55
-#define SYS_clone				56
-#define SYS_fork				57
-#define SYS_vfork				58
-#define SYS_execve				59
-#define SYS_exit				60
-#define SYS_wait4				61
-#define SYS_kill				62
-#define SYS_uname				63
-#define SYS_semget				64
-#define SYS_semop				65
-#define SYS_semctl				66
-#define SYS_shmdt				67
-#define SYS_msgget				68
-#define SYS_msgsnd				69
-#define SYS_msgrcv				70
-#define SYS_msgctl				71
-#define SYS_fcntl				72
-#define SYS_flock				73
-#define SYS_fsync				74
-#define SYS_fdatasync			75
-#define SYS_truncate			76
-#define SYS_ftruncate			77
-#define SYS_getdents			78
-#define SYS_getcwd				79
-#define SYS_chdir				80
-#define SYS_fchdir				81
-#define SYS_rename				82
-#define SYS_mkdir				83
-#define SYS_rmdir				84
-#define SYS_creat				85
-#define SYS_link				86
-#define SYS_unlink				87
-#define SYS_symlink			88
-#define SYS_readlink			89
-#define SYS_chmod				90
-#define SYS_fchmod				91
-#define SYS_chown				92
-#define SYS_fchown				93
-#define SYS_lchown				94
-#define SYS_umask				95
-#define SYS_gettimeofday		96
-#define SYS_getrlimit			97
-#define SYS_getrusage			98
-#define SYS_sysinfo			99
-#define SYS_times				100
-#define SYS_ptrace				101
-#define SYS_getuid				102
-#define SYS_syslog				103
-#define SYS_getgid				104
-#define SYS_setuid				105
-#define SYS_setgid				106
-#define SYS_geteuid			107
-#define SYS_getegid			108
-#define SYS_setpgid			109
-#define SYS_getppid			110
-#define SYS_getpgrp			111
-#define SYS_setsid				112
-#define SYS_setreuid			113
-#define SYS_setregid			114
-#define SYS_getgroups			115
-#define SYS_setgroups			116
-#define SYS_setresuid			117
-#define SYS_getresuid			118
-#define SYS_setresgid			119
-#define SYS_getresgid			120
-#define SYS_getpgid			121
-#define SYS_setfsuid			122
-#define SYS_setfsgid			123
-#define SYS_getsid				124
-#define SYS_capget				125
-#define SYS_capset				126
-#define SYS_rt_sigpending		127
-#define SYS_rt_sigtimedwait	128
-#define SYS_rt_sigqueueinfo	129
-#define SYS_rt_sigsuspend		130
-#define SYS_sigaltstack		131
-#define SYS_utime				132
-#define SYS_mknod				133
-#define SYS_uselib				134
-#define SYS_personality		135
-#define SYS_ustat				136
-#define SYS_statfs				137
-#define SYS_fstatfs			138
-#define SYS_sysfs				139
-#define SYS_getpriority			140
-#define SYS_setpriority			141
-#define SYS_sched_setparam			142
-#define SYS_sched_getparam			143
-#define SYS_sched_setscheduler		144
-#define SYS_sched_getscheduler		145
-#define SYS_sched_get_priority_max	146
-#define SYS_sched_get_priority_min	147
-#define SYS_sched_rr_get_interval	148
-#define SYS_mlock					149
-#define SYS_munlock				150
-#define SYS_mlockall				151
-#define SYS_munlockall				152
-#define SYS_vhangup				153
-#define SYS_modify_ldt				154
-#define SYS_pivot_root				155
-#define SYS__sysctl				156
-#define SYS_prctl					157
-#define SYS_arch_prctl				158
-#define SYS_adjtimex				159
-#define SYS_setrlimit				160
-#define SYS_chroot					161
-#define SYS_sync					162
-#define SYS_acct					163
-#define SYS_settimeofday			164
-#define SYS_mount					165
-#define SYS_umount2				166
-#define SYS_swapon					167
-#define SYS_swapoff				168
-#define SYS_reboot					169
-#define SYS_sethostname			170
-#define SYS_setdomainname			171
-#define SYS_iopl					172
-#define SYS_ioperm					173
-#define SYS_create_module			174
-#define SYS_init_module			175
-#define SYS_delete_module			176
-#define SYS_get_kernel_syms		177
-#define SYS_query_module			178
-#define SYS_quotactl				179
-#define SYS_nfsservctl				180
-#define SYS_getpmsg				181
-#define SYS_putpmsg				182
-#define SYS_afs_syscall			183
-#define SYS_tuxcall				184
-#define SYS_security				185
-#define SYS_gettid					186
-#define SYS_readahead				187
-#define SYS_setxattr				188
-#define SYS_lsetxattr				189
-#define SYS_fsetxattr				190
-#define SYS_getxattr				191
-#define SYS_lgetxattr				192
-#define SYS_fgetxattr				193
-#define SYS_listxattr				194
-#define SYS_llistxattr				195
-#define SYS_flistxattr				196
-#define SYS_removexattr			197
-#define SYS_lremovexattr			198
-#define SYS_fremovexattr			199
-#define SYS_tkill					200
-#define SYS_time					201
-#define SYS_futex					202
-#define SYS_sched_setaffinity		203
-#define SYS_sched_getaffinity		204
-#define SYS_set_thread_area		205
-#define SYS_io_setup				206
-#define SYS_io_destroy				207
-#define SYS_io_getevents			208
-#define SYS_io_submit				209
-#define SYS_io_cancel				210
-#define SYS_get_thread_area		211
-#define SYS_lookup_dcookie			212
-#define SYS_epoll_create			213
-#define SYS_epoll_ctl_old			214
-#define SYS_epoll_wait_old			215
-#define SYS_remap_file_pages		216
-#define SYS_getdents64				217
-#define SYS_set_tid_address		218
-#define SYS_restart_syscall		219
-#define SYS_semtimedop				220
-#define SYS_fadvise64				221
-#define SYS_timer_create			222
-#define SYS_timer_settime			223
-#define SYS_timer_gettime			224
-#define SYS_timer_getoverrun		225
-#define SYS_timer_delete			226
-#define SYS_clock_settime			227
-#define SYS_clock_gettime			228
-#define SYS_clock_getres			229
-#define SYS_clock_nanosleep		230
-#define SYS_exit_group				231
-#define SYS_epoll_wait				232
-#define SYS_epoll_ctl				233
-#define SYS_tgkill					234
-#define SYS_utimes					235
-#define SYS_vserver				236
-#define SYS_mbind					237
-#define SYS_set_mempolicy			238
-#define SYS_get_mempolicy			239
-#define SYS_mq_open				240
-#define SYS_mq_unlink				241
-#define SYS_mq_timedsend			242
-#define SYS_mq_timedreceive		243
-#define SYS_mq_notify				244
-#define SYS_mq_getsetattr			245
-#define SYS_kexec_load				246
-#define SYS_waitid					247
-#define SYS_add_key				248
-#define SYS_request_key			249
-#define SYS_keyctl					250
-#define SYS_ioprio_set				251
-#define SYS_ioprio_get				252
-#define SYS_inotify_init			253
-#define SYS_inotify_add_watch		254
-#define SYS_inotify_rm_watch		255
-#define SYS_migrate_pages			256
-#define SYS_openat					257
-#define SYS_mkdirat				258
-#define SYS_mknodat				259
-#define SYS_fchownat				260
-#define SYS_futimesat				261
-#define SYS_newfstatat				262
-#define SYS_unlinkat				263
-#define SYS_renameat				264
-#define SYS_linkat					265
-#define SYS_symlinkat				266
-#define SYS_readlinkat				267
-#define SYS_fchmodat				268
-#define SYS_faccessat				269
-#define SYS_pselect6				270
-#define SYS_ppoll					271
-#define SYS_unshare				272
-#define SYS_set_robust_list		273
-#define SYS_get_robust_list		274
-#define SYS_splice					275
-#define SYS_tee					276
-#define SYS_sync_file_range		277
-#define SYS_vmsplice				278
-#define SYS_move_pages				279
-#define SYS_utimensat				280
-#define SYS_epoll_pwait			281
-#define SYS_signalfd				282
-#define SYS_timerfd_create			283
-#define SYS_eventfd				284
-#define SYS_fallocate				285
-#define SYS_timerfd_settime		286
-#define SYS_timerfd_gettime		287
-#define SYS_accept4				288
-#define SYS_signalfd4				289
-#define SYS_eventfd2				290
-#define SYS_epoll_create1			291
-#define SYS_dup3					292
-#define SYS_pipe2					293
-#define SYS_inotify_init1			294
-#define SYS_preadv					295
-#define SYS_pwritev				296
-#define SYS_rt_tgsigqueueinfo		297
-#define SYS_perf_event_open		298
-#define SYS_recvmmsg				299
-#define SYS_fanotify_init			300
-#define SYS_fanotify_mark			301
-#define SYS_prlimit64				302
-#define SYS_name_to_handle_at			303
-#define SYS_open_by_handle_at			304
-#define SYS_clock_adjtime			305
-#define SYS_syncfs				306
-#define SYS_sendmmsg				307
-#define SYS_setns				308
-#define SYS_getcpu				309
-#define SYS_process_vm_readv			310
-#define SYS_process_vm_writev			311
-#define SYS_kcmp				312
-#define SYS_finit_module			313
+
+
+#define SYS_read __NR_read
+#define SYS_write __NR_write
+#define SYS_open __NR_open
+#define SYS_close __NR_close
+#define SYS_stat __NR_stat
+#define SYS_fstat __NR_fstat
+#define SYS_lstat __NR_lstat
+#define SYS_poll __NR_poll
+#define SYS_lseek __NR_lseek
+#define SYS_mmap __NR_mmap
+#define SYS_mprotect __NR_mprotect
+#define SYS_munmap __NR_munmap
+#define SYS_brk __NR_brk
+#define SYS_rt_sigprocmask __NR_rt_sigprocmask
+#define SYS_pread64 __NR_pread64
+#define SYS_pwrite64 __NR_pwrite64
+#define SYS_access __NR_access
+#define SYS_pipe __NR_pipe
+#define SYS_select __NR_select
+#define SYS_sched_yield __NR_sched_yield
+#define SYS_mremap __NR_mremap
+#define SYS_msync __NR_msync
+#define SYS_mincore __NR_mincore
+#define SYS_madvise __NR_madvise
+#define SYS_shmget __NR_shmget
+#define SYS_shmat __NR_shmat
+#define SYS_shmctl __NR_shmctl
+#define SYS_dup __NR_dup
+#define SYS_dup2 __NR_dup2
+#define SYS_pause __NR_pause
+#define SYS_nanosleep __NR_nanosleep
+#define SYS_getitimer __NR_getitimer
+#define SYS_alarm __NR_alarm
+#define SYS_setitimer __NR_setitimer
+#define SYS_getpid __NR_getpid
+#define SYS_sendfile __NR_sendfile
+#define SYS_socket __NR_socket
+#define SYS_connect __NR_connect
+#define SYS_accept __NR_accept
+#define SYS_sendto __NR_sendto
+#define SYS_shutdown __NR_shutdown
+#define SYS_bind __NR_bind
+#define SYS_listen __NR_listen
+#define SYS_getsockname __NR_getsockname
+#define SYS_getpeername __NR_getpeername
+#define SYS_socketpair __NR_socketpair
+#define SYS_clone __NR_clone
+#define SYS_fork __NR_fork
+#define SYS_vfork __NR_vfork
+#define SYS_exit __NR_exit
+#define SYS_wait4 __NR_wait4
+#define SYS_kill __NR_kill
+#define SYS_uname __NR_uname
+#define SYS_semget __NR_semget
+#define SYS_semop __NR_semop
+#define SYS_semctl __NR_semctl
+#define SYS_shmdt __NR_shmdt
+#define SYS_msgget __NR_msgget
+#define SYS_msgsnd __NR_msgsnd
+#define SYS_msgrcv __NR_msgrcv
+#define SYS_msgctl __NR_msgctl
+#define SYS_fcntl __NR_fcntl
+#define SYS_flock __NR_flock
+#define SYS_fsync __NR_fsync
+#define SYS_fdatasync __NR_fdatasync
+#define SYS_truncate __NR_truncate
+#define SYS_ftruncate __NR_ftruncate
+#define SYS_getdents __NR_getdents
+#define SYS_getcwd __NR_getcwd
+#define SYS_chdir __NR_chdir
+#define SYS_fchdir __NR_fchdir
+#define SYS_rename __NR_rename
+#define SYS_mkdir __NR_mkdir
+#define SYS_rmdir __NR_rmdir
+#define SYS_creat __NR_creat
+#define SYS_link __NR_link
+#define SYS_unlink __NR_unlink
+#define SYS_symlink __NR_symlink
+#define SYS_readlink __NR_readlink
+#define SYS_chmod __NR_chmod
+#define SYS_fchmod __NR_fchmod
+#define SYS_chown __NR_chown
+#define SYS_fchown __NR_fchown
+#define SYS_lchown __NR_lchown
+#define SYS_umask __NR_umask
+#define SYS_gettimeofday __NR_gettimeofday
+#define SYS_getrlimit __NR_getrlimit
+#define SYS_getrusage __NR_getrusage
+#define SYS_sysinfo __NR_sysinfo
+#define SYS_times __NR_times
+#define SYS_getuid __NR_getuid
+#define SYS_syslog __NR_syslog
+#define SYS_getgid __NR_getgid
+#define SYS_setuid __NR_setuid
+#define SYS_setgid __NR_setgid
+#define SYS_geteuid __NR_geteuid
+#define SYS_getegid __NR_getegid
+#define SYS_setpgid __NR_setpgid
+#define SYS_getppid __NR_getppid
+#define SYS_getpgrp __NR_getpgrp
+#define SYS_setsid __NR_setsid
+#define SYS_setreuid __NR_setreuid
+#define SYS_setregid __NR_setregid
+#define SYS_getgroups __NR_getgroups
+#define SYS_setgroups __NR_setgroups
+#define SYS_setresuid __NR_setresuid
+#define SYS_getresuid __NR_getresuid
+#define SYS_setresgid __NR_setresgid
+#define SYS_getresgid __NR_getresgid
+#define SYS_getpgid __NR_getpgid
+#define SYS_setfsuid __NR_setfsuid
+#define SYS_setfsgid __NR_setfsgid
+#define SYS_getsid __NR_getsid
+#define SYS_capget __NR_capget
+#define SYS_capset __NR_capset
+#define SYS_rt_sigsuspend __NR_rt_sigsuspend
+#define SYS_utime __NR_utime
+#define SYS_mknod __NR_mknod
+#define SYS_personality __NR_personality
+#define SYS_ustat __NR_ustat
+#define SYS_statfs __NR_statfs
+#define SYS_fstatfs __NR_fstatfs
+#define SYS_sysfs __NR_sysfs
+#define SYS_getpriority __NR_getpriority
+#define SYS_setpriority __NR_setpriority
+#define SYS_sched_setparam __NR_sched_setparam
+#define SYS_sched_getparam __NR_sched_getparam
+#define SYS_sched_setscheduler __NR_sched_setscheduler
+#define SYS_sched_getscheduler __NR_sched_getscheduler
+#define SYS_sched_get_priority_max __NR_sched_get_priority_max
+#define SYS_sched_get_priority_min __NR_sched_get_priority_min
+#define SYS_sched_rr_get_interval __NR_sched_rr_get_interval
+#define SYS_mlock __NR_mlock
+#define SYS_munlock __NR_munlock
+#define SYS_mlockall __NR_mlockall
+#define SYS_munlockall __NR_munlockall
+#define SYS_vhangup __NR_vhangup
+#define SYS_modify_ldt __NR_modify_ldt
+#define SYS_pivot_root __NR_pivot_root
+#define SYS_prctl __NR_prctl
+#define SYS_arch_prctl __NR_arch_prctl
+#define SYS_adjtimex __NR_adjtimex
+#define SYS_setrlimit __NR_setrlimit
+#define SYS_chroot __NR_chroot
+#define SYS_sync __NR_sync
+#define SYS_acct __NR_acct
+#define SYS_settimeofday __NR_settimeofday
+#define SYS_mount __NR_mount
+#define SYS_umount2 __NR_umount2
+#define SYS_swapon __NR_swapon
+#define SYS_swapoff __NR_swapoff
+#define SYS_reboot __NR_reboot
+#define SYS_sethostname __NR_sethostname
+#define SYS_setdomainname __NR_setdomainname
+#define SYS_iopl __NR_iopl
+#define SYS_ioperm __NR_ioperm
+#define SYS_init_module __NR_init_module
+#define SYS_delete_module __NR_delete_module
+#define SYS_quotactl __NR_quotactl
+#define SYS_getpmsg __NR_getpmsg
+#define SYS_putpmsg __NR_putpmsg
+#define SYS_afs_syscall __NR_afs_syscall
+#define SYS_tuxcall __NR_tuxcall
+#define SYS_security __NR_security
+#define SYS_gettid __NR_gettid
+#define SYS_readahead __NR_readahead
+#define SYS_setxattr __NR_setxattr
+#define SYS_lsetxattr __NR_lsetxattr
+#define SYS_fsetxattr __NR_fsetxattr
+#define SYS_getxattr __NR_getxattr
+#define SYS_lgetxattr __NR_lgetxattr
+#define SYS_fgetxattr __NR_fgetxattr
+#define SYS_listxattr __NR_listxattr
+#define SYS_llistxattr __NR_llistxattr
+#define SYS_flistxattr __NR_flistxattr
+#define SYS_removexattr __NR_removexattr
+#define SYS_lremovexattr __NR_lremovexattr
+#define SYS_fremovexattr __NR_fremovexattr
+#define SYS_tkill __NR_tkill
+#define SYS_time __NR_time
+#define SYS_futex __NR_futex
+#define SYS_sched_setaffinity __NR_sched_setaffinity
+#define SYS_sched_getaffinity __NR_sched_getaffinity
+#define SYS_io_setup __NR_io_setup
+#define SYS_io_destroy __NR_io_destroy
+#define SYS_io_getevents __NR_io_getevents
+#define SYS_io_submit __NR_io_submit
+#define SYS_io_cancel __NR_io_cancel
+#define SYS_lookup_dcookie __NR_lookup_dcookie
+#define SYS_epoll_create __NR_epoll_create
+#define SYS_remap_file_pages __NR_remap_file_pages
+#define SYS_getdents64 __NR_getdents64
+#define SYS_set_tid_address __NR_set_tid_address
+#define SYS_restart_syscall __NR_restart_syscall
+#define SYS_semtimedop __NR_semtimedop
+#define SYS_fadvise64 __NR_fadvise64
+#define SYS_timer_settime __NR_timer_settime
+#define SYS_timer_gettime __NR_timer_gettime
+#define SYS_timer_getoverrun __NR_timer_getoverrun
+#define SYS_timer_delete __NR_timer_delete
+#define SYS_clock_settime __NR_clock_settime
+#define SYS_clock_gettime __NR_clock_gettime
+#define SYS_clock_getres __NR_clock_getres
+#define SYS_clock_nanosleep __NR_clock_nanosleep
+#define SYS_exit_group __NR_exit_group
+#define SYS_epoll_wait __NR_epoll_wait
+#define SYS_epoll_ctl __NR_epoll_ctl
+#define SYS_tgkill __NR_tgkill
+#define SYS_utimes __NR_utimes
+#define SYS_mbind __NR_mbind
+#define SYS_set_mempolicy __NR_set_mempolicy
+#define SYS_get_mempolicy __NR_get_mempolicy
+#define SYS_mq_open __NR_mq_open
+#define SYS_mq_unlink __NR_mq_unlink
+#define SYS_mq_timedsend __NR_mq_timedsend
+#define SYS_mq_timedreceive __NR_mq_timedreceive
+#define SYS_mq_getsetattr __NR_mq_getsetattr
+#define SYS_add_key __NR_add_key
+#define SYS_request_key __NR_request_key
+#define SYS_keyctl __NR_keyctl
+#define SYS_ioprio_set __NR_ioprio_set
+#define SYS_ioprio_get __NR_ioprio_get
+#define SYS_inotify_init __NR_inotify_init
+#define SYS_inotify_add_watch __NR_inotify_add_watch
+#define SYS_inotify_rm_watch __NR_inotify_rm_watch
+#define SYS_migrate_pages __NR_migrate_pages
+#define SYS_openat __NR_openat
+#define SYS_mkdirat __NR_mkdirat
+#define SYS_mknodat __NR_mknodat
+#define SYS_fchownat __NR_fchownat
+#define SYS_futimesat __NR_futimesat
+#define SYS_newfstatat __NR_newfstatat
+#define SYS_unlinkat __NR_unlinkat
+#define SYS_renameat __NR_renameat
+#define SYS_linkat __NR_linkat
+#define SYS_symlinkat __NR_symlinkat
+#define SYS_readlinkat __NR_readlinkat
+#define SYS_fchmodat __NR_fchmodat
+#define SYS_faccessat __NR_faccessat
+#define SYS_pselect6 __NR_pselect6
+#define SYS_ppoll __NR_ppoll
+#define SYS_unshare __NR_unshare
+#define SYS_splice __NR_splice
+#define SYS_tee __NR_tee
+#define SYS_sync_file_range __NR_sync_file_range
+#define SYS_utimensat __NR_utimensat
+#define SYS_epoll_pwait __NR_epoll_pwait
+#define SYS_signalfd __NR_signalfd
+#define SYS_timerfd_create __NR_timerfd_create
+#define SYS_eventfd __NR_eventfd
+#define SYS_fallocate __NR_fallocate
+#define SYS_timerfd_settime __NR_timerfd_settime
+#define SYS_timerfd_gettime __NR_timerfd_gettime
+#define SYS_accept4 __NR_accept4
+#define SYS_signalfd4 __NR_signalfd4
+#define SYS_eventfd2 __NR_eventfd2
+#define SYS_epoll_create1 __NR_epoll_create1
+#define SYS_dup3 __NR_dup3
+#define SYS_pipe2 __NR_pipe2
+#define SYS_inotify_init1 __NR_inotify_init1
+#define SYS_perf_event_open __NR_perf_event_open
+#define SYS_fanotify_init __NR_fanotify_init
+#define SYS_fanotify_mark __NR_fanotify_mark
+#define SYS_prlimit64 __NR_prlimit64
+#define SYS_name_to_handle_at __NR_name_to_handle_at
+#define SYS_open_by_handle_at __NR_open_by_handle_at
+#define SYS_clock_adjtime __NR_clock_adjtime
+#define SYS_syncfs __NR_syncfs
+#define SYS_setns __NR_setns
+#define SYS_getcpu __NR_getcpu
+#define SYS_kcmp __NR_kcmp
+#define SYS_finit_module __NR_finit_module
+#define SYS_rt_sigaction __NR_rt_sigaction
+#define SYS_rt_sigreturn __NR_rt_sigreturn
+#define SYS_ioctl __NR_ioctl
+#define SYS_readv __NR_readv
+#define SYS_writev __NR_writev
+#define SYS_recvfrom __NR_recvfrom
+#define SYS_sendmsg __NR_sendmsg
+#define SYS_recvmsg __NR_recvmsg
+#define SYS_execve __NR_execve
+#define SYS_ptrace __NR_ptrace
+#define SYS_rt_sigpending __NR_rt_sigpending
+#define SYS_rt_sigtimedwait __NR_rt_sigtimedwait
+#define SYS_rt_sigqueueinfo __NR_rt_sigqueueinfo
+#define SYS_sigaltstack __NR_sigaltstack
+#define SYS_timer_create __NR_timer_create
+#define SYS_mq_notify __NR_mq_notify
+#define SYS_kexec_load __NR_kexec_load
+#define SYS_waitid __NR_waitid
+#define SYS_set_robust_list __NR_set_robust_list
+#define SYS_get_robust_list __NR_get_robust_list
+#define SYS_vmsplice __NR_vmsplice
+#define SYS_move_pages __NR_move_pages
+#define SYS_preadv __NR_preadv
+#define SYS_pwritev __NR_pwritev
+#define SYS_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo
+#define SYS_recvmmsg __NR_recvmmsg
+#define SYS_sendmmsg __NR_sendmmsg
+#define SYS_process_vm_readv __NR_process_vm_readv
+#define SYS_process_vm_writev __NR_process_vm_writev
+#define SYS_setsockopt __NR_setsockopt
+#define SYS_getsockopt __NR_getsockopt
 
 #undef SYS_fstatat
 #undef SYS_pread
@@ -651,5 +632,3 @@
 #define SYS_pwrite SYS_pwrite64
 #define SYS_getdents SYS_getdents64
 #define SYS_fadvise SYS_fadvise64
-
-
diff --git a/arch/x32/src/syscall_cp_fixup.c b/arch/x32/src/syscall_cp_fixup.c
new file mode 100644
index 00000000..ad93db80
--- /dev/null
+++ b/arch/x32/src/syscall_cp_fixup.c
@@ -0,0 +1,34 @@
+#include <sys/syscall.h>
+long __syscall_cp_internal(volatile void*, long long, long long, long long, long long,
+                             long long, long long, long long);
+
+struct __timespec { long long tv_sec; long tv_nsec; };
+struct __timespec_kernel { long long tv_sec; long long tv_nsec; };
+#define __tsc(X) ((struct __timespec*)(unsigned long)(X))
+
+long __syscall_cp_asm (volatile void * foo, long long n, long long a1, long long a2, long long a3,
+	                     long long a4, long long a5, long long a6) {
+	switch (n) {
+	case SYS_mq_timedsend: case SYS_mq_timedreceive: case SYS_pselect6:
+		if(a5) a5 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a5)->tv_sec, .tv_nsec = __tsc(a5)->tv_nsec});
+		break;
+	case SYS_futex:
+		if(a4) a4 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a4)->tv_sec, .tv_nsec = __tsc(a4)->tv_nsec});
+		if(n == SYS_futex) break;
+	case SYS_clock_nanosleep:
+	case SYS_rt_sigtimedwait: case SYS_ppoll:
+		if(a3) a3 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a3)->tv_sec, .tv_nsec = __tsc(a3)->tv_nsec});
+		break;
+	case SYS_nanosleep:
+		if(a1) a1 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a1)->tv_sec, .tv_nsec = __tsc(a1)->tv_nsec});
+		if(a2) a2 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a2)->tv_sec, .tv_nsec = __tsc(a2)->tv_nsec});
+		break;
+	}
+	return __syscall_cp_internal(foo, n, a1, a2, a3, a4, a5, a6);
+}
+
diff --git a/arch/x32/syscall_arch.h b/arch/x32/syscall_arch.h
index a85c440c..57e76896 100644
--- a/arch/x32/syscall_arch.h
+++ b/arch/x32/syscall_arch.h
@@ -1,29 +1,45 @@
 #define __SYSCALL_LL_E(x) (x)
 #define __SYSCALL_LL_O(x) (x)
 
-static __inline long __syscall0(long n)
+#define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X)
+#define syscall_arg_t long long
+struct __timespec { long long tv_sec; long tv_nsec; };
+struct __timespec_kernel { long long tv_sec; long long tv_nsec; };
+#define __tsc(X) ((struct __timespec*)(unsigned long)(X))
+
+static __inline long __syscall0(long long n)
 {
 	unsigned long ret;
 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
 	return ret;
 }
 
-static __inline long __syscall1(long n, long a1)
+static __inline long __syscall1(long long n, long long a1)
 {
 	unsigned long ret;
 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory");
 	return ret;
 }
 
-static __inline long __syscall2(long n, long a1, long a2)
+static __inline long __syscall2(long long n, long long a1, long long a2)
 {
 	unsigned long ret;
+	struct __timespec *ts2 = 0;
+	switch (n) {
+	case SYS_nanosleep:
+		if(a1) a1 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a1)->tv_sec, .tv_nsec = __tsc(a1)->tv_nsec});
+		break;
+	case SYS_clock_settime:
+		if(a2) a2 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a2)->tv_sec, .tv_nsec = __tsc(a2)->tv_nsec});
+	}
 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2)
-						  : "rcx", "r11", "memory");
+					: "rcx", "r11", "memory");
 	return ret;
 }
 
-static __inline long __syscall3(long n, long a1, long a2, long a3)
+static __inline long __syscall3(long long n, long long a1, long long a2, long long a3)
 {
 	unsigned long ret;
 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
@@ -31,32 +47,75 @@ static __inline long __syscall3(long n, long a1, long a2, long a3)
 	return ret;
 }
 
-static __inline long __syscall4(long n, long a1, long a2, long a3, long a4)
+static __inline long __syscall4(long long n, long long a1, long long a2, long long a3,
+                                     long long a4)
 {
 	unsigned long ret;
-	register long r10 __asm__("r10") = a4;
+	register long long r10 __asm__("r10") = a4;
+	switch (n) {
+	case SYS_futex:
+		if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) {
+			if(r10) r10 = (unsigned long) (&(struct __timespec_kernel) {
+			.tv_sec = __tsc(r10)->tv_sec, .tv_nsec = __tsc(r10)->tv_nsec});
+		}
+		break;
+	case SYS_utimensat:
+		if(a3) a3 = (unsigned long) ((struct __timespec_kernel[2]) {
+		[0] = {.tv_sec = __tsc(a3)[0].tv_sec, .tv_nsec = __tsc(a3)[0].tv_nsec},
+		[1] = {.tv_sec = __tsc(a3)[1].tv_sec, .tv_nsec = __tsc(a3)[1].tv_nsec},
+		});
+		break;
+	case SYS_clock_nanosleep:
+	case SYS_rt_sigtimedwait: case SYS_ppoll:
+		if(a3) a3 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(a3)->tv_sec, .tv_nsec = __tsc(a3)->tv_nsec});
+	}
 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3), "r"(r10): "rcx", "r11", "memory");
+					  "d"(a3), "r"(r10): "rcx", "r11", "memory");
 	return ret;
 }
 
-static __inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5)
+static __inline long __syscall5(long long n, long long a1, long long a2, long long a3,
+                                     long long a4, long long a5)
 {
 	unsigned long ret;
-	register long r10 __asm__("r10") = a4;
-	register long r8 __asm__("r8") = a5;
+	register long long r10 __asm__("r10") = a4;
+	register long long r8 __asm__("r8") = a5;
+	switch (n) {
+	case SYS_futex:
+		if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) {
+			if(r10) r10 = (unsigned long) (&(struct __timespec_kernel) {
+			.tv_sec = __tsc(r10)->tv_sec, .tv_nsec = __tsc(r10)->tv_nsec});
+		}
+		break;
+	case SYS_mq_timedsend: case SYS_mq_timedreceive:
+		if(r8) r8 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(r8)->tv_sec, .tv_nsec = __tsc(r8)->tv_nsec});
+	}
 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3), "r"(r10), "r"(r8) : "rcx", "r11", "memory");
+					  "d"(a3), "r"(r10), "r"(r8) : "rcx", "r11", "memory");
 	return ret;
 }
 
-static __inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
+static __inline long __syscall6(long long n, long long a1, long long a2, long long a3,
+                                     long long a4, long long a5, long long a6)
 {
 	unsigned long ret;
-	register long r10 __asm__("r10") = a4;
-	register long r8 __asm__("r8") = a5;
-	register long r9 __asm__("r9") = a6;
+	register long long r10 __asm__("r10") = a4;
+	register long long r8 __asm__("r8") = a5;
+	register long long r9 __asm__("r9") = a6;
+	switch (n) {
+	case SYS_futex:
+		if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) {
+			if(r10) r10 = (unsigned long) (&(struct __timespec_kernel) {
+			.tv_sec = __tsc(r10)->tv_sec, .tv_nsec = __tsc(r10)->tv_nsec});
+		}
+		break;
+	case SYS_pselect6:
+		if(r8) r8 = (unsigned long) (&(struct __timespec_kernel) {
+		.tv_sec = __tsc(r8)->tv_sec, .tv_nsec = __tsc(r8)->tv_nsec});
+	}
 	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory");
+					  "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory");
 	return ret;
 }
diff --git a/src/fenv/x32/fenv.s b/src/fenv/x32/fenv.s
index b5aeaf4f..45310465 100644
--- a/src/fenv/x32/fenv.s
+++ b/src/fenv/x32/fenv.s
@@ -8,14 +8,14 @@ feclearexcept:
 	test %eax,%ecx
 	jz 1f
 	fnclex
-1:	stmxcsr -8(%rsp)
+1:	stmxcsr -8(%esp)
 	and $0x3f,%eax
-	or %eax,-8(%rsp)
-	test %ecx,-8(%rsp)
+	or %eax,-8(%esp)
+	test %ecx,-8(%esp)
 	jz 1f
 	not %ecx
-	and %ecx,-8(%rsp)
-	ldmxcsr -8(%rsp)
+	and %ecx,-8(%esp)
+	ldmxcsr -8(%esp)
 1:	xor %eax,%eax
 	ret
 
@@ -23,9 +23,9 @@ feclearexcept:
 .type feraiseexcept,@function
 feraiseexcept:
 	and $0x3f,%edi
-	stmxcsr -8(%rsp)
-	or %edi,-8(%rsp)
-	ldmxcsr -8(%rsp)
+	stmxcsr -8(%esp)
+	or %edi,-8(%esp)
+	ldmxcsr -8(%esp)
 	xor %eax,%eax
 	ret
 
@@ -35,15 +35,15 @@ __fesetround:
 	push %rax
 	xor %eax,%eax
 	mov %edi,%ecx
-	fnstcw (%rsp)
-	andb $0xf3,1(%rsp)
-	or %ch,1(%rsp)
-	fldcw (%rsp)
-	stmxcsr (%rsp)
+	fnstcw (%esp)
+	andb $0xf3,1(%esp)
+	or %ch,1(%esp)
+	fldcw (%esp)
+	stmxcsr (%esp)
 	shl $3,%ch
-	andb $0x9f,1(%rsp)
-	or %ch,1(%rsp)
-	ldmxcsr (%rsp)
+	andb $0x9f,1(%esp)
+	or %ch,1(%esp)
+	ldmxcsr (%esp)
 	pop %rcx
 	ret
 
@@ -51,7 +51,7 @@ __fesetround:
 .type fegetround,@function
 fegetround:
 	push %rax
-	stmxcsr (%rsp)
+	stmxcsr (%esp)
 	pop %rax
 	shr $3,%eax
 	and $0xc00,%eax
@@ -61,27 +61,27 @@ fegetround:
 .type fegetenv,@function
 fegetenv:
 	xor %eax,%eax
-	fnstenv (%rdi)
-	stmxcsr 28(%rdi)
+	fnstenv (%edi)
+	stmxcsr 28(%edi)
 	ret
 
 .global fesetenv
 .type fesetenv,@function
 fesetenv:
 	xor %eax,%eax
-	inc %rdi
+	inc %edi
 	jz 1f
-	fldenv -1(%rdi)
-	ldmxcsr 27(%rdi)
+	fldenv -1(%edi)
+	ldmxcsr 27(%edi)
 	ret
 1:	push %rax
 	push %rax
 	pushq $0xffff
 	pushq $0x37f
-	fldenv (%rsp)
+	fldenv (%esp)
 	pushq $0x1f80
-	ldmxcsr (%rsp)
-	add $40,%rsp
+	ldmxcsr (%esp)
+	add $40,%esp
 	ret
 
 .global fetestexcept
@@ -89,7 +89,7 @@ fesetenv:
 fetestexcept:
 	and $0x3f,%edi
 	push %rax
-	stmxcsr (%rsp)
+	stmxcsr (%esp)
 	pop %rsi
 	fnstsw %ax
 	or %esi,%eax
diff --git a/src/ldso/x32/start.s b/src/ldso/x32/start.s
index 80c1d08d..0fcf46dc 100644
--- a/src/ldso/x32/start.s
+++ b/src/ldso/x32/start.s
@@ -1,16 +1,24 @@
 .text
 .global _start
 _start:
-	mov (%rsp),%rdi
-	lea 8(%rsp),%rsi
+	mov (%rsp),%rdi  /* move argc into 1st argument slot */
+	lea 4(%rsp),%rsi /* move argv into 2nd argument slot */
 	call __dynlink
-	pop %rdi
+	/* in case the dynlinker was called directly, it sets the "consumed"
+	   argv values to -1. so we must loop over the array as long as -1
+	   is in the top argv slot, decrement argc, and then set the stackpointer
+	   to the new argc as well as argc's new value.
+	   as the x32 abi has longs in the argv array, we cannot use push/pop.*/
+	movl (%rsp),%edi /* copy argc into edi */
+	xor %rdx,%rdx /* we use rdx as an offset to the current argv member */
 1:	dec %edi
-	pop %rsi
-	cmp $-1,%rsi
+	addl $4, %edx
+	movl (%rsp, %rdx), %esi
+	cmp $-1,%esi
 	jz 1b
 	inc %edi
-	push %rsi
-	push %rdi
+	subl $4, %edx
+	lea (%rsp, %rdx), %rsp /* set rsp to new argv[-1] */
+	movl %edi, (%rsp)      /* write new argc there */
 	xor %edx,%edx
 	jmp *%rax
diff --git a/src/math/x32/acosl.s b/src/math/x32/acosl.s
index 88e01b49..1abca12e 100644
--- a/src/math/x32/acosl.s
+++ b/src/math/x32/acosl.s
@@ -3,7 +3,7 @@
 .global acosl
 .type acosl,@function
 acosl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 1:	fld %st(0)
 	fld1
 	fsub %st(0),%st(1)
diff --git a/src/math/x32/asinl.s b/src/math/x32/asinl.s
index ed212d9a..7fe9f127 100644
--- a/src/math/x32/asinl.s
+++ b/src/math/x32/asinl.s
@@ -1,7 +1,7 @@
 .global asinl
 .type asinl,@function
 asinl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 1:	fld %st(0)
 	fld1
 	fsub %st(0),%st(1)
diff --git a/src/math/x32/atan2l.s b/src/math/x32/atan2l.s
index e5f0a3de..1ead0788 100644
--- a/src/math/x32/atan2l.s
+++ b/src/math/x32/atan2l.s
@@ -1,7 +1,7 @@
 .global atan2l
 .type atan2l,@function
 atan2l:
-	fldt 8(%rsp)
-	fldt 24(%rsp)
+	fldt 8(%esp)
+	fldt 24(%esp)
 	fpatan
 	ret
diff --git a/src/math/x32/atanl.s b/src/math/x32/atanl.s
index df76de5d..f475fe0e 100644
--- a/src/math/x32/atanl.s
+++ b/src/math/x32/atanl.s
@@ -1,7 +1,7 @@
 .global atanl
 .type atanl,@function
 atanl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	fld1
 	fpatan
 	ret
diff --git a/src/math/x32/exp2l.s b/src/math/x32/exp2l.s
index 0d6cd563..d9f4d6ed 100644
--- a/src/math/x32/exp2l.s
+++ b/src/math/x32/exp2l.s
@@ -1,11 +1,11 @@
 .global expm1l
 .type expm1l,@function
 expm1l:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	fldl2e
 	fmulp
-	movl $0xc2820000,-4(%rsp)
-	flds -4(%rsp)
+	movl $0xc2820000,-4(%esp)
+	flds -4(%esp)
 	fucomp %st(1)
 	fnstsw %ax
 	sahf
@@ -35,21 +35,21 @@ expm1l:
 .global exp2l
 .type exp2l,@function
 exp2l:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 1:	fld %st(0)
-	sub $16,%rsp
-	fstpt (%rsp)
-	mov 8(%rsp),%ax
+	sub $16,%esp
+	fstpt (%esp)
+	mov 8(%esp),%ax
 	and $0x7fff,%ax
 	cmp $0x3fff+13,%ax
 	jb 4f             # |x| < 8192
 	cmp $0x3fff+15,%ax
 	jae 3f            # |x| >= 32768
-	fsts (%rsp)
-	cmpl $0xc67ff800,(%rsp)
+	fsts (%esp)
+	cmpl $0xc67ff800,(%esp)
 	jb 2f             # x > -16382
-	movl $0x5f000000,(%rsp)
-	flds (%rsp)       # 0x1p63
+	movl $0x5f000000,(%esp)
+	flds (%esp)       # 0x1p63
 	fld %st(1)
 	fsub %st(1)
 	faddp
@@ -57,10 +57,10 @@ exp2l:
 	fnstsw
 	sahf
 	je 2f             # x - 0x1p63 + 0x1p63 == x
-	movl $1,(%rsp)
-	flds (%rsp)       # 0x1p-149
+	movl $1,(%esp)
+	flds (%esp)       # 0x1p-149
 	fdiv %st(1)
-	fstps (%rsp)      # raise underflow
+	fstps (%esp)      # raise underflow
 2:	fld1
 	fld %st(1)
 	frndint
@@ -70,21 +70,21 @@ exp2l:
 	faddp             # 2^(x-rint(x))
 1:	fscale
 	fstp %st(1)
-	add $16,%rsp
+	add $16,%esp
 	ret
 3:	xor %eax,%eax
 4:	cmp $0x3fff-64,%ax
 	fld1
 	jb 1b             # |x| < 0x1p-64
-	fstpt (%rsp)
-	fistl 8(%rsp)
-	fildl 8(%rsp)
+	fstpt (%esp)
+	fistl 8(%esp)
+	fildl 8(%esp)
 	fsubrp %st(1)
-	addl $0x3fff,8(%rsp)
+	addl $0x3fff,8(%esp)
 	f2xm1
 	fld1
 	faddp             # 2^(x-rint(x))
-	fldt (%rsp)       # 2^rint(x)
+	fldt (%esp)       # 2^rint(x)
 	fmulp
-	add $16,%rsp
+	add $16,%esp
 	ret
diff --git a/src/math/x32/expl.s b/src/math/x32/expl.s
index 3add810d..aabea45e 100644
--- a/src/math/x32/expl.s
+++ b/src/math/x32/expl.s
@@ -6,11 +6,11 @@
 .global expl
 .type expl,@function
 expl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 
 		# interesting case: 0x1p-32 <= |x| < 16384
 		# check if (exponent|0x8000) is in [0xbfff-32, 0xbfff+13]
-	mov 16(%rsp), %ax
+	mov 16(%esp), %ax
 	or $0x8000, %ax
 	sub $0xbfdf, %ax
 	cmp $45, %ax
@@ -29,29 +29,29 @@ expl:
 		# should be 0x1.71547652b82fe178p0L == 0x3fff b8aa3b29 5c17f0bc
 		# it will be wrong on non-nearest rounding mode
 2:	fldl2e
-	subq $48, %rsp
+	sub $48, %esp
 		# hi = log2e_hi*x
 		# 2^hi = exp2l(hi)
 	fmul %st(1),%st
 	fld %st(0)
-	fstpt (%rsp)
-	fstpt 16(%rsp)
-	fstpt 32(%rsp)
+	fstpt (%esp)
+	fstpt 16(%esp)
+	fstpt 32(%esp)
 	call exp2l
 		# if 2^hi == inf return 2^hi
 	fld %st(0)
-	fstpt (%rsp)
-	cmpw $0x7fff, 8(%rsp)
+	fstpt (%esp)
+	cmpw $0x7fff, 8(%esp)
 	je 1f
-	fldt 32(%rsp)
-	fldt 16(%rsp)
+	fldt 32(%esp)
+	fldt 16(%esp)
 		# fpu stack: 2^hi x hi
 		# exact mult: x*log2e
 	fld %st(1)
 		# c = 0x1p32+1
 	movq $0x41f0000000100000,%rax
 	pushq %rax
-	fldl (%rsp)
+	fldl (%esp)
 		# xh = x - c*x + c*x
 		# xl = x - xh
 	fmulp
@@ -63,7 +63,7 @@ expl:
 		# yh = log2e_hi - c*log2e_hi + c*log2e_hi
 	movq $0x3ff7154765200000,%rax
 	pushq %rax
-	fldl (%rsp)
+	fldl (%esp)
 		# fpu stack: 2^hi x hi xh xl yh
 		# lo = hi - xh*yh + xl*yh
 	fld %st(2)
@@ -74,7 +74,7 @@ expl:
 		# yl = log2e_hi - yh
 	movq $0x3de705fc2f000000,%rax
 	pushq %rax
-	fldl (%rsp)
+	fldl (%esp)
 		# fpu stack: 2^hi x lo xh xl yl
 		# lo += xh*yl + xl*yl
 	fmul %st, %st(2)
@@ -87,8 +87,8 @@ expl:
 	pushq %rax
 	movq $0x82f0025f2dc582ee,%rax
 	pushq %rax
-	fldt (%rsp)
-	addq $40,%rsp
+	fldt (%esp)
+	add $40,%esp
 		# fpu stack: 2^hi x lo log2e_lo
 		# lo += log2e_lo*x
 		# return 2^hi + 2^hi (2^lo - 1)
@@ -97,5 +97,5 @@ expl:
 	f2xm1
 	fmul %st(1), %st
 	faddp
-1:	addq $48, %rsp
+1:	add $48, %esp
 	ret
diff --git a/src/math/x32/fabsl.s b/src/math/x32/fabsl.s
index 4e7ab525..4f215df5 100644
--- a/src/math/x32/fabsl.s
+++ b/src/math/x32/fabsl.s
@@ -1,6 +1,6 @@
 .global fabsl
 .type fabsl,@function
 fabsl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	fabs
 	ret
diff --git a/src/math/x32/floorl.s b/src/math/x32/floorl.s
index 80da4660..78dcb6da 100644
--- a/src/math/x32/floorl.s
+++ b/src/math/x32/floorl.s
@@ -1,27 +1,27 @@
 .global floorl
 .type floorl,@function
 floorl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 1:	mov $0x7,%al
-1:	fstcw 8(%rsp)
-	mov 9(%rsp),%ah
-	mov %al,9(%rsp)
-	fldcw 8(%rsp)
+1:	fstcw 8(%esp)
+	mov 9(%esp),%ah
+	mov %al,9(%esp)
+	fldcw 8(%esp)
 	frndint
-	mov %ah,9(%rsp)
-	fldcw 8(%rsp)
+	mov %ah,9(%esp)
+	fldcw 8(%esp)
 	ret
 
 .global ceill
 .type ceill,@function
 ceill:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	mov $0xb,%al
 	jmp 1b
 
 .global truncl
 .type truncl,@function
 truncl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	mov $0xf,%al
 	jmp 1b
diff --git a/src/math/x32/fmodl.s b/src/math/x32/fmodl.s
index ca81e60c..9e4378ab 100644
--- a/src/math/x32/fmodl.s
+++ b/src/math/x32/fmodl.s
@@ -1,8 +1,8 @@
 .global fmodl
 .type fmodl,@function
 fmodl:
-	fldt 24(%rsp)
-	fldt 8(%rsp)
+	fldt 24(%esp)
+	fldt 8(%esp)
 1:	fprem
 	fstsw %ax
 	sahf
diff --git a/src/math/x32/llrintl.s b/src/math/x32/llrintl.s
index 1ec0817d..09386079 100644
--- a/src/math/x32/llrintl.s
+++ b/src/math/x32/llrintl.s
@@ -1,7 +1,7 @@
 .global llrintl
 .type llrintl,@function
 llrintl:
-	fldt 8(%rsp)
-	fistpll 8(%rsp)
-	mov 8(%rsp),%rax
+	fldt 8(%esp)
+	fistpll 8(%esp)
+	mov 8(%esp),%rax
 	ret
diff --git a/src/math/x32/log10l.s b/src/math/x32/log10l.s
index 48ea4af7..ef5bea3f 100644
--- a/src/math/x32/log10l.s
+++ b/src/math/x32/log10l.s
@@ -2,6 +2,6 @@
 .type log10l,@function
 log10l:
 	fldlg2
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	fyl2x
 	ret
diff --git a/src/math/x32/log1pl.s b/src/math/x32/log1pl.s
index 955c9dbf..2e64fd4b 100644
--- a/src/math/x32/log1pl.s
+++ b/src/math/x32/log1pl.s
@@ -1,10 +1,10 @@
 .global log1pl
 .type log1pl,@function
 log1pl:
-	mov 14(%rsp),%eax
+	mov 14(%esp),%eax
 	fldln2
 	and $0x7fffffff,%eax
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	cmp $0x3ffd9400,%eax
 	ja 1f
 	fyl2xp1
diff --git a/src/math/x32/log2l.s b/src/math/x32/log2l.s
index ba08b9fb..bf88e8e2 100644
--- a/src/math/x32/log2l.s
+++ b/src/math/x32/log2l.s
@@ -2,6 +2,6 @@
 .type log2l,@function
 log2l:
 	fld1
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	fyl2x
 	ret
diff --git a/src/math/x32/logl.s b/src/math/x32/logl.s
index 20dd1f81..eff64506 100644
--- a/src/math/x32/logl.s
+++ b/src/math/x32/logl.s
@@ -2,6 +2,6 @@
 .type logl,@function
 logl:
 	fldln2
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	fyl2x
 	ret
diff --git a/src/math/x32/lrintl.s b/src/math/x32/lrintl.s
index d587b12b..ee97d1cf 100644
--- a/src/math/x32/lrintl.s
+++ b/src/math/x32/lrintl.s
@@ -1,7 +1,7 @@
 .global lrintl
 .type lrintl,@function
 lrintl:
-	fldt 8(%rsp)
-	fistpll 8(%rsp)
-	mov 8(%rsp),%rax
+	fldt 8(%esp)
+	fistpll 8(%esp)
+	mov 8(%esp),%rax
 	ret
diff --git a/src/math/x32/remainderl.s b/src/math/x32/remainderl.s
index 75c12374..c97f68ad 100644
--- a/src/math/x32/remainderl.s
+++ b/src/math/x32/remainderl.s
@@ -1,8 +1,8 @@
 .global remainderl
 .type remainderl,@function
 remainderl:
-	fldt 24(%rsp)
-	fldt 8(%rsp)
+	fldt 24(%esp)
+	fldt 8(%esp)
 1:	fprem1
 	fstsw %ax
 	sahf
diff --git a/src/math/x32/rintl.s b/src/math/x32/rintl.s
index 64e663cd..be1d2fa7 100644
--- a/src/math/x32/rintl.s
+++ b/src/math/x32/rintl.s
@@ -1,6 +1,6 @@
 .global rintl
 .type rintl,@function
 rintl:
-	fldt 8(%rsp)
+	fldt 8(%esp)
 	frndint
 	ret
diff --git a/src/math/x32/sqrtl.s b/src/math/x32/sqrtl.s
index 23cd687d..8d70856e 100644
--- a/src/math/x32/sqrtl.s
+++ b/src/math/x32/sqrtl.s
@@ -1,5 +1,5 @@
 .global sqrtl
 .type sqrtl,@function
-sqrtl:	fldt 8(%rsp)
+sqrtl:	fldt 8(%esp)
 	fsqrt
 	ret
diff --git a/src/process/x32/vfork.s b/src/process/x32/vfork.s
index 27af46f5..1039f0f2 100644
--- a/src/process/x32/vfork.s
+++ b/src/process/x32/vfork.s
@@ -5,7 +5,7 @@
 __vfork:
 vfork:
 	pop %rdx
-	mov $58,%eax
+	mov $0x4000003a,%eax /* SYS_vfork */
 	syscall
 	push %rdx
 	mov %rax,%rdi
diff --git a/src/signal/x32/restore.s b/src/signal/x32/restore.s
index 682af2dd..27cd3cef 100644
--- a/src/signal/x32/restore.s
+++ b/src/signal/x32/restore.s
@@ -4,5 +4,5 @@
 .type __restore,@function
 __restore_rt:
 __restore:
-	movl $15, %eax
+	movl $0x40000201, %eax /* SYS_rt_sigreturn */
 	syscall
diff --git a/src/thread/x32/__set_thread_area.s b/src/thread/x32/__set_thread_area.s
index f3ff4f61..94bc3630 100644
--- a/src/thread/x32/__set_thread_area.s
+++ b/src/thread/x32/__set_thread_area.s
@@ -5,6 +5,6 @@
 __set_thread_area:
 	mov %rdi,%rsi           /* shift for syscall */
 	movl $0x1002,%edi       /* SET_FS register */
-	movl $158,%eax          /* set fs segment to */
+	movl $0x4000009e,%eax          /* set fs segment to */
 	syscall                 /* arch_prctl(SET_FS, arg)*/
 	ret
diff --git a/src/thread/x32/__unmapself.s b/src/thread/x32/__unmapself.s
index e2689e65..d9254601 100644
--- a/src/thread/x32/__unmapself.s
+++ b/src/thread/x32/__unmapself.s
@@ -3,8 +3,8 @@
 .global __unmapself
 .type   __unmapself,@function
 __unmapself:
-	movl $11,%eax   /* SYS_munmap */
+	movl $0x4000000b,%eax   /* SYS_munmap */
 	syscall         /* munmap(arg2,arg3) */
 	xor %rdi,%rdi   /* exit() args: always return success */
-	movl $60,%eax   /* SYS_exit */
+	movl $0x4000003c,%eax   /* SYS_exit */
 	syscall         /* exit(0) */
diff --git a/src/thread/x32/clone.s b/src/thread/x32/clone.s
index ee59903a..eed46151 100644
--- a/src/thread/x32/clone.s
+++ b/src/thread/x32/clone.s
@@ -2,8 +2,7 @@
 .global __clone
 .type   __clone,@function
 __clone:
-	xor %eax,%eax
-	mov $56,%al
+	movl $0x40000038,%eax /* SYS_clone */
 	mov %rdi,%r11
 	mov %rdx,%rdi
 	mov %r8,%rdx
@@ -20,8 +19,7 @@ __clone:
 	pop %rdi
 	call *%r9
 	mov %eax,%edi
-	xor %eax,%eax
-	mov $60,%al
+	movl $0x4000003c,%eax /* SYS_exit */
 	syscall
 	hlt
 1:	ret
diff --git a/src/thread/x32/syscall_cp.s b/src/thread/x32/syscall_cp.s
index 788c53cc..70605c19 100644
--- a/src/thread/x32/syscall_cp.s
+++ b/src/thread/x32/syscall_cp.s
@@ -1,7 +1,7 @@
 .text
-.global __syscall_cp_asm
-.type   __syscall_cp_asm,@function
-__syscall_cp_asm:
+.global __syscall_cp_internal
+.type   __syscall_cp_internal,@function
+__syscall_cp_internal:
 
 .global __cp_begin
 __cp_begin: