{
  "description": "Browse aymeric's, an independent, searchable archive of readable snapshots from followed feeds, preserved in Git with aggr.",
  "feed_url": "https://aggr.aymericbeaumet.com/sources/syscall.sh/feed.json",
  "home_page_url": "https://aggr.aymericbeaumet.com/sources/syscall.sh/",
  "items": [
    {
      "authors": [
        {
          "name": "guitmz"
        }
      ],
      "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",
      "date_modified": "2026-11-02T09:29:16+00:00",
      "date_published": "2026-11-02T09:29:16+00:00",
      "external_url": "https://syscall.sh/",
      "id": "urn:aggr:item:c7fe796c3abbc1c77626e6ffc2f4a5f92e93746e",
      "image": "https://syscall.sh/og.png",
      "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…",
      "tags": [
        "news"
      ],
      "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/"
    }
  ],
  "language": "en",
  "title": "syscall.sh",
  "version": "https://jsonfeed.org/version/1.1"
}