diff options
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: | 
