Cached at:
11/02/26, 12:34 PM
# Linux System Call Tables by Architecture · syscall.sh
Source: [https://syscall.sh/](https://syscall.sh/)
Every Linux syscall table in one place, grouped by architecture: system calls for 27 architectures with their numbers, arguments and registers, from Linux 3\.3 to 7\.3\.
## Architectures
- [**x64**x86\_64369 syscalls · since 3\.3](https://syscall.sh/x64/)
- [**x86**i386, 32 bit x86441 syscalls · since 3\.3](https://syscall.sh/x86/)
- [**arm64**AArch64326 syscalls · since 3\.7](https://syscall.sh/arm64/)
- [**arm**ARM EABI, 32 bit426 syscalls · since 4\.10](https://syscall.sh/arm/)
- [**riscv64**RISC\-V, 64 bit327 syscalls · since 4\.15](https://syscall.sh/riscv64/)
- [**ia32**IA\-32 compat on x86\_64439 syscalls · since 3\.3](https://syscall.sh/ia32/)
- [**x32**x32 ABI on x86\_64369 syscalls · since 3\.4](https://syscall.sh/x32/)
- [**loongarch64**LoongArch, 64 bit323 syscalls · since 5\.19](https://syscall.sh/loongarch64/)
- [**ppc64**PowerPC, 64 bit383 syscalls · since 5\.0](https://syscall.sh/ppc64/)
- [**ppc**PowerPC, 32 bit425 syscalls · since 5\.0](https://syscall.sh/ppc/)
- [**s390x**IBM Z378 syscalls · since 4\.16](https://syscall.sh/s390x/)
- [**mips64**MIPS n64 ABI363 syscalls · since 5\.0](https://syscall.sh/mips64/)
- [**mipsn32**MIPS n32 ABI387 syscalls · since 5\.0](https://syscall.sh/mipsn32/)
- [**mipso32**MIPS o32 ABI413 syscalls · since 5\.0](https://syscall.sh/mipso32/)
- [**alpha**DEC Alpha403 syscalls · since 5\.0](https://syscall.sh/alpha/)
- [**arc**Synopsys ARC350 syscalls · since 3\.9](https://syscall.sh/arc/)
- [**csky**C\-SKY346 syscalls · since 4\.20](https://syscall.sh/csky/)
- [**hexagon**Qualcomm Hexagon345 syscalls · since 3\.7](https://syscall.sh/hexagon/)
- [**m68k**Motorola 68000435 syscalls · since 5\.0](https://syscall.sh/m68k/)
- [**microblaze**Xilinx MicroBlaze423 syscalls · since 5\.0](https://syscall.sh/microblaze/)
- [**nios2**Intel Nios II346 syscalls · since 3\.19](https://syscall.sh/nios2/)
- [**openrisc**OpenRISC346 syscalls · since 3\.7](https://syscall.sh/openrisc/)
- [**parisc**HP PA\-RISC404 syscalls · since 5\.0](https://syscall.sh/parisc/)
- [**sh**SuperH433 syscalls · since 5\.0](https://syscall.sh/sh/)
- [**sparc**SPARC, 32 bit434 syscalls · since 5\.0](https://syscall.sh/sparc/)
- [**sparc64**SPARC, 64 bit399 syscalls · since 5\.0](https://syscall.sh/sparc64/)
- [**xtensa**Tensilica Xtensa388 syscalls · since 5\.0](https://syscall.sh/xtensa/)
Every architecture's table, with the full history of when each syscall appeared and when it was dropped, is also a plain JSON file at`/<arch\>/syscalls\.json`, for example[/x64/syscalls\.json](https://syscall.sh/x64/syscalls.json)\.
## Calling conventions
Number in*NR*, arguments in*ARG0*to*ARG5*, then the instruction\. The result comes back in*RETURN*\.
ARCHINSTRUCTIONNRRETURNARG0ARG1ARG2ARG3ARG4ARG5[x64](https://syscall.sh/x64/)`syscall`raxraxrdirsirdxr10r8r9[x86](https://syscall.sh/x86/)`int 0x80`eaxeaxebxecxedxesiediebp[arm64](https://syscall.sh/arm64/)`svc \#0`x8x0x0x1x2x3x4x5[arm](https://syscall.sh/arm/)`svc \#0`r7r0r0r1r2r3r4r5[riscv64](https://syscall.sh/riscv64/)`ecall`a7a0a0a1a2a3a4a5[ia32](https://syscall.sh/ia32/)`int 0x80`eaxeaxebxecxedxesiediebp[x32](https://syscall.sh/x32/)`syscall`raxraxrdirsirdxr10r8r9[loongarch64](https://syscall.sh/loongarch64/)`syscall 0`a7a0a0a1a2a3a4a5[ppc64](https://syscall.sh/ppc64/)`sc`r0r3r3r4r5r6r7r8[ppc](https://syscall.sh/ppc/)`sc`r0r3r3r4r5r6r7r8[s390x](https://syscall.sh/s390x/)`svc 0`r1r2r2r3r4r5r6r7[mips64](https://syscall.sh/mips64/)`syscall`v0v0a0a1a2a3a4a5[mipsn32](https://syscall.sh/mipsn32/)`syscall`v0v0a0a1a2a3a4a5[mipso32](https://syscall.sh/mipso32/)`syscall`v0v0a0a1a2a3sp\+16sp\+20[alpha](https://syscall.sh/alpha/)`callsys`v0v0a0a1a2a3a4a5[arc](https://syscall.sh/arc/)`trap0`r8r0r0r1r2r3r4r5[csky](https://syscall.sh/csky/)`trap 0`r7a0a0a1a2a3r4r5[hexagon](https://syscall.sh/hexagon/)`trap0\(\#1\)`r6r0r0r1r2r3r4r5[m68k](https://syscall.sh/m68k/)`trap \#0`d0d0d1d2d3d4d5a0[microblaze](https://syscall.sh/microblaze/)`brki r14,8`r12r3r5r6r7r8r9r10[nios2](https://syscall.sh/nios2/)`trap`r2r2r4r5r6r7r8r9[openrisc](https://syscall.sh/openrisc/)`l\.sys 1`r11r11r3r4r5r6r7r8[parisc](https://syscall.sh/parisc/)`ble 0x100\(%sr2, %r0\)`r20r28r26r25r24r23r22r21[sh](https://syscall.sh/sh/)`trapa \#31`r3r0r4r5r6r7r0r1[sparc](https://syscall.sh/sparc/)`t 0x10`g1o0o0o1o2o3o4o5[sparc64](https://syscall.sh/sparc64/)`t 0x6d`g1o0o0o1o2o3o4o5[xtensa](https://syscall.sh/xtensa/)`syscall`a2a2a6a3a4a5a8a9
## API
```
curl https://api.syscall.sh/v2/syscalls/x64/read
```
Any kernel release, diffs between releases and more in the[API docs](https://api.syscall.sh/docs)\.
## Syscall tables across kernel versions
Entries get added and, rarely, removed between releases\. Each architecture page has a kernel selector, and its JSON download records when each entry first appeared \(`since`\) and when it was dropped \(`removed\_in`\)\.
Removed entries stay visible: pick "all, with removed" in the kernel selector and each dropped syscall is marked with the release that dropped it\.
## Where the data comes from
Everything on this site is read from the kernel source itself\. For each architecture, the generator walks the syscall table and the`SYSCALL\_DEFINE`macros of every mainline release it scans, so these are the numbers the kernel actually dispatches on\.
It also records each architecture's calling convention, the instruction that enters the kernel, so every syscall table shows exactly where the number and the arguments go\.
A syscall whose`since`equals the first release scanned for its architecture was already there back then, and may be much older\.
### Descriptions and full history
The short descriptions come from the[Linux man pages project](https://www.kernel.org/doc/man-pages/), and the`io\_uring`ones from[liburing](https://github.com/axboe/liburing)\. Whenever the data changes, the site is rebuilt from the[syscall API](https://api.syscall.sh/docs)\.