Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save KeyStrOke95/e6682aacbe81f1f1230730a186aa15d4 to your computer and use it in GitHub Desktop.
Save KeyStrOke95/e6682aacbe81f1f1230730a186aa15d4 to your computer and use it in GitHub Desktop.

Revisions

  1. @yamnikov-oleg yamnikov-oleg created this gist Feb 20, 2016.
    70 changes: 70 additions & 0 deletions calling_conventions.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,70 @@
    **Source:** man syscall

    ### Architecture calling conventions

    Every architecture has its own way of invoking and passing arguments
    to the kernel. The details for various architectures are listed in
    the two tables below.

    The first table lists the instruction used to transition to kernel
    mode, (which might not be the fastest or best way to transition to
    the kernel, so you might have to refer to `vdso(7)`), the register used
    to indicate the system call number, and the register used to return
    the system call result.

    |arch/ABI|instruction|syscall #|retval|Notes|
    |---|---|---|---|---|
    |arm/OABI|swi NR|-|a1|NR is syscall #|
    |arm/EABI|swi 0x0|r7|r0| |
    |arm64|svc #0|x8|x0| |
    |blackfin|excpt 0x0|P0|R0| |
    |i386|int $0x80|eax|eax| |
    |ia64|break 0x100000|r15|r8|See below|
    |mips|syscall|v0|v0|See below|
    |parisc|ble 0x100(%sr2, %r0)|r20|r28| |
    |s390|svc 0|r1|r2|See below|
    |s390x|svc 0|r1|r2|See below|
    |sparc/32|t 0x10|g1|o0| |
    |sparc/64|t 0x6d|g1|o0| |
    |x86_64|syscall|rax|rax|See below|
    |x32|syscall|rax|rax|See below|

    For s390 and s390x, NR (the system call number) may be passed
    directly with "svc NR" if it is less than 256.

    The x32 ABI uses the same instruction as the x86_64 ABI and is used
    on the same processors. To differentiate between them, the bit mask
    __X32_SYSCALL_BIT is bitwise-ORed into the system call number for
    system calls under the x32 ABI.

    On a few architectures, a register is used to indicate simple boolean
    failure of the system call: ia64 uses r10 for this purpose, and mips
    uses a3.

    The second table shows the registers used to pass the system call
    arguments.

    |arch/ABI |arg1 |arg2 |arg3 |arg4 |arg5 |arg6 |arg7 |Notes|
    |--- |--- |--- |--- |--- |--- |--- |--- |--- |
    |arm/OABI |a1 |a2 |a3 |a4 |v1 |v2 |v3 | |
    |arm/EABI |r0 |r1 |r2 |r3 |r4 |r5 |r6 | |
    |arm64 |x0 |x1 |x2 |x3 |x4 |x5 |-| |
    |blackfin |R0 |R1 |R2 |R3 |R4 |R5 |-| |
    |i386 |ebx |ecx |edx |esi |edi |ebp |-| |
    |ia64 |out0 |out1 |out2 |out3 |out4 |out5 |-| |
    |mips/o32 |a0 |a1 |a2 |a3 |- |- |-|See below|
    |mips/n32,64 |a0 |a1 |a2 |a3 |a4 |a5 |-| |
    |parisc |r26 |r25 |r24 |r23 |r22 |r21 |-| |
    |s390 |r2 |r3 |r4 |r5 |r6 |r7 |-| |
    |s390x |r2 |r3 |r4 |r5 |r6 |r7 |-| |
    |sparc/32 |o0 |o1 |o2 |o3 |o4 |o5 |-| |
    |sparc/64 |o0 |o1 |o2 |o3 |o4 |o5 |-| |
    |x86_64 |rdi |rsi |rdx |r10 |r8 |r9 |-| |
    |x32 |rdi |rsi |rdx |r10 |r8 |r9 |-| |

    The mips/o32 system call convention passes arguments 5 through 8 on
    the user stack.

    Note that these tables don't cover the entire calling convention — some
    architectures may indiscriminately clobber other registers not listed
    here.
    388 changes: 388 additions & 0 deletions syscall_x86_32.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,388 @@
    **Location:** [`arch/x86/entry/syscalls/syscall_32.tbl`](https://github.com/torvalds/linux/blob/master/arch/x86/entry/syscalls/syscall_32.tbl) in linux sources.

    **Review:** cb4c4e8 on 2 Dec 2015.

    ### 32-bit system call numbers and entry vectors

    The format is:
    ```
    <number> <abi> <name> <entry point> <compat entry point>
    ```
    The abi is always "i386" for this file.

    |number|abi|name|entry point|compat entry point|
    |---|---|---|---|---|
    |0|i386|restart_syscall|sys_restart_syscall||
    |1|i386|exit|sys_exit| |
    |2|i386|fork|sys_fork|sys_fork|
    |3|i386|read|sys_read| |
    |4|i386|write|sys_write| |
    |5|i386|open|sys_open|compat_sys_open|
    |6|i386|close|sys_close| |
    |7|i386|waitpid|sys_waitpid|sys32_waitpid|
    |8|i386|creat|sys_creat| |
    |9|i386|link|sys_link| |
    |10|i386|unlink|sys_unlink| |
    |11|i386|execve|sys_execve|compat_sys_execve|
    |12|i386|chdir|sys_chdir| |
    |13|i386|time|sys_time|compat_sys_time|
    |14|i386|mknod|sys_mknod| |
    |15|i386|chmod|sys_chmod| |
    |16|i386|lchown|sys_lchown16| |
    |17|i386|break| | |
    |18|i386|oldstat|sys_stat| |
    |19|i386|lseek|sys_lseek|compat_sys_lseek|
    |20|i386|getpid|sys_getpid| |
    |21|i386|mount|sys_mount|compat_sys_mount|
    |22|i386|umount|sys_oldumount| |
    |23|i386|setuid|sys_setuid16| |
    |24|i386|getuid|sys_getuid16| |
    |25|i386|stime|sys_stime|compat_sys_stime|
    |26|i386|ptrace|sys_ptrace|compat_sys_ptrace|
    |27|i386|alarm|sys_alarm| |
    |28|i386|oldfstat|sys_fstat| |
    |29|i386|pause|sys_pause| |
    |30|i386|utime|sys_utime|compat_sys_utime|
    |31|i386|stty| | |
    |32|i386|gtty| | |
    |33|i386|access|sys_access| |
    |34|i386|nice|sys_nice| |
    |35|i386|ftime| | |
    |36|i386|sync|sys_sync| |
    |37|i386|kill|sys_kill| |
    |38|i386|rename|sys_rename| |
    |39|i386|mkdir|sys_mkdir| |
    |40|i386|rmdir|sys_rmdir| |
    |41|i386|dup|sys_dup| |
    |42|i386|pipe|sys_pipe| |
    |43|i386|times|sys_times|compat_sys_times|
    |44|i386|prof| | |
    |45|i386|brk|sys_brk| |
    |46|i386|setgid|sys_setgid16| |
    |47|i386|getgid|sys_getgid16| |
    |48|i386|signal|sys_signal| |
    |49|i386|geteuid|sys_geteuid16| |
    |50|i386|getegid|sys_getegid16| |
    |51|i386|acct|sys_acct| |
    |52|i386|umount2|sys_umount| |
    |53|i386|lock| | |
    |54|i386|ioctl|sys_ioctl|compat_sys_ioctl|
    |55|i386|fcntl|sys_fcntl|compat_sys_fcntl64|
    |56|i386|mpx| | |
    |57|i386|setpgid|sys_setpgid| |
    |58|i386|ulimit| | |
    |59|i386|oldolduname|sys_olduname| |
    |60|i386|umask|sys_umask| |
    |61|i386|chroot|sys_chroot| |
    |62|i386|ustat|sys_ustat|compat_sys_ustat|
    |63|i386|dup2|sys_dup2| |
    |64|i386|getppid|sys_getppid| |
    |65|i386|getpgrp|sys_getpgrp| |
    |66|i386|setsid|sys_setsid| |
    |67|i386|sigaction|sys_sigaction|compat_sys_sigaction|
    |68|i386|sgetmask|sys_sgetmask| |
    |69|i386|ssetmask|sys_ssetmask| |
    |70|i386|setreuid|sys_setreuid16| |
    |71|i386|setregid|sys_setregid16| |
    |72|i386|sigsuspend|sys_sigsuspend|sys_sigsuspend|
    |73|i386|sigpending|sys_sigpending|compat_sys_sigpending|
    |74|i386|sethostname|sys_sethostname| |
    |75|i386|setrlimit|sys_setrlimit|compat_sys_setrlimit|
    |76|i386|getrlimit|sys_old_getrlimit|compat_sys_old_getrlimit|
    |77|i386|getrusage|sys_getrusage|compat_sys_getrusage|
    |78|i386|gettimeofday|sys_gettimeofday|compat_sys_gettimeofday|
    |79|i386|settimeofday|sys_settimeofday|compat_sys_settimeofday|
    |80|i386|getgroups|sys_getgroups16| |
    |81|i386|setgroups|sys_setgroups16| |
    |82|i386|select|sys_old_select|compat_sys_old_select|
    |83|i386|symlink|sys_symlink| |
    |84|i386|oldlstat|sys_lstat| |
    |85|i386|readlink|sys_readlink| |
    |86|i386|uselib|sys_uselib| |
    |87|i386|swapon|sys_swapon| |
    |88|i386|reboot|sys_reboot| |
    |89|i386|readdir|sys_old_readdir|compat_sys_old_readdir|
    |90|i386|mmap|sys_old_mmap|sys32_mmap|
    |91|i386|munmap|sys_munmap| |
    |92|i386|truncate|sys_truncate|compat_sys_truncate|
    |93|i386|ftruncate|sys_ftruncate|compat_sys_ftruncate|
    |94|i386|fchmod|sys_fchmod| |
    |95|i386|fchown|sys_fchown16| |
    |96|i386|getpriority|sys_getpriority| |
    |97|i386|setpriority|sys_setpriority| |
    |98|i386|profil| | |
    |99|i386|statfs|sys_statfs|compat_sys_statfs|
    |100|i386|fstatfs|sys_fstatfs|compat_sys_fstatfs|
    |101|i386|ioperm|sys_ioperm| |
    |102|i386|socketcall|sys_socketcall|compat_sys_socketcall|
    |103|i386|syslog|sys_syslog| |
    |104|i386|setitimer|sys_setitimer|compat_sys_setitimer|
    |105|i386|getitimer|sys_getitimer|compat_sys_getitimer|
    |106|i386|stat|sys_newstat|compat_sys_newstat|
    |107|i386|lstat|sys_newlstat|compat_sys_newlstat|
    |108|i386|fstat|sys_newfstat|compat_sys_newfstat|
    |109|i386|olduname|sys_uname| |
    |110|i386|iopl|sys_iopl| |
    |111|i386|vhangup|sys_vhangup| |
    |112|i386|idle| | |
    |113|i386|vm86old|sys_vm86old|sys_ni_syscall|
    |114|i386|wait4|sys_wait4|compat_sys_wait4|
    |115|i386|swapoff|sys_swapoff| |
    |116|i386|sysinfo|sys_sysinfo|compat_sys_sysinfo|
    |117|i386|ipc|sys_ipc|compat_sys_ipc|
    |118|i386|fsync|sys_fsync| |
    |119|i386|sigreturn|sys_sigreturn|sys32_sigreturn|
    |120|i386|clone|sys_clone|stub32_clone|
    |121|i386|setdomainname|sys_setdomainname| |
    |122|i386|uname|sys_newuname| |
    |123|i386|modify_ldt|sys_modify_ldt| |
    |124|i386|adjtimex|sys_adjtimex|compat_sys_adjtimex|
    |125|i386|mprotect|sys_mprotect| |
    |126|i386|sigprocmask|sys_sigprocmask|compat_sys_sigprocmask|
    |127|i386|create_module| | |
    |128|i386|init_module|sys_init_module| |
    |129|i386|delete_module|sys_delete_module| |
    |130|i386|get_kernel_syms| | |
    |131|i386|quotactl|sys_quotactl|sys32_quotactl|
    |132|i386|getpgid|sys_getpgid| |
    |133|i386|fchdir|sys_fchdir| |
    |134|i386|bdflush|sys_bdflush| |
    |135|i386|sysfs|sys_sysfs| |
    |136|i386|personality|sys_personality| |
    |137|i386|afs_syscall| | |
    |138|i386|setfsuid|sys_setfsuid16| |
    |139|i386|setfsgid|sys_setfsgid16| |
    |140|i386|_llseek|sys_llseek| |
    |141|i386|getdents|sys_getdents|compat_sys_getdents|
    |142|i386|_newselect|sys_select|compat_sys_select|
    |143|i386|flock|sys_flock| |
    |144|i386|msync|sys_msync| |
    |145|i386|readv|sys_readv|compat_sys_readv|
    |146|i386|writev|sys_writev|compat_sys_writev|
    |147|i386|getsid|sys_getsid| |
    |148|i386|fdatasync|sys_fdatasync| |
    |149|i386|_sysctl|sys_sysctl|compat_sys_sysctl|
    |150|i386|mlock|sys_mlock| |
    |151|i386|munlock|sys_munlock| |
    |152|i386|mlockall|sys_mlockall| |
    |153|i386|munlockall|sys_munlockall| |
    |154|i386|sched_setparam|sys_sched_setparam| |
    |155|i386|sched_getparam|sys_sched_getparam| |
    |156|i386|sched_setscheduler|sys_sched_setscheduler| |
    |157|i386|sched_getscheduler|sys_sched_getscheduler| |
    |158|i386|sched_yield|sys_sched_yield| |
    |159|i386|sched_get_priority_max|sys_sched_get_priority_max| |
    |160|i386|sched_get_priority_min|sys_sched_get_priority_min| |
    |161|i386|sched_rr_get_interval|sys_sched_rr_get_interval|compat_sys_sched_rr_get_interval|
    |162|i386|nanosleep|sys_nanosleep|compat_sys_nanosleep|
    |163|i386|mremap|sys_mremap| |
    |164|i386|setresuid|sys_setresuid16| |
    |165|i386|getresuid|sys_getresuid16| |
    |166|i386|vm86|sys_vm86|sys_ni_syscall|
    |167|i386|query_module| | |
    |168|i386|poll|sys_poll| |
    |169|i386|nfsservctl| | |
    |170|i386|setresgid|sys_setresgid16| |
    |171|i386|getresgid|sys_getresgid16| |
    |172|i386|prctl|sys_prctl| |
    |173|i386|rt_sigreturn|sys_rt_sigreturn|sys32_rt_sigreturn|
    |174|i386|rt_sigaction|sys_rt_sigaction|compat_sys_rt_sigaction|
    |175|i386|rt_sigprocmask|sys_rt_sigprocmask| |
    |176|i386|rt_sigpending|sys_rt_sigpending|compat_sys_rt_sigpending|
    |177|i386|rt_sigtimedwait|sys_rt_sigtimedwait|compat_sys_rt_sigtimedwait|
    |178|i386|rt_sigqueueinfo|sys_rt_sigqueueinfo|compat_sys_rt_sigqueueinfo|
    |179|i386|rt_sigsuspend|sys_rt_sigsuspend| |
    |180|i386|pread64|sys_pread64|sys32_pread|
    |181|i386|pwrite64|sys_pwrite64|sys32_pwrite|
    |182|i386|chown|sys_chown16| |
    |183|i386|getcwd|sys_getcwd| |
    |184|i386|capget|sys_capget| |
    |185|i386|capset|sys_capset| |
    |186|i386|sigaltstack|sys_sigaltstack|compat_sys_sigaltstack|
    |187|i386|sendfile|sys_sendfile|compat_sys_sendfile|
    |188|i386|getpmsg| | |
    |189|i386|putpmsg| | |
    |190|i386|vfork|sys_vfork|sys_vfork|
    |191|i386|ugetrlimit|sys_getrlimit|compat_sys_getrlimit|
    |192|i386|mmap2|sys_mmap_pgoff| |
    |193|i386|truncate64|sys_truncate64|sys32_truncate64|
    |194|i386|ftruncate64|sys_ftruncate64|sys32_ftruncate64|
    |195|i386|stat64|sys_stat64|sys32_stat64|
    |196|i386|lstat64|sys_lstat64|sys32_lstat64|
    |197|i386|fstat64|sys_fstat64|sys32_fstat64|
    |198|i386|lchown32|sys_lchown| |
    |199|i386|getuid32|sys_getuid| |
    |200|i386|getgid32|sys_getgid| |
    |201|i386|geteuid32|sys_geteuid| |
    |202|i386|getegid32|sys_getegid| |
    |203|i386|setreuid32|sys_setreuid| |
    |204|i386|setregid32|sys_setregid| |
    |205|i386|getgroups32|sys_getgroups| |
    |206|i386|setgroups32|sys_setgroups| |
    |207|i386|fchown32|sys_fchown| |
    |208|i386|setresuid32|sys_setresuid| |
    |209|i386|getresuid32|sys_getresuid| |
    |210|i386|setresgid32|sys_setresgid| |
    |211|i386|getresgid32|sys_getresgid| |
    |212|i386|chown32|sys_chown| |
    |213|i386|setuid32|sys_setuid| |
    |214|i386|setgid32|sys_setgid| |
    |215|i386|setfsuid32|sys_setfsuid| |
    |216|i386|setfsgid32|sys_setfsgid| |
    |217|i386|pivot_root|sys_pivot_root| |
    |218|i386|mincore|sys_mincore| |
    |219|i386|madvise|sys_madvise| |
    |220|i386|getdents64|sys_getdents64|compat_sys_getdents64|
    |221|i386|fcntl64|sys_fcntl64|compat_sys_fcntl64|
    |224|i386|gettid|sys_gettid| |
    |225|i386|readahead|sys_readahead|sys32_readahead|
    |226|i386|setxattr|sys_setxattr| |
    |227|i386|lsetxattr|sys_lsetxattr| |
    |228|i386|fsetxattr|sys_fsetxattr| |
    |229|i386|getxattr|sys_getxattr| |
    |230|i386|lgetxattr|sys_lgetxattr| |
    |231|i386|fgetxattr|sys_fgetxattr| |
    |232|i386|listxattr|sys_listxattr| |
    |233|i386|llistxattr|sys_llistxattr| |
    |234|i386|flistxattr|sys_flistxattr| |
    |235|i386|removexattr|sys_removexattr| |
    |236|i386|lremovexattr|sys_lremovexattr| |
    |237|i386|fremovexattr|sys_fremovexattr| |
    |238|i386|tkill|sys_tkill| |
    |239|i386|sendfile64|sys_sendfile64| |
    |240|i386|futex|sys_futex|compat_sys_futex|
    |241|i386|sched_setaffinity|sys_sched_setaffinity|compat_sys_sched_setaffinity|
    |242|i386|sched_getaffinity|sys_sched_getaffinity|compat_sys_sched_getaffinity|
    |243|i386|set_thread_area|sys_set_thread_area| |
    |244|i386|get_thread_area|sys_get_thread_area| |
    |245|i386|io_setup|sys_io_setup|compat_sys_io_setup|
    |246|i386|io_destroy|sys_io_destroy| |
    |247|i386|io_getevents|sys_io_getevents|compat_sys_io_getevents|
    |248|i386|io_submit|sys_io_submit|compat_sys_io_submit|
    |249|i386|io_cancel|sys_io_cancel| |
    |250|i386|fadvise64|sys_fadvise64|sys32_fadvise64|
    |252|i386|exit_group|sys_exit_group| |
    |253|i386|lookup_dcookie|sys_lookup_dcookie|compat_sys_lookup_dcookie|
    |254|i386|epoll_create|sys_epoll_create| |
    |255|i386|epoll_ctl|sys_epoll_ctl| |
    |256|i386|epoll_wait|sys_epoll_wait| |
    |257|i386|remap_file_pages|sys_remap_file_pages| |
    |258|i386|set_tid_address|sys_set_tid_address| |
    |259|i386|timer_create|sys_timer_create|compat_sys_timer_create|
    |260|i386|timer_settime|sys_timer_settime|compat_sys_timer_settime|
    |261|i386|timer_gettime|sys_timer_gettime|compat_sys_timer_gettime|
    |262|i386|timer_getoverrun|sys_timer_getoverrun| |
    |263|i386|timer_delete|sys_timer_delete| |
    |264|i386|clock_settime|sys_clock_settime|compat_sys_clock_settime|
    |265|i386|clock_gettime|sys_clock_gettime|compat_sys_clock_gettime|
    |266|i386|clock_getres|sys_clock_getres|compat_sys_clock_getres|
    |267|i386|clock_nanosleep|sys_clock_nanosleep|compat_sys_clock_nanosleep|
    |268|i386|statfs64|sys_statfs64|compat_sys_statfs64|
    |269|i386|fstatfs64|sys_fstatfs64|compat_sys_fstatfs64|
    |270|i386|tgkill|sys_tgkill| |
    |271|i386|utimes|sys_utimes|compat_sys_utimes|
    |272|i386|fadvise64_64|sys_fadvise64_64|sys32_fadvise64_64|
    |273|i386|vserver| | |
    |274|i386|mbind|sys_mbind| |
    |275|i386|get_mempolicy|sys_get_mempolicy|compat_sys_get_mempolicy|
    |276|i386|set_mempolicy|sys_set_mempolicy| |
    |277|i386|mq_open|sys_mq_open|compat_sys_mq_open|
    |278|i386|mq_unlink|sys_mq_unlink| |
    |279|i386|mq_timedsend|sys_mq_timedsend|compat_sys_mq_timedsend|
    |280|i386|mq_timedreceive|sys_mq_timedreceive|compat_sys_mq_timedreceive|
    |281|i386|mq_notify|sys_mq_notify|compat_sys_mq_notify|
    |282|i386|mq_getsetattr|sys_mq_getsetattr|compat_sys_mq_getsetattr|
    |283|i386|kexec_load|sys_kexec_load|compat_sys_kexec_load|
    |284|i386|waitid|sys_waitid|compat_sys_waitid|
    |286|i386|add_key|sys_add_key| |
    |287|i386|request_key|sys_request_key| |
    |288|i386|keyctl|sys_keyctl| |
    |289|i386|ioprio_set|sys_ioprio_set| |
    |290|i386|ioprio_get|sys_ioprio_get| |
    |291|i386|inotify_init|sys_inotify_init| |
    |292|i386|inotify_add_watch|sys_inotify_add_watch| |
    |293|i386|inotify_rm_watch|sys_inotify_rm_watch| |
    |294|i386|migrate_pages|sys_migrate_pages| |
    |295|i386|openat|sys_openat|compat_sys_openat|
    |296|i386|mkdirat|sys_mkdirat| |
    |297|i386|mknodat|sys_mknodat| |
    |298|i386|fchownat|sys_fchownat| |
    |299|i386|futimesat|sys_futimesat|compat_sys_futimesat|
    |300|i386|fstatat64|sys_fstatat64|sys32_fstatat|
    |301|i386|unlinkat|sys_unlinkat| |
    |302|i386|renameat|sys_renameat| |
    |303|i386|linkat|sys_linkat| |
    |304|i386|symlinkat|sys_symlinkat| |
    |305|i386|readlinkat|sys_readlinkat| |
    |306|i386|fchmodat|sys_fchmodat| |
    |307|i386|faccessat|sys_faccessat| |
    |308|i386|pselect6|sys_pselect6|compat_sys_pselect6|
    |309|i386|ppoll|sys_ppoll|compat_sys_ppoll|
    |310|i386|unshare|sys_unshare| |
    |311|i386|set_robust_list|sys_set_robust_list|compat_sys_set_robust_list|
    |312|i386|get_robust_list|sys_get_robust_list|compat_sys_get_robust_list|
    |313|i386|splice|sys_splice| |
    |314|i386|sync_file_range|sys_sync_file_range|sys32_sync_file_range|
    |315|i386|tee|sys_tee| |
    |316|i386|vmsplice|sys_vmsplice|compat_sys_vmsplice|
    |317|i386|move_pages|sys_move_pages|compat_sys_move_pages|
    |318|i386|getcpu|sys_getcpu| |
    |319|i386|epoll_pwait|sys_epoll_pwait| |
    |320|i386|utimensat|sys_utimensat|compat_sys_utimensat|
    |321|i386|signalfd|sys_signalfd|compat_sys_signalfd|
    |322|i386|timerfd_create|sys_timerfd_create| |
    |323|i386|eventfd|sys_eventfd| |
    |324|i386|fallocate|sys_fallocate|sys32_fallocate|
    |325|i386|timerfd_settime|sys_timerfd_settime|compat_sys_timerfd_settime|
    |326|i386|timerfd_gettime|sys_timerfd_gettime|compat_sys_timerfd_gettime|
    |327|i386|signalfd4|sys_signalfd4|compat_sys_signalfd4|
    |328|i386|eventfd2|sys_eventfd2| |
    |329|i386|epoll_create1|sys_epoll_create1| |
    |330|i386|dup3|sys_dup3| |
    |331|i386|pipe2|sys_pipe2| |
    |332|i386|inotify_init1|sys_inotify_init1| |
    |333|i386|preadv|sys_preadv|compat_sys_preadv|
    |334|i386|pwritev|sys_pwritev|compat_sys_pwritev|
    |335|i386|rt_tgsigqueueinfo|sys_rt_tgsigqueueinfo|compat_sys_rt_tgsigqueueinfo|
    |336|i386|perf_event_open|sys_perf_event_open| |
    |337|i386|recvmmsg|sys_recvmmsg|compat_sys_recvmmsg|
    |338|i386|fanotify_init|sys_fanotify_init| |
    |339|i386|fanotify_mark|sys_fanotify_mark|compat_sys_fanotify_mark|
    |340|i386|prlimit64|sys_prlimit64| |
    |341|i386|name_to_handle_at|sys_name_to_handle_at| |
    |342|i386|open_by_handle_at|sys_open_by_handle_at|compat_sys_open_by_handle_at|
    |343|i386|clock_adjtime|sys_clock_adjtime|compat_sys_clock_adjtime|
    |344|i386|syncfs|sys_syncfs| |
    |345|i386|sendmmsg|sys_sendmmsg|compat_sys_sendmmsg|
    |346|i386|setns|sys_setns| |
    |347|i386|process_vm_readv|sys_process_vm_readv|compat_sys_process_vm_readv|
    |348|i386|process_vm_writev|sys_process_vm_writev|compat_sys_process_vm_writev|
    |349|i386|kcmp|sys_kcmp| |
    |350|i386|finit_module|sys_finit_module| |
    |351|i386|sched_setattr|sys_sched_setattr| |
    |352|i386|sched_getattr|sys_sched_getattr| |
    |353|i386|renameat2|sys_renameat2| |
    |354|i386|seccomp|sys_seccomp| |
    |355|i386|getrandom|sys_getrandom| |
    |356|i386|memfd_create|sys_memfd_create| |
    |357|i386|bpf|sys_bpf| |
    |358|i386|execveat|sys_execveat|compat_sys_execveat|
    |359|i386|socket|sys_socket| |
    |360|i386|socketpair|sys_socketpair| |
    |361|i386|bind|sys_bind| |
    |362|i386|connect|sys_connect| |
    |363|i386|listen|sys_listen| |
    |364|i386|accept4|sys_accept4| |
    |365|i386|getsockopt|sys_getsockopt|compat_sys_getsockopt|
    |366|i386|setsockopt|sys_setsockopt|compat_sys_setsockopt|
    |367|i386|getsockname|sys_getsockname| |
    |368|i386|getpeername|sys_getpeername| |
    |369|i386|sendto|sys_sendto| |
    |370|i386|sendmsg|sys_sendmsg|compat_sys_sendmsg|
    |371|i386|recvfrom|sys_recvfrom|compat_sys_recvfrom|
    |372|i386|recvmsg|sys_recvmsg|compat_sys_recvmsg|
    |373|i386|shutdown|sys_shutdown| |
    |374|i386|userfaultfd|sys_userfaultfd| |
    |375|i386|membarrier|sys_membarrier| |
    |376|i386|mlock2|sys_mlock2| |
    |377|i386|copy_file_range|sys_copy_file_range| | |
    375 changes: 375 additions & 0 deletions syscall_x86_64.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,375 @@
    **Location:** [`arch/x86/entry/syscalls/syscall_64.tbl`](https://github.com/torvalds/linux/blob/master/arch/x86/entry/syscalls/syscall_64.tbl) in linux sources.

    **Review:** cb4c4e8 on 2 Dec 2015.

    ### 64-bit system call numbers and entry vectors

    The format is:
    ```
    <number> <abi> <name> <entry point>
    ```
    The abi is "common", "64" or "x32" for this file.

    |number|abi|name|entry point|
    |---|---|---|---|
    |0|common|read|sys_read|
    |1|common|write|sys_write|
    |2|common|open|sys_open|
    |3|common|close|sys_close|
    |4|common|stat|sys_newstat|
    |5|common|fstat|sys_newfstat|
    |6|common|lstat|sys_newlstat|
    |7|common|poll|sys_poll|
    |8|common|lseek|sys_lseek|
    |9|common|mmap|sys_mmap|
    |10|common|mprotect|sys_mprotect|
    |11|common|munmap|sys_munmap|
    |12|common|brk|sys_brk|
    |13|64|rt_sigaction|sys_rt_sigaction|
    |14|common|rt_sigprocmask|sys_rt_sigprocmask|
    |15|64|rt_sigreturn|stub_rt_sigreturn|
    |16|64|ioctl|sys_ioctl|
    |17|common|pread64|sys_pread64|
    |18|common|pwrite64|sys_pwrite64|
    |19|64|readv|sys_readv|
    |20|64|writev|sys_writev|
    |21|common|access|sys_access|
    |22|common|pipe|sys_pipe|
    |23|common|select|sys_select|
    |24|common|sched_yield|sys_sched_yield|
    |25|common|mremap|sys_mremap|
    |26|common|msync|sys_msync|
    |27|common|mincore|sys_mincore|
    |28|common|madvise|sys_madvise|
    |29|common|shmget|sys_shmget|
    |30|common|shmat|sys_shmat|
    |31|common|shmctl|sys_shmctl|
    |32|common|dup|sys_dup|
    |33|common|dup2|sys_dup2|
    |34|common|pause|sys_pause|
    |35|common|nanosleep|sys_nanosleep|
    |36|common|getitimer|sys_getitimer|
    |37|common|alarm|sys_alarm|
    |38|common|setitimer|sys_setitimer|
    |39|common|getpid|sys_getpid|
    |40|common|sendfile|sys_sendfile64|
    |41|common|socket|sys_socket|
    |42|common|connect|sys_connect|
    |43|common|accept|sys_accept|
    |44|common|sendto|sys_sendto|
    |45|64|recvfrom|sys_recvfrom|
    |46|64|sendmsg|sys_sendmsg|
    |47|64|recvmsg|sys_recvmsg|
    |48|common|shutdown|sys_shutdown|
    |49|common|bind|sys_bind|
    |50|common|listen|sys_listen|
    |51|common|getsockname|sys_getsockname|
    |52|common|getpeername|sys_getpeername|
    |53|common|socketpair|sys_socketpair|
    |54|64|setsockopt|sys_setsockopt|
    |55|64|getsockopt|sys_getsockopt|
    |56|common|clone|stub_clone|
    |57|common|fork|stub_fork|
    |58|common|vfork|stub_vfork|
    |59|64|execve|stub_execve|
    |60|common|exit|sys_exit|
    |61|common|wait4|sys_wait4|
    |62|common|kill|sys_kill|
    |63|common|uname|sys_newuname|
    |64|common|semget|sys_semget|
    |65|common|semop|sys_semop|
    |66|common|semctl|sys_semctl|
    |67|common|shmdt|sys_shmdt|
    |68|common|msgget|sys_msgget|
    |69|common|msgsnd|sys_msgsnd|
    |70|common|msgrcv|sys_msgrcv|
    |71|common|msgctl|sys_msgctl|
    |72|common|fcntl|sys_fcntl|
    |73|common|flock|sys_flock|
    |74|common|fsync|sys_fsync|
    |75|common|fdatasync|sys_fdatasync|
    |76|common|truncate|sys_truncate|
    |77|common|ftruncate|sys_ftruncate|
    |78|common|getdents|sys_getdents|
    |79|common|getcwd|sys_getcwd|
    |80|common|chdir|sys_chdir|
    |81|common|fchdir|sys_fchdir|
    |82|common|rename|sys_rename|
    |83|common|mkdir|sys_mkdir|
    |84|common|rmdir|sys_rmdir|
    |85|common|creat|sys_creat|
    |86|common|link|sys_link|
    |87|common|unlink|sys_unlink|
    |88|common|symlink|sys_symlink|
    |89|common|readlink|sys_readlink|
    |90|common|chmod|sys_chmod|
    |91|common|fchmod|sys_fchmod|
    |92|common|chown|sys_chown|
    |93|common|fchown|sys_fchown|
    |94|common|lchown|sys_lchown|
    |95|common|umask|sys_umask|
    |96|common|gettimeofday|sys_gettimeofday|
    |97|common|getrlimit|sys_getrlimit|
    |98|common|getrusage|sys_getrusage|
    |99|common|sysinfo|sys_sysinfo|
    |100|common|times|sys_times|
    |101|64|ptrace|sys_ptrace|
    |102|common|getuid|sys_getuid|
    |103|common|syslog|sys_syslog|
    |104|common|getgid|sys_getgid|
    |105|common|setuid|sys_setuid|
    |106|common|setgid|sys_setgid|
    |107|common|geteuid|sys_geteuid|
    |108|common|getegid|sys_getegid|
    |109|common|setpgid|sys_setpgid|
    |110|common|getppid|sys_getppid|
    |111|common|getpgrp|sys_getpgrp|
    |112|common|setsid|sys_setsid|
    |113|common|setreuid|sys_setreuid|
    |114|common|setregid|sys_setregid|
    |115|common|getgroups|sys_getgroups|
    |116|common|setgroups|sys_setgroups|
    |117|common|setresuid|sys_setresuid|
    |118|common|getresuid|sys_getresuid|
    |119|common|setresgid|sys_setresgid|
    |120|common|getresgid|sys_getresgid|
    |121|common|getpgid|sys_getpgid|
    |122|common|setfsuid|sys_setfsuid|
    |123|common|setfsgid|sys_setfsgid|
    |124|common|getsid|sys_getsid|
    |125|common|capget|sys_capget|
    |126|common|capset|sys_capset|
    |127|64|rt_sigpending|sys_rt_sigpending|
    |128|64|rt_sigtimedwait|sys_rt_sigtimedwait|
    |129|64|rt_sigqueueinfo|sys_rt_sigqueueinfo|
    |130|common|rt_sigsuspend|sys_rt_sigsuspend|
    |131|64|sigaltstack|sys_sigaltstack|
    |132|common|utime|sys_utime|
    |133|common|mknod|sys_mknod|
    |134|64|uselib| |
    |135|common|personality|sys_personality|
    |136|common|ustat|sys_ustat|
    |137|common|statfs|sys_statfs|
    |138|common|fstatfs|sys_fstatfs|
    |139|common|sysfs|sys_sysfs|
    |140|common|getpriority|sys_getpriority|
    |141|common|setpriority|sys_setpriority|
    |142|common|sched_setparam|sys_sched_setparam|
    |143|common|sched_getparam|sys_sched_getparam|
    |144|common|sched_setscheduler|sys_sched_setscheduler|
    |145|common|sched_getscheduler|sys_sched_getscheduler|
    |146|common|sched_get_priority_max|sys_sched_get_priority_max|
    |147|common|sched_get_priority_min|sys_sched_get_priority_min|
    |148|common|sched_rr_get_interval|sys_sched_rr_get_interval|
    |149|common|mlock|sys_mlock|
    |150|common|munlock|sys_munlock|
    |151|common|mlockall|sys_mlockall|
    |152|common|munlockall|sys_munlockall|
    |153|common|vhangup|sys_vhangup|
    |154|common|modify_ldt|sys_modify_ldt|
    |155|common|pivot_root|sys_pivot_root|
    |156|64|_sysctl|sys_sysctl|
    |157|common|prctl|sys_prctl|
    |158|common|arch_prctl|sys_arch_prctl|
    |159|common|adjtimex|sys_adjtimex|
    |160|common|setrlimit|sys_setrlimit|
    |161|common|chroot|sys_chroot|
    |162|common|sync|sys_sync|
    |163|common|acct|sys_acct|
    |164|common|settimeofday|sys_settimeofday|
    |165|common|mount|sys_mount|
    |166|common|umount2|sys_umount|
    |167|common|swapon|sys_swapon|
    |168|common|swapoff|sys_swapoff|
    |169|common|reboot|sys_reboot|
    |170|common|sethostname|sys_sethostname|
    |171|common|setdomainname|sys_setdomainname|
    |172|common|iopl|sys_iopl|
    |173|common|ioperm|sys_ioperm|
    |174|64|create_module| |
    |175|common|init_module|sys_init_module|
    |176|common|delete_module|sys_delete_module|
    |177|64|get_kernel_syms| |
    |178|64|query_module| |
    |179|common|quotactl|sys_quotactl|
    |180|64|nfsservctl| |
    |181|common|getpmsg| |
    |182|common|putpmsg| |
    |183|common|afs_syscall| |
    |184|common|tuxcall| |
    |185|common|security| |
    |186|common|gettid|sys_gettid|
    |187|common|readahead|sys_readahead|
    |188|common|setxattr|sys_setxattr|
    |189|common|lsetxattr|sys_lsetxattr|
    |190|common|fsetxattr|sys_fsetxattr|
    |191|common|getxattr|sys_getxattr|
    |192|common|lgetxattr|sys_lgetxattr|
    |193|common|fgetxattr|sys_fgetxattr|
    |194|common|listxattr|sys_listxattr|
    |195|common|llistxattr|sys_llistxattr|
    |196|common|flistxattr|sys_flistxattr|
    |197|common|removexattr|sys_removexattr|
    |198|common|lremovexattr|sys_lremovexattr|
    |199|common|fremovexattr|sys_fremovexattr|
    |200|common|tkill|sys_tkill|
    |201|common|time|sys_time|
    |202|common|futex|sys_futex|
    |203|common|sched_setaffinity|sys_sched_setaffinity|
    |204|common|sched_getaffinity|sys_sched_getaffinity|
    |205|64|set_thread_area| |
    |206|64|io_setup|sys_io_setup|
    |207|common|io_destroy|sys_io_destroy|
    |208|common|io_getevents|sys_io_getevents|
    |209|64|io_submit|sys_io_submit|
    |210|common|io_cancel|sys_io_cancel|
    |211|64|get_thread_area| |
    |212|common|lookup_dcookie|sys_lookup_dcookie|
    |213|common|epoll_create|sys_epoll_create|
    |214|64|epoll_ctl_old| |
    |215|64|epoll_wait_old| |
    |216|common|remap_file_pages|sys_remap_file_pages|
    |217|common|getdents64|sys_getdents64|
    |218|common|set_tid_address|sys_set_tid_address|
    |219|common|restart_syscall|sys_restart_syscall|
    |220|common|semtimedop|sys_semtimedop|
    |221|common|fadvise64|sys_fadvise64|
    |222|64|timer_create|sys_timer_create|
    |223|common|timer_settime|sys_timer_settime|
    |224|common|timer_gettime|sys_timer_gettime|
    |225|common|timer_getoverrun|sys_timer_getoverrun|
    |226|common|timer_delete|sys_timer_delete|
    |227|common|clock_settime|sys_clock_settime|
    |228|common|clock_gettime|sys_clock_gettime|
    |229|common|clock_getres|sys_clock_getres|
    |230|common|clock_nanosleep|sys_clock_nanosleep|
    |231|common|exit_group|sys_exit_group|
    |232|common|epoll_wait|sys_epoll_wait|
    |233|common|epoll_ctl|sys_epoll_ctl|
    |234|common|tgkill|sys_tgkill|
    |235|common|utimes|sys_utimes|
    |236|64|vserver| |
    |237|common|mbind|sys_mbind|
    |238|common|set_mempolicy|sys_set_mempolicy|
    |239|common|get_mempolicy|sys_get_mempolicy|
    |240|common|mq_open|sys_mq_open|
    |241|common|mq_unlink|sys_mq_unlink|
    |242|common|mq_timedsend|sys_mq_timedsend|
    |243|common|mq_timedreceive|sys_mq_timedreceive|
    |244|64|mq_notify|sys_mq_notify|
    |245|common|mq_getsetattr|sys_mq_getsetattr|
    |246|64|kexec_load|sys_kexec_load|
    |247|64|waitid|sys_waitid|
    |248|common|add_key|sys_add_key|
    |249|common|request_key|sys_request_key|
    |250|common|keyctl|sys_keyctl|
    |251|common|ioprio_set|sys_ioprio_set|
    |252|common|ioprio_get|sys_ioprio_get|
    |253|common|inotify_init|sys_inotify_init|
    |254|common|inotify_add_watch|sys_inotify_add_watch|
    |255|common|inotify_rm_watch|sys_inotify_rm_watch|
    |256|common|migrate_pages|sys_migrate_pages|
    |257|common|openat|sys_openat|
    |258|common|mkdirat|sys_mkdirat|
    |259|common|mknodat|sys_mknodat|
    |260|common|fchownat|sys_fchownat|
    |261|common|futimesat|sys_futimesat|
    |262|common|newfstatat|sys_newfstatat|
    |263|common|unlinkat|sys_unlinkat|
    |264|common|renameat|sys_renameat|
    |265|common|linkat|sys_linkat|
    |266|common|symlinkat|sys_symlinkat|
    |267|common|readlinkat|sys_readlinkat|
    |268|common|fchmodat|sys_fchmodat|
    |269|common|faccessat|sys_faccessat|
    |270|common|pselect6|sys_pselect6|
    |271|common|ppoll|sys_ppoll|
    |272|common|unshare|sys_unshare|
    |273|64|set_robust_list|sys_set_robust_list|
    |274|64|get_robust_list|sys_get_robust_list|
    |275|common|splice|sys_splice|
    |276|common|tee|sys_tee|
    |277|common|sync_file_range|sys_sync_file_range|
    |278|64|vmsplice|sys_vmsplice|
    |279|64|move_pages|sys_move_pages|
    |280|common|utimensat|sys_utimensat|
    |281|common|epoll_pwait|sys_epoll_pwait|
    |282|common|signalfd|sys_signalfd|
    |283|common|timerfd_create|sys_timerfd_create|
    |284|common|eventfd|sys_eventfd|
    |285|common|fallocate|sys_fallocate|
    |286|common|timerfd_settime|sys_timerfd_settime|
    |287|common|timerfd_gettime|sys_timerfd_gettime|
    |288|common|accept4|sys_accept4|
    |289|common|signalfd4|sys_signalfd4|
    |290|common|eventfd2|sys_eventfd2|
    |291|common|epoll_create1|sys_epoll_create1|
    |292|common|dup3|sys_dup3|
    |293|common|pipe2|sys_pipe2|
    |294|common|inotify_init1|sys_inotify_init1|
    |295|64|preadv|sys_preadv|
    |296|64|pwritev|sys_pwritev|
    |297|64|rt_tgsigqueueinfo|sys_rt_tgsigqueueinfo|
    |298|common|perf_event_open|sys_perf_event_open|
    |299|64|recvmmsg|sys_recvmmsg|
    |300|common|fanotify_init|sys_fanotify_init|
    |301|common|fanotify_mark|sys_fanotify_mark|
    |302|common|prlimit64|sys_prlimit64|
    |303|common|name_to_handle_at|sys_name_to_handle_at|
    |304|common|open_by_handle_at|sys_open_by_handle_at|
    |305|common|clock_adjtime|sys_clock_adjtime|
    |306|common|syncfs|sys_syncfs|
    |307|64|sendmmsg|sys_sendmmsg|
    |308|common|setns|sys_setns|
    |309|common|getcpu|sys_getcpu|
    |310|64|process_vm_readv|sys_process_vm_readv|
    |311|64|process_vm_writev|sys_process_vm_writev|
    |312|common|kcmp|sys_kcmp|
    |313|common|finit_module|sys_finit_module|
    |314|common|sched_setattr|sys_sched_setattr|
    |315|common|sched_getattr|sys_sched_getattr|
    |316|common|renameat2|sys_renameat2|
    |317|common|seccomp|sys_seccomp|
    |318|common|getrandom|sys_getrandom|
    |319|common|memfd_create|sys_memfd_create|
    |320|common|kexec_file_load|sys_kexec_file_load|
    |321|common|bpf|sys_bpf|
    |322|64|execveat|stub_execveat|
    |323|common|userfaultfd|sys_userfaultfd|
    |324|common|membarrier|sys_membarrier|
    |325|common|mlock2|sys_mlock2|
    |326|common|copy_file_range|sys_copy_file_range|
    |512|x32|rt_sigaction|compat_sys_rt_sigaction|
    |513|x32|rt_sigreturn|stub_x32_rt_sigreturn|
    |514|x32|ioctl|compat_sys_ioctl|
    |515|x32|readv|compat_sys_readv|
    |516|x32|writev|compat_sys_writev|
    |517|x32|recvfrom|compat_sys_recvfrom|
    |518|x32|sendmsg|compat_sys_sendmsg|
    |519|x32|recvmsg|compat_sys_recvmsg|
    |520|x32|execve|stub_x32_execve|
    |521|x32|ptrace|compat_sys_ptrace|
    |522|x32|rt_sigpending|compat_sys_rt_sigpending|
    |523|x32|rt_sigtimedwait|compat_sys_rt_sigtimedwait|
    |524|x32|rt_sigqueueinfo|compat_sys_rt_sigqueueinfo|
    |525|x32|sigaltstack|compat_sys_sigaltstack|
    |526|x32|timer_create|compat_sys_timer_create|
    |527|x32|mq_notify|compat_sys_mq_notify|
    |528|x32|kexec_load|compat_sys_kexec_load|
    |529|x32|waitid|compat_sys_waitid|
    |530|x32|set_robust_list|compat_sys_set_robust_list|
    |531|x32|get_robust_list|compat_sys_get_robust_list|
    |532|x32|vmsplice|compat_sys_vmsplice|
    |533|x32|move_pages|compat_sys_move_pages|
    |534|x32|preadv|compat_sys_preadv64|
    |535|x32|pwritev|compat_sys_pwritev64|
    |536|x32|rt_tgsigqueueinfo|compat_sys_rt_tgsigqueueinfo|
    |537|x32|recvmmsg|compat_sys_recvmmsg|
    |538|x32|sendmmsg|compat_sys_sendmmsg|
    |539|x32|process_vm_readv|compat_sys_process_vm_readv|
    |540|x32|process_vm_writev|compat_sys_process_vm_writev|
    |541|x32|setsockopt|compat_sys_setsockopt|
    |542|x32|getsockopt|compat_sys_getsockopt|
    |543|x32|io_setup|compat_sys_io_setup|
    |544|x32|io_submit|compat_sys_io_submit|
    |545|x32|execveat|stub_x32_execveat|