Re: [PATCH RFC v2 0/4] syscalls: Add a shared table for all archs

From: Arnd Bergmann

Date: Tue Jul 28 2026 - 04:31:37 EST


On Tue, Jul 28, 2026, at 04:47, André Almeida wrote:
> The generic table starts from 403 (clock_gettime64), the first common syscall.
> The scripts are adapted to x86 specifics, like not generating the compat entry
> point for x86_64 and placing x86_x32 things in the proper order. x32 is likely
> to be dropped from Linux soon but for the moment I left the support there. If
> this sounds good, next revision I can add the docs bits too.

It may be easier to skip x32/x86-64 for the moment and focus on
the architectures that we know need small changes (mips, powerpc,
alpha).

The patch at
https://lore.kernel.org/all/20260707212252.bYk3-AlU@xxxxxxxxxxxxx/
still hasn't been picked up yet. If your series is done before
we actually remove x32, we may still need to add a temporary
workaround for it, but it would be easier to avoid that altogether
by waiting a bit.

> I've tested this with x86 and arm64, by comparing the syscalls_*.h and
> unistd_*.h files generated before and after this patchset and they are
> identical.

I've had another look at what I tried previously, here is the list of
things we have to figure out to do this properly across all
architectures:

- separate offsets for base and common table on alpha. Maybe we can
just process the two tables separately here and combine the
output files afterwards?
- special __sys_clone3 entry points on alpha, m68k, mips, parisc and
sparc.
- combine mips n32/n64 tables into a single file with regular
use of compat entries for n32, in order to handle compat entry
for the common calls (epoll_pwait2, pselect_time64, ppoll_time64,
io_pgetevents_time64, recvmmsg_time64, rt_sigtimedwait_time64)
- come up with a solution for nospu syscalls on powerpc (clone3,
set_mempolicy_home_node, rseq_slice_yield). Possibly dropping support
for spu syscalls entirely, making all common syscalls implicitly
nospu, incorporating this in the common table, or handling this
in the syscall implementation where necessary.
note that newlib still supports spu syscalls, but only lists
numbers up to __NR_sync_file_range2 (#308). gcc-10 and higher
no longer support SPU at all.

Arnd