{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-02-show-hn-i-ve-updated-my-linux-system-call-website-and-api/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "## Linux syscall tables\n\nEvery 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.\n\n## Architectures\n\n- [**x64** x86\\_64 369 syscalls · since 3.3](https://syscall.sh/x64/)\n- [**x86** i386, 32 bit x86 441 syscalls · since 3.3](https://syscall.sh/x86/)\n- [**arm64** AArch64 326 syscalls · since 3.7](https://syscall.sh/arm64/)\n- [**arm** ARM EABI, 32 bit 426 syscalls · since 4.10](https://syscall.sh/arm/)\n- [**riscv64** RISC-V, 64 bit 327 syscalls · since 4.15](https://syscall.sh/riscv64/)\n- [**ia32** IA-32 compat on x86\\_64 439 syscalls · since 3.3](https://syscall.sh/ia32/)\n- [**x32** x32 ABI on x86\\_64 369 syscalls · since 3.4](https://syscall.sh/x32/)\n- [**loongarch64** LoongArch, 64 bit 323 syscalls · since 5.19](https://syscall.sh/loongarch64/)\n- [**ppc64** PowerPC, 64 bit 383 syscalls · since 5.0](https://syscall.sh/ppc64/)\n- [**ppc** PowerPC, 32 bit 425 syscalls · since 5.0](https://syscall.sh/ppc/)\n- [**s390x** IBM Z 378 syscalls · since 4.16](https://syscall.sh/s390x/)\n- [**mips64** MIPS n64 ABI 363 syscalls · since 5.0](https://syscall.sh/mips64/)\n- [**mipsn32** MIPS n32 ABI 387 syscalls · since 5.0](https://syscall.sh/mipsn32/)\n- [**mipso32** MIPS o32 ABI 413 syscalls · since 5.0](https://syscall.sh/mipso32/)\n- [**alpha** DEC Alpha 403 syscalls · since 5.0](https://syscall.sh/alpha/)\n- [**arc** Synopsys ARC 350 syscalls · since 3.9](https://syscall.sh/arc/)\n- [**csky** C-SKY 346 syscalls · since 4.20](https://syscall.sh/csky/)\n- [**hexagon** Qualcomm Hexagon 345 syscalls · since 3.7](https://syscall.sh/hexagon/)\n- [**m68k** Motorola 68000 435 syscalls · since 5.0](https://syscall.sh/m68k/)\n- [**microblaze** Xilinx MicroBlaze 423 syscalls · since 5.0](https://syscall.sh/microblaze/)\n- [**nios2** Intel Nios II 346 syscalls · since 3.19](https://syscall.sh/nios2/)\n- [**openrisc** OpenRISC 346 syscalls · since 3.7](https://syscall.sh/openrisc/)\n- [**parisc** HP PA-RISC 404 syscalls · since 5.0](https://syscall.sh/parisc/)\n- [**sh** SuperH 433 syscalls · since 5.0](https://syscall.sh/sh/)\n- [**sparc** SPARC, 32 bit 434 syscalls · since 5.0](https://syscall.sh/sparc/)\n- [**sparc64** SPARC, 64 bit 399 syscalls · since 5.0](https://syscall.sh/sparc64/)\n- [**xtensa** Tensilica Xtensa 388 syscalls · since 5.0](https://syscall.sh/xtensa/)\n\nEvery 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).\n\n## Calling conventions\n\nNumber in *NR*, arguments in *ARG0* to *ARG5*, then the instruction. The result comes back in *RETURN*.\n\n| ARCH                                            | INSTRUCTION            | NR  | RETURN | ARG0 | ARG1 | ARG2 | ARG3 | ARG4  | ARG5  |\n| ----------------------------------------------- | ---------------------- | --- | ------ | ---- | ---- | ---- | ---- | ----- | ----- |\n| [x64](https://syscall.sh/x64/)                 | `syscall`              | rax | rax    | rdi  | rsi  | rdx  | r10  | r8    | r9    |\n| [x86](https://syscall.sh/x86/)                 | `int 0x80`             | eax | eax    | ebx  | ecx  | edx  | esi  | edi   | ebp   |\n| [arm64](https://syscall.sh/arm64/)             | `svc #0`               | x8  | x0     | x0   | x1   | x2   | x3   | x4    | x5    |\n| [arm](https://syscall.sh/arm/)                 | `svc #0`               | r7  | r0     | r0   | r1   | r2   | r3   | r4    | r5    |\n| [riscv64](https://syscall.sh/riscv64/)         | `ecall`                | a7  | a0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [ia32](https://syscall.sh/ia32/)               | `int 0x80`             | eax | eax    | ebx  | ecx  | edx  | esi  | edi   | ebp   |\n| [x32](https://syscall.sh/x32/)                 | `syscall`              | rax | rax    | rdi  | rsi  | rdx  | r10  | r8    | r9    |\n| [loongarch64](https://syscall.sh/loongarch64/) | `syscall 0`            | a7  | a0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [ppc64](https://syscall.sh/ppc64/)             | `sc`                   | r0  | r3     | r3   | r4   | r5   | r6   | r7    | r8    |\n| [ppc](https://syscall.sh/ppc/)                 | `sc`                   | r0  | r3     | r3   | r4   | r5   | r6   | r7    | r8    |\n| [s390x](https://syscall.sh/s390x/)             | `svc 0`                | r1  | r2     | r2   | r3   | r4   | r5   | r6    | r7    |\n| [mips64](https://syscall.sh/mips64/)           | `syscall`              | v0  | v0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [mipsn32](https://syscall.sh/mipsn32/)         | `syscall`              | v0  | v0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [mipso32](https://syscall.sh/mipso32/)         | `syscall`              | v0  | v0     | a0   | a1   | a2   | a3   | sp+16 | sp+20 |\n| [alpha](https://syscall.sh/alpha/)             | `callsys`              | v0  | v0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [arc](https://syscall.sh/arc/)                 | `trap0`                | r8  | r0     | r0   | r1   | r2   | r3   | r4    | r5    |\n| [csky](https://syscall.sh/csky/)               | `trap 0`               | r7  | a0     | a0   | a1   | a2   | a3   | r4    | r5    |\n| [hexagon](https://syscall.sh/hexagon/)         | `trap0(#1)`            | r6  | r0     | r0   | r1   | r2   | r3   | r4    | r5    |\n| [m68k](https://syscall.sh/m68k/)               | `trap #0`              | d0  | d0     | d1   | d2   | d3   | d4   | d5    | a0    |\n| [microblaze](https://syscall.sh/microblaze/)   | `brki r14,8`           | r12 | r3     | r5   | r6   | r7   | r8   | r9    | r10   |\n| [nios2](https://syscall.sh/nios2/)             | `trap`                 | r2  | r2     | r4   | r5   | r6   | r7   | r8    | r9    |\n| [openrisc](https://syscall.sh/openrisc/)       | `l.sys 1`              | r11 | r11    | r3   | r4   | r5   | r6   | r7    | r8    |\n| [parisc](https://syscall.sh/parisc/)           | `ble 0x100(%sr2, %r0)` | r20 | r28    | r26  | r25  | r24  | r23  | r22   | r21   |\n| [sh](https://syscall.sh/sh/)                   | `trapa #31`            | r3  | r0     | r4   | r5   | r6   | r7   | r0    | r1    |\n| [sparc](https://syscall.sh/sparc/)             | `t 0x10`               | g1  | o0     | o0   | o1   | o2   | o3   | o4    | o5    |\n| [sparc64](https://syscall.sh/sparc64/)         | `t 0x6d`               | g1  | o0     | o0   | o1   | o2   | o3   | o4    | o5    |\n| [xtensa](https://syscall.sh/xtensa/)           | `syscall`              | a2  | a2     | a6   | a3   | a4   | a5   | a8    | a9    |\n\n## API\n\n```\ncurl https://api.syscall.sh/v2/syscalls/x64/read\n```\n\nAny kernel release, diffs between releases and more in the [API docs](https://api.syscall.sh/docs).\n\n## Syscall tables across kernel versions\n\nEntries 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`).\n\nRemoved entries stay visible: pick \"all, with removed\" in the kernel selector and each dropped syscall is marked with the release that dropped it.\n\n## Where the data comes from\n\nEverything 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.\n\nIt 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.\n\nA syscall whose `since` equals the first release scanned for its architecture was already there back then, and may be much older.\n\n### Descriptions and full history\n\nThe 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).\n",
  "authors": [
    "guitmz"
  ],
  "captured_at": "2026-11-02T16:59:20.971254334+00:00",
  "category": "news",
  "content_html": "<h2>Linux syscall tables</h2>\n<p>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.</p>\n<h2>Architectures</h2>\n<ul>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/x64/\"><strong>x64</strong> x86_64 369 syscalls · since 3.3</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/x86/\"><strong>x86</strong> i386, 32 bit x86 441 syscalls · since 3.3</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/arm64/\"><strong>arm64</strong> AArch64 326 syscalls · since 3.7</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/arm/\"><strong>arm</strong> ARM EABI, 32 bit 426 syscalls · since 4.10</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/riscv64/\"><strong>riscv64</strong> RISC-V, 64 bit 327 syscalls · since 4.15</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/ia32/\"><strong>ia32</strong> IA-32 compat on x86_64 439 syscalls · since 3.3</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/x32/\"><strong>x32</strong> x32 ABI on x86_64 369 syscalls · since 3.4</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/loongarch64/\"><strong>loongarch64</strong> LoongArch, 64 bit 323 syscalls · since 5.19</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/ppc64/\"><strong>ppc64</strong> PowerPC, 64 bit 383 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/ppc/\"><strong>ppc</strong> PowerPC, 32 bit 425 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/s390x/\"><strong>s390x</strong> IBM Z 378 syscalls · since 4.16</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/mips64/\"><strong>mips64</strong> MIPS n64 ABI 363 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/mipsn32/\"><strong>mipsn32</strong> MIPS n32 ABI 387 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/mipso32/\"><strong>mipso32</strong> MIPS o32 ABI 413 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/alpha/\"><strong>alpha</strong> DEC Alpha 403 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/arc/\"><strong>arc</strong> Synopsys ARC 350 syscalls · since 3.9</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/csky/\"><strong>csky</strong> C-SKY 346 syscalls · since 4.20</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/hexagon/\"><strong>hexagon</strong> Qualcomm Hexagon 345 syscalls · since 3.7</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/m68k/\"><strong>m68k</strong> Motorola 68000 435 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/microblaze/\"><strong>microblaze</strong> Xilinx MicroBlaze 423 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/nios2/\"><strong>nios2</strong> Intel Nios II 346 syscalls · since 3.19</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/openrisc/\"><strong>openrisc</strong> OpenRISC 346 syscalls · since 3.7</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/parisc/\"><strong>parisc</strong> HP PA-RISC 404 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/sh/\"><strong>sh</strong> SuperH 433 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/sparc/\"><strong>sparc</strong> SPARC, 32 bit 434 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/sparc64/\"><strong>sparc64</strong> SPARC, 64 bit 399 syscalls · since 5.0</a></li>\n<li><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/xtensa/\"><strong>xtensa</strong> Tensilica Xtensa 388 syscalls · since 5.0</a></li>\n</ul>\n<p>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 <code>/&lt;arch&gt;/syscalls.json</code>, for example <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/x64/syscalls.json\">/x64/syscalls.json</a>.</p>\n<h2>Calling conventions</h2>\n<p>Number in <em>NR</em>, arguments in <em>ARG0</em> to <em>ARG5</em>, then the instruction. The result comes back in <em>RETURN</em>.</p>\n<table>\n<thead>\n<tr>\n<th>ARCH</th>\n<th>INSTRUCTION</th>\n<th>NR</th>\n<th>RETURN</th>\n<th>ARG0</th>\n<th>ARG1</th>\n<th>ARG2</th>\n<th>ARG3</th>\n<th>ARG4</th>\n<th>ARG5</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/x64/\">x64</a></td>\n<td><code>syscall</code></td>\n<td>rax</td>\n<td>rax</td>\n<td>rdi</td>\n<td>rsi</td>\n<td>rdx</td>\n<td>r10</td>\n<td>r8</td>\n<td>r9</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/x86/\">x86</a></td>\n<td><code>int 0x80</code></td>\n<td>eax</td>\n<td>eax</td>\n<td>ebx</td>\n<td>ecx</td>\n<td>edx</td>\n<td>esi</td>\n<td>edi</td>\n<td>ebp</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/arm64/\">arm64</a></td>\n<td><code>svc #0</code></td>\n<td>x8</td>\n<td>x0</td>\n<td>x0</td>\n<td>x1</td>\n<td>x2</td>\n<td>x3</td>\n<td>x4</td>\n<td>x5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/arm/\">arm</a></td>\n<td><code>svc #0</code></td>\n<td>r7</td>\n<td>r0</td>\n<td>r0</td>\n<td>r1</td>\n<td>r2</td>\n<td>r3</td>\n<td>r4</td>\n<td>r5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/riscv64/\">riscv64</a></td>\n<td><code>ecall</code></td>\n<td>a7</td>\n<td>a0</td>\n<td>a0</td>\n<td>a1</td>\n<td>a2</td>\n<td>a3</td>\n<td>a4</td>\n<td>a5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/ia32/\">ia32</a></td>\n<td><code>int 0x80</code></td>\n<td>eax</td>\n<td>eax</td>\n<td>ebx</td>\n<td>ecx</td>\n<td>edx</td>\n<td>esi</td>\n<td>edi</td>\n<td>ebp</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/x32/\">x32</a></td>\n<td><code>syscall</code></td>\n<td>rax</td>\n<td>rax</td>\n<td>rdi</td>\n<td>rsi</td>\n<td>rdx</td>\n<td>r10</td>\n<td>r8</td>\n<td>r9</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/loongarch64/\">loongarch64</a></td>\n<td><code>syscall 0</code></td>\n<td>a7</td>\n<td>a0</td>\n<td>a0</td>\n<td>a1</td>\n<td>a2</td>\n<td>a3</td>\n<td>a4</td>\n<td>a5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/ppc64/\">ppc64</a></td>\n<td><code>sc</code></td>\n<td>r0</td>\n<td>r3</td>\n<td>r3</td>\n<td>r4</td>\n<td>r5</td>\n<td>r6</td>\n<td>r7</td>\n<td>r8</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/ppc/\">ppc</a></td>\n<td><code>sc</code></td>\n<td>r0</td>\n<td>r3</td>\n<td>r3</td>\n<td>r4</td>\n<td>r5</td>\n<td>r6</td>\n<td>r7</td>\n<td>r8</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/s390x/\">s390x</a></td>\n<td><code>svc 0</code></td>\n<td>r1</td>\n<td>r2</td>\n<td>r2</td>\n<td>r3</td>\n<td>r4</td>\n<td>r5</td>\n<td>r6</td>\n<td>r7</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/mips64/\">mips64</a></td>\n<td><code>syscall</code></td>\n<td>v0</td>\n<td>v0</td>\n<td>a0</td>\n<td>a1</td>\n<td>a2</td>\n<td>a3</td>\n<td>a4</td>\n<td>a5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/mipsn32/\">mipsn32</a></td>\n<td><code>syscall</code></td>\n<td>v0</td>\n<td>v0</td>\n<td>a0</td>\n<td>a1</td>\n<td>a2</td>\n<td>a3</td>\n<td>a4</td>\n<td>a5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/mipso32/\">mipso32</a></td>\n<td><code>syscall</code></td>\n<td>v0</td>\n<td>v0</td>\n<td>a0</td>\n<td>a1</td>\n<td>a2</td>\n<td>a3</td>\n<td>sp+16</td>\n<td>sp+20</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/alpha/\">alpha</a></td>\n<td><code>callsys</code></td>\n<td>v0</td>\n<td>v0</td>\n<td>a0</td>\n<td>a1</td>\n<td>a2</td>\n<td>a3</td>\n<td>a4</td>\n<td>a5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/arc/\">arc</a></td>\n<td><code>trap0</code></td>\n<td>r8</td>\n<td>r0</td>\n<td>r0</td>\n<td>r1</td>\n<td>r2</td>\n<td>r3</td>\n<td>r4</td>\n<td>r5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/csky/\">csky</a></td>\n<td><code>trap 0</code></td>\n<td>r7</td>\n<td>a0</td>\n<td>a0</td>\n<td>a1</td>\n<td>a2</td>\n<td>a3</td>\n<td>r4</td>\n<td>r5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/hexagon/\">hexagon</a></td>\n<td><code>trap0(#1)</code></td>\n<td>r6</td>\n<td>r0</td>\n<td>r0</td>\n<td>r1</td>\n<td>r2</td>\n<td>r3</td>\n<td>r4</td>\n<td>r5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/m68k/\">m68k</a></td>\n<td><code>trap #0</code></td>\n<td>d0</td>\n<td>d0</td>\n<td>d1</td>\n<td>d2</td>\n<td>d3</td>\n<td>d4</td>\n<td>d5</td>\n<td>a0</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/microblaze/\">microblaze</a></td>\n<td><code>brki r14,8</code></td>\n<td>r12</td>\n<td>r3</td>\n<td>r5</td>\n<td>r6</td>\n<td>r7</td>\n<td>r8</td>\n<td>r9</td>\n<td>r10</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/nios2/\">nios2</a></td>\n<td><code>trap</code></td>\n<td>r2</td>\n<td>r2</td>\n<td>r4</td>\n<td>r5</td>\n<td>r6</td>\n<td>r7</td>\n<td>r8</td>\n<td>r9</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/openrisc/\">openrisc</a></td>\n<td><code>l.sys 1</code></td>\n<td>r11</td>\n<td>r11</td>\n<td>r3</td>\n<td>r4</td>\n<td>r5</td>\n<td>r6</td>\n<td>r7</td>\n<td>r8</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/parisc/\">parisc</a></td>\n<td><code>ble 0x100(%sr2, %r0)</code></td>\n<td>r20</td>\n<td>r28</td>\n<td>r26</td>\n<td>r25</td>\n<td>r24</td>\n<td>r23</td>\n<td>r22</td>\n<td>r21</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/sh/\">sh</a></td>\n<td><code>trapa #31</code></td>\n<td>r3</td>\n<td>r0</td>\n<td>r4</td>\n<td>r5</td>\n<td>r6</td>\n<td>r7</td>\n<td>r0</td>\n<td>r1</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/sparc/\">sparc</a></td>\n<td><code>t 0x10</code></td>\n<td>g1</td>\n<td>o0</td>\n<td>o0</td>\n<td>o1</td>\n<td>o2</td>\n<td>o3</td>\n<td>o4</td>\n<td>o5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/sparc64/\">sparc64</a></td>\n<td><code>t 0x6d</code></td>\n<td>g1</td>\n<td>o0</td>\n<td>o0</td>\n<td>o1</td>\n<td>o2</td>\n<td>o3</td>\n<td>o4</td>\n<td>o5</td>\n</tr>\n<tr>\n<td><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://syscall.sh/xtensa/\">xtensa</a></td>\n<td><code>syscall</code></td>\n<td>a2</td>\n<td>a2</td>\n<td>a6</td>\n<td>a3</td>\n<td>a4</td>\n<td>a5</td>\n<td>a8</td>\n<td>a9</td>\n</tr>\n</tbody>\n</table>\n<h2>API</h2>\n<pre><code><span class=\"code-snippet\">curl https://api.syscall.sh/v2/syscalls/x64/read\n</span></code></pre>\n<p>Any kernel release, diffs between releases and more in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://api.syscall.sh/docs\">API docs</a>.</p>\n<h2>Syscall tables across kernel versions</h2>\n<p>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 (<code>since</code>) and when it was dropped (<code>removed_in</code>).</p>\n<p>Removed entries stay visible: pick &quot;all, with removed&quot; in the kernel selector and each dropped syscall is marked with the release that dropped it.</p>\n<h2>Where the data comes from</h2>\n<p>Everything on this site is read from the kernel source itself. For each architecture, the generator walks the syscall table and the <code>SYSCALL_DEFINE</code> macros of every mainline release it scans, so these are the numbers the kernel actually dispatches on.</p>\n<p>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.</p>\n<p>A syscall whose <code>since</code> equals the first release scanned for its architecture was already there back then, and may be much older.</p>\n<h3>Descriptions and full history</h3>\n<p>The short descriptions come from the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.kernel.org/doc/man-pages/\">Linux man pages project</a>, and the <code>io_uring</code> ones from <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/axboe/liburing\">liburing</a>. Whenever the data changes, the site is rebuilt from the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://api.syscall.sh/docs\">syscall API</a>.</p>\n",
  "content_markdown": "## Linux syscall tables\n\nEvery 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.\n\n## Architectures\n\n- [**x64** x86\\_64 369 syscalls · since 3.3](https://syscall.sh/x64/)\n- [**x86** i386, 32 bit x86 441 syscalls · since 3.3](https://syscall.sh/x86/)\n- [**arm64** AArch64 326 syscalls · since 3.7](https://syscall.sh/arm64/)\n- [**arm** ARM EABI, 32 bit 426 syscalls · since 4.10](https://syscall.sh/arm/)\n- [**riscv64** RISC-V, 64 bit 327 syscalls · since 4.15](https://syscall.sh/riscv64/)\n- [**ia32** IA-32 compat on x86\\_64 439 syscalls · since 3.3](https://syscall.sh/ia32/)\n- [**x32** x32 ABI on x86\\_64 369 syscalls · since 3.4](https://syscall.sh/x32/)\n- [**loongarch64** LoongArch, 64 bit 323 syscalls · since 5.19](https://syscall.sh/loongarch64/)\n- [**ppc64** PowerPC, 64 bit 383 syscalls · since 5.0](https://syscall.sh/ppc64/)\n- [**ppc** PowerPC, 32 bit 425 syscalls · since 5.0](https://syscall.sh/ppc/)\n- [**s390x** IBM Z 378 syscalls · since 4.16](https://syscall.sh/s390x/)\n- [**mips64** MIPS n64 ABI 363 syscalls · since 5.0](https://syscall.sh/mips64/)\n- [**mipsn32** MIPS n32 ABI 387 syscalls · since 5.0](https://syscall.sh/mipsn32/)\n- [**mipso32** MIPS o32 ABI 413 syscalls · since 5.0](https://syscall.sh/mipso32/)\n- [**alpha** DEC Alpha 403 syscalls · since 5.0](https://syscall.sh/alpha/)\n- [**arc** Synopsys ARC 350 syscalls · since 3.9](https://syscall.sh/arc/)\n- [**csky** C-SKY 346 syscalls · since 4.20](https://syscall.sh/csky/)\n- [**hexagon** Qualcomm Hexagon 345 syscalls · since 3.7](https://syscall.sh/hexagon/)\n- [**m68k** Motorola 68000 435 syscalls · since 5.0](https://syscall.sh/m68k/)\n- [**microblaze** Xilinx MicroBlaze 423 syscalls · since 5.0](https://syscall.sh/microblaze/)\n- [**nios2** Intel Nios II 346 syscalls · since 3.19](https://syscall.sh/nios2/)\n- [**openrisc** OpenRISC 346 syscalls · since 3.7](https://syscall.sh/openrisc/)\n- [**parisc** HP PA-RISC 404 syscalls · since 5.0](https://syscall.sh/parisc/)\n- [**sh** SuperH 433 syscalls · since 5.0](https://syscall.sh/sh/)\n- [**sparc** SPARC, 32 bit 434 syscalls · since 5.0](https://syscall.sh/sparc/)\n- [**sparc64** SPARC, 64 bit 399 syscalls · since 5.0](https://syscall.sh/sparc64/)\n- [**xtensa** Tensilica Xtensa 388 syscalls · since 5.0](https://syscall.sh/xtensa/)\n\nEvery 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).\n\n## Calling conventions\n\nNumber in *NR*, arguments in *ARG0* to *ARG5*, then the instruction. The result comes back in *RETURN*.\n\n| ARCH                                            | INSTRUCTION            | NR  | RETURN | ARG0 | ARG1 | ARG2 | ARG3 | ARG4  | ARG5  |\n| ----------------------------------------------- | ---------------------- | --- | ------ | ---- | ---- | ---- | ---- | ----- | ----- |\n| [x64](https://syscall.sh/x64/)                 | `syscall`              | rax | rax    | rdi  | rsi  | rdx  | r10  | r8    | r9    |\n| [x86](https://syscall.sh/x86/)                 | `int 0x80`             | eax | eax    | ebx  | ecx  | edx  | esi  | edi   | ebp   |\n| [arm64](https://syscall.sh/arm64/)             | `svc #0`               | x8  | x0     | x0   | x1   | x2   | x3   | x4    | x5    |\n| [arm](https://syscall.sh/arm/)                 | `svc #0`               | r7  | r0     | r0   | r1   | r2   | r3   | r4    | r5    |\n| [riscv64](https://syscall.sh/riscv64/)         | `ecall`                | a7  | a0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [ia32](https://syscall.sh/ia32/)               | `int 0x80`             | eax | eax    | ebx  | ecx  | edx  | esi  | edi   | ebp   |\n| [x32](https://syscall.sh/x32/)                 | `syscall`              | rax | rax    | rdi  | rsi  | rdx  | r10  | r8    | r9    |\n| [loongarch64](https://syscall.sh/loongarch64/) | `syscall 0`            | a7  | a0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [ppc64](https://syscall.sh/ppc64/)             | `sc`                   | r0  | r3     | r3   | r4   | r5   | r6   | r7    | r8    |\n| [ppc](https://syscall.sh/ppc/)                 | `sc`                   | r0  | r3     | r3   | r4   | r5   | r6   | r7    | r8    |\n| [s390x](https://syscall.sh/s390x/)             | `svc 0`                | r1  | r2     | r2   | r3   | r4   | r5   | r6    | r7    |\n| [mips64](https://syscall.sh/mips64/)           | `syscall`              | v0  | v0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [mipsn32](https://syscall.sh/mipsn32/)         | `syscall`              | v0  | v0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [mipso32](https://syscall.sh/mipso32/)         | `syscall`              | v0  | v0     | a0   | a1   | a2   | a3   | sp+16 | sp+20 |\n| [alpha](https://syscall.sh/alpha/)             | `callsys`              | v0  | v0     | a0   | a1   | a2   | a3   | a4    | a5    |\n| [arc](https://syscall.sh/arc/)                 | `trap0`                | r8  | r0     | r0   | r1   | r2   | r3   | r4    | r5    |\n| [csky](https://syscall.sh/csky/)               | `trap 0`               | r7  | a0     | a0   | a1   | a2   | a3   | r4    | r5    |\n| [hexagon](https://syscall.sh/hexagon/)         | `trap0(#1)`            | r6  | r0     | r0   | r1   | r2   | r3   | r4    | r5    |\n| [m68k](https://syscall.sh/m68k/)               | `trap #0`              | d0  | d0     | d1   | d2   | d3   | d4   | d5    | a0    |\n| [microblaze](https://syscall.sh/microblaze/)   | `brki r14,8`           | r12 | r3     | r5   | r6   | r7   | r8   | r9    | r10   |\n| [nios2](https://syscall.sh/nios2/)             | `trap`                 | r2  | r2     | r4   | r5   | r6   | r7   | r8    | r9    |\n| [openrisc](https://syscall.sh/openrisc/)       | `l.sys 1`              | r11 | r11    | r3   | r4   | r5   | r6   | r7    | r8    |\n| [parisc](https://syscall.sh/parisc/)           | `ble 0x100(%sr2, %r0)` | r20 | r28    | r26  | r25  | r24  | r23  | r22   | r21   |\n| [sh](https://syscall.sh/sh/)                   | `trapa #31`            | r3  | r0     | r4   | r5   | r6   | r7   | r0    | r1    |\n| [sparc](https://syscall.sh/sparc/)             | `t 0x10`               | g1  | o0     | o0   | o1   | o2   | o3   | o4    | o5    |\n| [sparc64](https://syscall.sh/sparc64/)         | `t 0x6d`               | g1  | o0     | o0   | o1   | o2   | o3   | o4    | o5    |\n| [xtensa](https://syscall.sh/xtensa/)           | `syscall`              | a2  | a2     | a6   | a3   | a4   | a5   | a8    | a9    |\n\n## API\n\n```\ncurl https://api.syscall.sh/v2/syscalls/x64/read\n```\n\nAny kernel release, diffs between releases and more in the [API docs](https://api.syscall.sh/docs).\n\n## Syscall tables across kernel versions\n\nEntries 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`).\n\nRemoved entries stay visible: pick \"all, with removed\" in the kernel selector and each dropped syscall is marked with the release that dropped it.\n\n## Where the data comes from\n\nEverything 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.\n\nIt 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.\n\nA syscall whose `since` equals the first release scanned for its architecture was already there back then, and may be much older.\n\n### Descriptions and full history\n\nThe 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).\n",
  "dateCreated": "2026-11-02T16:59:20.971254334+00:00",
  "date_created": "2026-11-02T09:29:16+00:00",
  "date_modified": "2026-11-02T09:29:16+00:00",
  "date_published": "2026-11-02T09:29:16+00:00",
  "description": "I first released those in back in 2020 and now I finally added more architectures, Kernel selector, syscall descriptions and a few other niceties. It should work a bit better on mobile devices too but I am no CSS expert. The API is at…",
  "external_url": "https://syscall.sh/",
  "git": {
    "commit": "20068632b65d2830a2d54f25ca1d90d697bea2c0",
    "path": "items/hnrss-org/2026/11/2026-11-02-show-hn-i-ve-updated-my-linux-system-call-website-and-api.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/20068632b65d2830a2d54f25ca1d90d697bea2c0/items/hnrss-org/2026/11/2026-11-02-show-hn-i-ve-updated-my-linux-system-call-website-and-api.md"
  },
  "id": "urn:aggr:item:c7fe796c3abbc1c77626e6ffc2f4a5f92e93746e",
  "isBasedOn": {
    "@id": "https://syscall.sh/"
  },
  "mainEntity": {
    "@id": "https://syscall.sh/",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-02-show-hn-i-ve-updated-my-linux-system-call-website-and-api/#webpage"
    },
    "author": [
      {
        "@type": "Person",
        "name": "guitmz"
      }
    ],
    "dateModified": "2026-11-02T09:29:16+00:00",
    "datePublished": "2026-11-02T09:29:16+00:00",
    "headline": "Show HN: I've updated my Linux System Call website and API",
    "image": {
      "@type": "ImageObject",
      "caption": "The syscall(2) man page",
      "height": 90,
      "url": "https://syscall.sh/og.png",
      "width": 160
    },
    "timeRequired": "PT4M",
    "url": "https://syscall.sh/",
    "wordCount": 790
  },
  "name": "Archived snapshot: Show HN: I've updated my Linux System Call website and API",
  "preview": {
    "alt": "The syscall(2) man page",
    "color": null,
    "height": 90,
    "placeholder": {
      "data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=",
      "hash": ""
    },
    "url": "https://syscall.sh/og.png",
    "width": 160
  },
  "reading_minutes": 4,
  "replicated_at": null,
  "source": "hnrss-org",
  "source_name": "Hacker News: Front Page",
  "summary": "I first released those in back in 2020 and now I finally added more architectures, Kernel selector, syscall descriptions and a few other niceties. It should work a bit better on mobile devices too but I am no CSS expert. The API is at https://api.syscall.sh Comments URL: https://news.ycombinator.com/item?id=50334704 Points: 159 # Comments: 45",
  "tags": [],
  "temporalCoverage": "2026-11-02T16:59:20.971254334+00:00",
  "title": "Show HN: I've updated my Linux System Call website and API",
  "url": "https://aggr.aymericbeaumet.com/items/hnrss-org/2026-11-02-show-hn-i-ve-updated-my-linux-system-call-website-and-api/",
  "word_count": 790
}