x32 port (diff against vanilla x86_64)
authorrofl0r <retnyg@gmx.net>
Tue, 7 Jan 2014 21:53:38 +0000 (22:53 +0100)
committerrofl0r <retnyg@gmx.net>
Sun, 23 Feb 2014 10:09:16 +0000 (11:09 +0100)
39 files changed:
arch/x32/bits/alltypes.h.in
arch/x32/bits/ipc.h
arch/x32/bits/limits.h
arch/x32/bits/msg.h
arch/x32/bits/reg.h
arch/x32/bits/setjmp.h
arch/x32/bits/shm.h
arch/x32/bits/signal.h
arch/x32/bits/stat.h
arch/x32/bits/stdint.h
arch/x32/bits/syscall.h
arch/x32/src/syscall_cp_fixup.c [new file with mode: 0644]
arch/x32/syscall_arch.h
src/fenv/x32/fenv.s
src/ldso/x32/start.s
src/math/x32/acosl.s
src/math/x32/asinl.s
src/math/x32/atan2l.s
src/math/x32/atanl.s
src/math/x32/exp2l.s
src/math/x32/expl.s
src/math/x32/fabsl.s
src/math/x32/floorl.s
src/math/x32/fmodl.s
src/math/x32/llrintl.s
src/math/x32/log10l.s
src/math/x32/log1pl.s
src/math/x32/log2l.s
src/math/x32/logl.s
src/math/x32/lrintl.s
src/math/x32/remainderl.s
src/math/x32/rintl.s
src/math/x32/sqrtl.s
src/process/x32/vfork.s
src/signal/x32/restore.s
src/thread/x32/__set_thread_area.s
src/thread/x32/__unmapself.s
src/thread/x32/clone.s
src/thread/x32/syscall_cp.s

index 277e944..b077fc9 100644 (file)
@@ -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;
index ac5d097..6e604ce 100644 (file)
@@ -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
index 792a30b..65a3dd6 100644 (file)
@@ -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
index badcf16..c3b4eae 100644 (file)
@@ -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];
 };
index a4df04c..5faaef1 100644 (file)
@@ -1,5 +1,5 @@
 #undef __WORDSIZE
-#define __WORDSIZE 64
+#define __WORDSIZE 32
 #define R15    0
 #define R14    1
 #define R13    2
index 63973a8..a9262a6 100644 (file)
@@ -1 +1 @@
-typedef unsigned long __jmp_buf[8];
+typedef unsigned long long __jmp_buf[8];
index 4c3c9fb..8fa9e73 100644 (file)
@@ -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
+;
index d5f01ce..ecbb813 100644 (file)
@@ -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
index 081237c..1f3aa1e 100644 (file)
@@ -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];
 };
index 1bb147f..d1b2712 100644 (file)
@@ -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
index 5eb9b83..95e2d2f 100644 (file)
-#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
 
 /* 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
 #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 (file)
index 0000000..ad93db8
--- /dev/null
@@ -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);
+}
+
index a85c440..57e7689 100644 (file)
@@ -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;
 }
index b5aeaf4..4531046 100644 (file)
@@ -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
index 80c1d08..0fcf46d 100644 (file)
@@ -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
index 88e01b4..1abca12 100644 (file)
@@ -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)
index ed212d9..7fe9f12 100644 (file)
@@ -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)
index e5f0a3d..1ead078 100644 (file)
@@ -1,7 +1,7 @@
 .global atan2l
 .type atan2l,@function
 atan2l:
-       fldt 8(%rsp)
-       fldt 24(%rsp)
+       fldt 8(%esp)
+       fldt 24(%esp)
        fpatan
        ret
index df76de5..f475fe0 100644 (file)
@@ -1,7 +1,7 @@
 .global atanl
 .type atanl,@function
 atanl:
-       fldt 8(%rsp)
+       fldt 8(%esp)
        fld1
        fpatan
        ret
index 0d6cd56..d9f4d6e 100644 (file)
@@ -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
index 3add810..aabea45 100644 (file)
@@ -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
index 4e7ab52..4f215df 100644 (file)
@@ -1,6 +1,6 @@
 .global fabsl
 .type fabsl,@function
 fabsl:
-       fldt 8(%rsp)
+       fldt 8(%esp)
        fabs
        ret
index 80da466..78dcb6d 100644 (file)
@@ -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
index ca81e60..9e4378a 100644 (file)
@@ -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
index 1ec0817..0938607 100644 (file)
@@ -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
index 48ea4af..ef5bea3 100644 (file)
@@ -2,6 +2,6 @@
 .type log10l,@function
 log10l:
        fldlg2
-       fldt 8(%rsp)
+       fldt 8(%esp)
        fyl2x
        ret
index 955c9db..2e64fd4 100644 (file)
@@ -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
index ba08b9f..bf88e8e 100644 (file)
@@ -2,6 +2,6 @@
 .type log2l,@function
 log2l:
        fld1
-       fldt 8(%rsp)
+       fldt 8(%esp)
        fyl2x
        ret
index 20dd1f8..eff6450 100644 (file)
@@ -2,6 +2,6 @@
 .type logl,@function
 logl:
        fldln2
-       fldt 8(%rsp)
+       fldt 8(%esp)
        fyl2x
        ret
index d587b12..ee97d1c 100644 (file)
@@ -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
index 75c1237..c97f68a 100644 (file)
@@ -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
index 64e663c..be1d2fa 100644 (file)
@@ -1,6 +1,6 @@
 .global rintl
 .type rintl,@function
 rintl:
-       fldt 8(%rsp)
+       fldt 8(%esp)
        frndint
        ret
index 23cd687..8d70856 100644 (file)
@@ -1,5 +1,5 @@
 .global sqrtl
 .type sqrtl,@function
-sqrtl: fldt 8(%rsp)
+sqrtl: fldt 8(%esp)
        fsqrt
        ret
index 27af46f..1039f0f 100644 (file)
@@ -5,7 +5,7 @@
 __vfork:
 vfork:
        pop %rdx
-       mov $58,%eax
+       mov $0x4000003a,%eax /* SYS_vfork */
        syscall
        push %rdx
        mov %rax,%rdi
index 682af2d..27cd3ce 100644 (file)
@@ -4,5 +4,5 @@
 .type __restore,@function
 __restore_rt:
 __restore:
-       movl $15, %eax
+       movl $0x40000201, %eax /* SYS_rt_sigreturn */
        syscall
index f3ff4f6..94bc363 100644 (file)
@@ -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
index e2689e6..d925460 100644 (file)
@@ -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) */
index ee59903..eed4615 100644 (file)
@@ -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
index 788c53c..70605c1 100644 (file)
@@ -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: