mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v9 00/15] syscalls: Add a shared table for all archs
@ 2026-11-05 20:05 André Almeida
  2026-11-05 20:05 ` [PATCH v9 01/15] syscalls: Make --abis parsing more robust André Almeida
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: André Almeida @ 2026-11-05 20:05 UTC (permalink / raw)
  To: Masami Hiramatsu, Arnd Bergmanon
  Cc: Christian Brauner, linux-kernel, linux-kbuild, kernel-dev,
	Thomas Bogendoerfer, linux-alpha, linux-s390, linux-arm-kernel,
	soc, linux-mips, sparclinux, André Almeida, Magnus Lindholm

While implementing a new syscall, we need to wire up it's number to the arch
table. Since syscall number 403, all architectures are on sync regarding the
number (except alpha), which make things a lot easier but more repetitive as
well. Have a look at commit b36d4b6aa88 ("arch: hookup listns() system call"),
with 15 lines of mostly:

  +470    common  listns                          sys_listns

There's already a "common" table shared with a bunch of archs at
`scripts/syscall.tbl`, but due to historical reasons some archs will never be
able to move to this table and share all the numbers.

The generic table starts from 403 (clock_gettime64), the first common syscall.

I've compile tested for arm32, arm64, s390, mips, sparc and alpha by comparing
the syscalls_*.h and unistd_*.h files generated before and after this patchset.
For most of cases the files are identical, for the few cases that they are not,
there's a note in the commit explaining why they are equivalent.

Thanks!
	André

Changes in v9:
- arm: get arm32 back. The local syscall table entries was splitted making
easier to deal with OABI, OABI with compat and EABI.
- Link to v8: https://patch.msgid.link/20260918-tonyk-syscall_table-v8-0-0e2d60cad13e@igalia.com

Changes in v8:
- syscall.tbl: Fix clone3 entries for nios2 and openrisc.
- arm: Dropped arm32 from patchset for now, till we figure a good way to deal
  with OABI issues
- mips: Removed common file (syscall_n.tbl) for syscall_n32.tbl and
  syscall_n64.tbl
- alpha: Fix __clone3 entry
- Link to v7: https://patch.msgid.link/20260917-tonyk-syscall_table-v7-0-f4cd8f8e3265@igalia.com

Changes in v7:
- mips: Fix rules to make it rebuild when tables file change
- mips: Update unistd_%.h rule to new table files
- arm: Add back syscalls from 403 to 423. arm can't use the common table
definition for those syscalls, because the common table defines compat entry
point for some of them, and arm32 does not. On arm32 with OABI, this will cause
linking issues.
- Replace mktemp -p with mktemp, to make it more portable
- Link to v6: https://patch.msgid.link/20260828-tonyk-syscall_table-v6-0-fdd358456cf1@igalia.com

Changes in v6:
- Rebased on top of 7.3-rc0: new syscall fchroot()
- Fix compliance with POSIX shells
- Add $(syscalltbl_common) to the prereq build files, so the build is triggered
if the common table changes
- v5: https://patch.msgid.link/20260812-tonyk-syscall_table-v5-0-3d383927c609@igalia.com

Changes in v5:
- Add archs lists to Cc
- alpha: Change custom alpha_syscall to __syscall
- mips: Use "common" for all ABI tables
- mips: Kept it as a single table for n32/n64
- Fix bug introduced by mixing --offset and --compat-offset
- v4: https://patch.msgid.link/20260812-tonyk-syscall_table-v4-0-748d0229ad40@igalia.com

Changes in v4:
- Replace cln3 with clone3 in the ABIs
- mips: Get rid of custom mips ABIs (o32, n32, n64) and use 32 and 64
- mips: Unify n32 and n64 tables
- Add alpha to the syscall party, along with it's adaptations
- Remove --no-compat option and define SYSCALL_WITH_COMPAT() macro for archs
that need it
- v3: https://patch.msgid.link/20260807-tonyk-syscall_table-v3-0-7c45a23c50b5@igalia.com

Changes in v3:
- Removed x86 for now, let's wait till x32 is dropped
- Added much more archs
- v2: https://patch.msgid.link/20260727-tonyk-syscall_table-v2-0-95d4f1ee471f@igalia.com

Changes in v2:
- Managed to move to the real first common syscall: 403 (clock_gettime64)
- Added -no-compat option to be used with x86_64
- v1: https://patch.msgid.link/20260724-tonyk-syscall_table-v1-0-9c53188423da@igalia.com

---
André Almeida (15):
      syscalls: Make --abis parsing more robust
      syscalls: Create unified partial table for all archs
      scripts/syscall.tbl: Use the common table
      s390: Use the common syscall table
      sparc: Use the common syscall table
      mips: Remove duplicated syscallnr.sh
      mips: Get rid of custom mips ABIs for syscall tables
      mips: Use the common syscall table
      syscalls: Add an option for offsetting the common table
      alpha: Define entry point for set_mempolicy_home_node syscall
      alpha: Remove alpha_ prefix from custom syscall entries
      alpha: Use the common syscall table
      syscalls: Avoid matching substrings in the ABI parsing
      arm: Reorganize syscall table and separated the ABIs
      arm: Use common syscall table

 arch/alpha/kernel/entry.S                 |   8 +-
 arch/alpha/kernel/syscalls/Makefile       |  14 +-
 arch/alpha/kernel/syscalls/syscall.tbl    |  55 +-
 arch/alpha/kernel/systbls.S               |   1 +
 arch/arc/kernel/Makefile.syscalls         |   2 +-
 arch/arm/kernel/entry-common.S            |   4 +-
 arch/arm/tools/Makefile                   |  15 +-
 arch/arm/tools/syscall.tbl                | 152 +++---
 arch/arm64/kernel/Makefile.syscalls       |   4 +-
 arch/arm64/tools/syscall_32.tbl           |  69 ---
 arch/csky/kernel/Makefile.syscalls        |   3 +-
 arch/hexagon/kernel/Makefile.syscalls     |   2 +-
 arch/loongarch/kernel/Makefile.syscalls   |   4 +-
 arch/mips/kernel/scall64-n32.S            |   1 +
 arch/mips/kernel/scall64-n64.S            |   1 +
 arch/mips/kernel/syscalls/Makefile        |  28 +-
 arch/mips/kernel/syscalls/syscall_n32.tbl | 735 ++++++++++++--------------
 arch/mips/kernel/syscalls/syscall_n64.tbl | 707 ++++++++++++-------------
 arch/mips/kernel/syscalls/syscall_o32.tbl | 827 ++++++++++++++----------------
 arch/mips/kernel/syscalls/syscallnr.sh    |  26 -
 arch/nios2/kernel/Makefile.syscalls       |   2 +-
 arch/nios2/kernel/syscall_table.c         |   1 -
 arch/openrisc/kernel/Makefile.syscalls    |   2 +-
 arch/openrisc/kernel/sys_call_table.c     |   1 -
 arch/riscv/kernel/Makefile.syscalls       |   4 +-
 arch/s390/kernel/syscall.c                |   2 +
 arch/s390/kernel/syscalls/Makefile        |  12 +-
 arch/s390/kernel/syscalls/syscall.tbl     |  49 --
 arch/sparc/kernel/syscalls/Makefile       |  12 +-
 arch/sparc/kernel/syscalls/syscall.tbl    |  69 ---
 scripts/Makefile.asm-headers              |  11 +-
 scripts/syscall.tbl                       |  69 ---
 scripts/syscall_common.tbl                |  84 +++
 scripts/syscallhdr.sh                     |  83 ++-
 scripts/syscalltbl.sh                     |  46 +-
 35 files changed, 1377 insertions(+), 1728 deletions(-)
---
base-commit: 34d5717d427cc2d8f21e6e72f9ded880a148cfeb
change-id: 20260724-tonyk-syscall_table-928bbb1b26bb

Best regards,
--  
André Almeida <andrealmeid@igalia.com>


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2026-11-05 20:06 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-11-05 20:05 [PATCH v9 00/15] syscalls: Add a shared table for all archs André Almeida
2026-11-05 20:05 ` [PATCH v9 01/15] syscalls: Make --abis parsing more robust André Almeida
2026-11-05 20:05 ` [PATCH v9 02/15] syscalls: Create unified partial table for all archs André Almeida
2026-11-05 20:05 ` [PATCH v9 03/15] scripts/syscall.tbl: Use the common table André Almeida
2026-11-05 20:05 ` [PATCH v9 04/15] s390: Use the common syscall table André Almeida
2026-11-05 20:05 ` [PATCH v9 05/15] sparc: " André Almeida
2026-11-05 20:05 ` [PATCH v9 06/15] mips: Remove duplicated syscallnr.sh André Almeida
2026-11-05 20:05 ` [PATCH v9 07/15] mips: Get rid of custom mips ABIs for syscall tables André Almeida
2026-11-05 20:05 ` [PATCH v9 08/15] mips: Use the common syscall table André Almeida
2026-11-05 20:05 ` [PATCH v9 09/15] syscalls: Add an option for offsetting the common table André Almeida
2026-11-05 20:05 ` [PATCH v9 10/15] alpha: Define entry point for set_mempolicy_home_node syscall André Almeida
2026-11-05 20:05 ` [PATCH v9 11/15] alpha: Remove alpha_ prefix from custom syscall entries André Almeida
2026-11-05 20:05 ` [PATCH v9 12/15] alpha: Use the common syscall table André Almeida
2026-11-05 20:05 ` [PATCH v9 13/15] syscalls: Avoid matching substrings in the ABI parsing André Almeida
2026-11-05 20:05 ` [PATCH v9 14/15] arm: Reorganize syscall table and separated the ABIs André Almeida
2026-11-05 20:05 ` [PATCH v9 15/15] arm: Use common syscall table André Almeida

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®