[PATCH v6 00/13] syscalls: Add a shared table for all archs

Arnd Bergmann arnd at arndb.de
Tue Sep 15 00:45:50 PDT 2026


On Sat, Aug 29, 2026, at 01:19, André Almeida wrote:
> 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.

I've tried merging these for the asm-generic tree now, and would like to
send them for 7.4.

Unfortunately, the build bot flagged problems on mips, see the patch below
for my workarounds=, but I think we have to improve that still and didn't
just fold it into your patch.

As you took out the dependencies on the syscall_*.tbl files, the
output does not get rebuilt if changes are made to the table, and I
have not come up with a good solution for mips. My hack just adds both
input files to all outputs, which works but is not technically correct.

The rt_sigtimedwait and ustat entries had a typo that caused a link
error, but I did not check if there were any additional mistakes that
caused incorrect output data without causing a link failure.

       Arnd

diff --git a/arch/mips/kernel/syscalls/Makefile b/arch/mips/kernel/syscalls/Makefile
index aaa5443ea906..51b9939ecff0 100644
--- a/arch/mips/kernel/syscalls/Makefile
+++ b/arch/mips/kernel/syscalls/Makefile
@@ -40,10 +40,10 @@ src_n32 := $(src)/syscall_n.tbl
 src_n64 := $(src)/syscall_n.tbl
 src_o32 := $(src)/syscall_o32.tbl
 
-$(kapi)/unistd_nr_%.h: $(systbl_common) $(sysnr) FORCE
+$(kapi)/unistd_nr_%.h: $(src_o32) $(src_n64) $(systbl_common) $(sysnr) FORCE
        $(call if_changed,sysnr)
 
-$(kapi)/syscall_table_%.h: $(systbl) $(systbl_common) FORCE
+$(kapi)/syscall_table_%.h: $(src_o32) $(src_n64) $(systbl) $(systbl_common) FORCE
        $(call if_changed,systbl)
 
 uapisyshdr-y           += unistd_n32.h                 \
diff --git a/arch/mips/kernel/syscalls/syscall_n.tbl b/arch/mips/kernel/syscalls/syscall_n.tbl
index e3d278f715b7..84c35c1f0c3e 100644
--- a/arch/mips/kernel/syscalls/syscall_n.tbl
+++ b/arch/mips/kernel/syscalls/syscall_n.tbl
@@ -133,14 +133,14 @@
 123    common  capget                          sys_capget
 124    common  capset                          sys_capset
 125    common  rt_sigpending                   sys_rt_sigpending       compat_sys_rt_sigpending
-126    common  rt_sigtimedwait                 sys_rt_sigtimedwait_time        compat_sys_rt_sigtimedwait_time32
+126    common  rt_sigtimedwait                 sys_rt_sigtimedwait     compat_sys_rt_sigtimedwait_time32
 127    common  rt_sigqueueinfo                 sys_rt_sigqueueinfo     compat_sys_rt_sigqueueinfo
 128    common  rt_sigsuspend                   sys_rt_sigsuspend       compat_sys_rt_sigsuspend
 129    common  sigaltstack                     sys_sigaltstack         compat_sys_sigaltstack
 130    common  utime                           sys_utime               sys_utime32
 131    common  mknod                           sys_mknod
 132    common  personality                     sys_personality         sys_32_personality
-133    common  ustat                           sys_usta                compat_sys_usta
+133    common  ustat                           sys_ustat               compat_sys_ustat
 134    common  statfs                          sys_statfs              compat_sys_statfs
 135    common  fstatfs                         sys_fstatfs             compat_sys_fstatfs
 136    common  sysfs                           sys_sysfs



More information about the linux-arm-kernel mailing list