[PATCH v7 04/13] arm: Use the common syscall table

Arnd Bergmann arnd at arndb.de
Thu Sep 17 23:22:24 PDT 2026


On Fri, Sep 18, 2026, at 01:46, André Almeida wrote:
> Remove some of the duplicated code by using the common syscall number
> table.
>
> Signed-off-by: André Almeida <andrealmeid at igalia.com>
> ---
> Changes from v6:
> - Added back syscalls from 403 to 423 to local table. arm32 can't use the
> common table for those syscalls, because arm doesn't implements compat_
> entry points for syscalls like pselect6, ppoll, etc., and OABI uses compat_
> entry points when it's available, so this would cause a build error.

That's too bad, especially if this is only needed for OABI, which
nobody should be using any more. I had hoped we could kill off OABI
soonish, but that is currently blocked on the discussion about keeping
RiscPC alive.

One possible idea would be to rework the table to differentiate
the cases using separate ABI tags for the three cases (EABI native,
OABI native, OABI on EABI), instead of using the compat column:

--- a/arch/arm/tools/syscall.tbl
+++ b/arch/arm/tools/syscall.tbl
@@ -115,7 +115,8 @@
 99     common  statfs                  sys_statfs
 100    common  fstatfs                 sys_fstatfs
 # 101 was sys_ioperm
-102    oabi    socketcall              sys_socketcall          sys_oabi_socketcall
+102    oabi    socketcall              sys_socketcall
+102    oabic   socketcall              sys_oabi_socketcall
 103    common  syslog                  sys_syslog
 104    common  setitimer               sys_setitimer
 105    common  getitimer               sys_getitimer
@@ -131,7 +132,8 @@
 114    common  wait4                   sys_wait4
 115    common  swapoff                 sys_swapoff
 116    common  sysinfo                 sys_sysinfo
-117    oabi    ipc                     sys_ipc                 sys_oabi_ipc
+117    oabi    ipc                     sys_ipc
+117    oabic   ipc                     sys_oabi_ipc
 118    common  fsync                   sys_fsync
 119    common  sigreturn               sys_sigreturn_wrapper
 120    common  clone                   sys_clone
@@ -194,8 +196,12 @@
 177    common  rt_sigtimedwait         sys_rt_sigtimedwait_time32
 178    common  rt_sigqueueinfo         sys_rt_sigqueueinfo
 179    common  rt_sigsuspend           sys_rt_sigsuspend
-180    common  pread64                 sys_pread64             sys_oabi_pread64
-181    common  pwrite64                sys_pwrite64            sys_oabi_pwrite64
+180    eabi    pread64                 sys_pread64
+180    oabi    pread64                 sys_pread64
+180    oabic   pread64                 sys_oabi_pread64
+181    eabi    pwrite64                sys_pwrite64
+181    oabi    pwrite64                sys_pwrite64
+181    oabic   pwrite64                sys_oabi_pwrite64
 182    common  chown                   sys_chown16
 183    common  getcwd                  sys_getcwd
 184    common  capget                  sys_capget
...


Not great, but it has the additional advantage of finally being able
to share the table file with the arm64 copy.

Another idea would be to actually add the six compat_sys_
entry points for OABI from the common table, or redirect
them like

diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 9fb00973c608..1ff4b6579ba1 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -33,6 +33,15 @@
 #define __ARCH_WANT_SYS_OLD_GETRLIMIT
 #define __ARCH_WANT_OLD_READDIR
 #define __ARCH_WANT_SYS_SOCKETCALL
+
+/* allow using compat column from shared syscall table */
+#define compat_sys_pselect6_time64 sys_pselect6_time64
+#define compat_sys_ppoll_time64 sys_ppoll_time64
+#define compat_sys_io_pgetevents_time64 sys_io_pgetevents_time64
+#define compat_sys_recvmmsg_time64 sys_recvmmsg_time64
+#define compat_sys_rt_sigtimedwait_time64 sys_rt_sigtimedwait_time64
+#define compat_sys_epoll_pwait2 sys_epoll_pwait2
+
 #endif
 #define __ARCH_WANT_SYS_FORK
 #define __ARCH_WANT_SYS_VFORK

This would be the least invasive here, but also the least intuitive.

        Arnd



More information about the linux-arm-kernel mailing list