aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm64/kernel/sys32.c
diff options
context:
space:
mode:
authorMark Rutland <mark.rutland@arm.com>2018-07-11 14:56:41 +0100
committerWill Deacon <will.deacon@arm.com>2018-07-12 14:40:39 +0100
commit3085e1645e23888125224f66a710077cdb03106a (patch)
treea0aa48b29c26aa10c8d7e07fb0a5da7edac7b28b /arch/arm64/kernel/sys32.c
parentarm64: move sve_user_{enable,disable} to <asm/fpsimd.h> (diff)
downloadlinux-dev-3085e1645e23888125224f66a710077cdb03106a.tar.xz
linux-dev-3085e1645e23888125224f66a710077cdb03106a.zip
arm64: remove sigreturn wrappers
The arm64 sigreturn* syscall handlers are non-standard. Rather than taking a number of user parameters in registers as per the AAPCS, they expect the pt_regs as their sole argument. To make this work, we override the syscall definitions to invoke wrappers written in assembly, which mov the SP into x0, and branch to their respective C functions. On other architectures (such as x86), the sigreturn* functions take no argument and instead use current_pt_regs() to acquire the user registers. This requires less boilerplate code, and allows for other features such as interposing C code in this path. This patch takes the same approach for arm64. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Tentatively-reviewed-by: Dave Martin <dave.martin@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm64/kernel/sys32.c')
-rw-r--r--arch/arm64/kernel/sys32.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm64/kernel/sys32.c b/arch/arm64/kernel/sys32.c
index a40b1343b819..1ef103c95410 100644
--- a/arch/arm64/kernel/sys32.c
+++ b/arch/arm64/kernel/sys32.c
@@ -25,8 +25,8 @@
#include <linux/compiler.h>
#include <linux/syscalls.h>
-asmlinkage long compat_sys_sigreturn_wrapper(void);
-asmlinkage long compat_sys_rt_sigreturn_wrapper(void);
+asmlinkage long compat_sys_sigreturn(void);
+asmlinkage long compat_sys_rt_sigreturn(void);
asmlinkage long compat_sys_statfs64_wrapper(void);
asmlinkage long compat_sys_fstatfs64_wrapper(void);
asmlinkage long compat_sys_pread64_wrapper(void);