Since some power syscall handlers call into other syscall handlers with the usual in-register calling convention, emit symbols for both conventions when required. The prototypes for handlers supporting in-register parameters should exist in a header rather than immediately preceding their usage.
Signed-off-by: Rohan McLure <rmcl...@linux.ibm.com> --- arch/powerpc/include/asm/syscalls.h | 16 ++++++++++++++++ arch/powerpc/kernel/syscalls.c | 7 ------- arch/powerpc/kernel/vdso.c | 3 +-- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/arch/powerpc/include/asm/syscalls.h b/arch/powerpc/include/asm/syscalls.h index 75d8e1822caf..1e5f2ddcabe0 100644 --- a/arch/powerpc/include/asm/syscalls.h +++ b/arch/powerpc/include/asm/syscalls.h @@ -43,6 +43,22 @@ struct rtas_args; +#ifdef CONFIG_ARCH_HAS_SYSCALL_WRAPPER +#include <linux/syscalls.h> +asmlinkage long sys_ni_syscall(void); +#ifdef CONFIG_PPC32 +asmlinkage long sys_old_select(struct sel_arg_struct __user *arg); +asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, + fd_set __user *exp, + struct __kernel_old_timeval __user *tvp); +#endif /* CONFIG_PPC32 */ + +#ifdef CONFIG_PPC64 +asmlinkage long sys_personality(unsigned int personality); +#endif /* CONFIG_PPC64 */ + +#endif /* CONFIG_ARCH_HAS_SYSCALL_WRAPPER */ + asmlinkage long sys_mmap(unsigned long addr, size_t len, unsigned long prot, unsigned long flags, unsigned long fd, off_t offset); diff --git a/arch/powerpc/kernel/syscalls.c b/arch/powerpc/kernel/syscalls.c index c64cdb5c4435..6107bdd5dad1 100644 --- a/arch/powerpc/kernel/syscalls.c +++ b/arch/powerpc/kernel/syscalls.c @@ -64,11 +64,6 @@ SYSCALL_DEFINE6(mmap, unsigned long, addr, size_t, len, } #ifdef CONFIG_PPC32 -asmlinkage long sys_old_select(struct sel_arg_struct __user *arg); -asmlinkage long sys_select(int n, fd_set __user *inp, fd_set __user *outp, - fd_set __user *exp, - struct __kernel_old_timeval __user *tvp); - /* * Due to some executables calling the wrong select we sometimes * get wrong args. This determines how the args are being passed @@ -87,8 +82,6 @@ PPC_SYSCALL_DEFINE(5, long, ppc_select, #endif #ifdef CONFIG_PPC64 -asmlinkage long sys_personality(unsigned int personality); - PPC_SYSCALL_DEFINE(1, long, ppc64_personality, unsigned long, personality) { long ret; diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index dcf57c07dbad..8a56e290fcaf 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c @@ -22,6 +22,7 @@ #include <vdso/datapage.h> #include <asm/syscall.h> +#include <asm/syscalls.h> #include <asm/processor.h> #include <asm/mmu.h> #include <asm/mmu_context.h> @@ -40,8 +41,6 @@ extern char vdso32_start, vdso32_end; extern char vdso64_start, vdso64_end; -asmlinkage long sys_ni_syscall(void); - /* * The vdso data page (aka. systemcfg for old ppc64 fans) is here. * Once the early boot kernel code no longer needs to muck around -- 2.34.1