[PATCH 15/23] powerpc: Adopt SYSCALL_DEFINE for arch-specific syscall handlers

Nicholas Piggin npiggin at gmail.com
Tue Sep 20 11:24:16 AEST 2022


On Fri Sep 16, 2022 at 3:32 PM AEST, Rohan McLure wrote:
> Arch-specific implementations of syscall handlers are currently used
> over generic implementations for the following reasons:
>
> 1. Semantics unique to powerpc
> 2. Compatibility syscalls require 'argument padding' to comply with
>    64-bit argument convention in ELF32 abi.
> 3. Parameter types or order is different in other architectures.
>
> These syscall handlers have been defined prior to this patch series
> without invoking the SYSCALL_DEFINE or COMPAT_SYSCALL_DEFINE macros with
> custom input and output types. We remove every such direct definition in
> favour of the aforementioned macros.
>
> Also update syscalls.tbl in order to refer to the symbol names generated
> by each of these macros. Since ppc64_personality can be called by both
> 64 bit and 32 bit binaries through compatibility, we must generate both
> both compat_sys_ and sys_ symbols for this handler.
>
> As an aside:
> A number of architectures including arm and powerpc agree on an
> alternative argument order and numbering for most of these arch-specific
> handlers. A future patch series may allow for asm/unistd.h to signal
> through its defines that a generic implementation of these syscall
> handlers with the correct calling convention be emitted, through the
> __ARCH_WANT_COMPAT_SYS_... convention.
>
> Signed-off-by: Rohan McLure <rmclure at linux.ibm.com>

Looks good

Reviewed-by: Nicholas Piggin <npiggin at gmail.com>

> ---
> V1 -> V2: All syscall handlers wrapped by this macro.
> V2 -> V3: Move creation of do_ppc64_personality helper to prior patch.
> V3 -> V4: Fix parenthesis alignment. Don't emit sys_*** symbols.
> V4 -> V5: Use 'aside' in the asm-generic rant in commit message.
> ---
>  arch/powerpc/include/asm/syscalls.h          | 10 ++---
>  arch/powerpc/kernel/sys_ppc32.c              | 38 +++++++++++-------
>  arch/powerpc/kernel/syscalls.c               | 17 ++++++--
>  arch/powerpc/kernel/syscalls/syscall.tbl     | 22 +++++-----
>  .../arch/powerpc/entry/syscalls/syscall.tbl  | 22 +++++-----
>  5 files changed, 64 insertions(+), 45 deletions(-)
>


More information about the Linuxppc-dev mailing list