mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-13 09:20:17 +00:00
powerpc/syscalls: signal_{32, 64} - switch to SYSCALL_DEFINE
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> [mpe: Fix sys_debug_setcontext() prototype to return long] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
3691d61455
commit
f3675644e1
@ -80,18 +80,12 @@ void machine_check_exception(struct pt_regs *regs);
|
|||||||
void emulation_assist_interrupt(struct pt_regs *regs);
|
void emulation_assist_interrupt(struct pt_regs *regs);
|
||||||
|
|
||||||
/* signals, syscalls and interrupts */
|
/* signals, syscalls and interrupts */
|
||||||
#ifdef CONFIG_PPC64
|
|
||||||
int sys_swapcontext(struct ucontext __user *old_ctx,
|
|
||||||
struct ucontext __user *new_ctx,
|
|
||||||
long ctx_size, long r6, long r7, long r8, struct pt_regs *regs);
|
|
||||||
#else
|
|
||||||
long sys_swapcontext(struct ucontext __user *old_ctx,
|
long sys_swapcontext(struct ucontext __user *old_ctx,
|
||||||
struct ucontext __user *new_ctx,
|
struct ucontext __user *new_ctx,
|
||||||
int ctx_size, int r6, int r7, int r8, struct pt_regs *regs);
|
long ctx_size);
|
||||||
int sys_debug_setcontext(struct ucontext __user *ctx,
|
#ifdef CONFIG_PPC32
|
||||||
int ndbg, struct sig_dbg_op __user *dbg,
|
long sys_debug_setcontext(struct ucontext __user *ctx,
|
||||||
int r6, int r7, int r8,
|
int ndbg, struct sig_dbg_op __user *dbg);
|
||||||
struct pt_regs *regs);
|
|
||||||
int
|
int
|
||||||
ppc_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, struct timeval __user *tvp);
|
ppc_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, struct timeval __user *tvp);
|
||||||
unsigned long __init early_init(unsigned long dt_ptr);
|
unsigned long __init early_init(unsigned long dt_ptr);
|
||||||
|
@ -49,10 +49,8 @@ extern int handle_rt_signal64(struct ksignal *ksig, sigset_t *set,
|
|||||||
|
|
||||||
#else /* CONFIG_PPC64 */
|
#else /* CONFIG_PPC64 */
|
||||||
|
|
||||||
extern long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
extern long sys_rt_sigreturn(void);
|
||||||
struct pt_regs *regs);
|
extern long sys_sigreturn(void);
|
||||||
extern long sys_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
|
||||||
struct pt_regs *regs);
|
|
||||||
|
|
||||||
static inline int handle_rt_signal64(struct ksignal *ksig, sigset_t *set,
|
static inline int handle_rt_signal64(struct ksignal *ksig, sigset_t *set,
|
||||||
struct task_struct *tsk)
|
struct task_struct *tsk)
|
||||||
|
@ -26,8 +26,8 @@
|
|||||||
#include <linux/elf.h>
|
#include <linux/elf.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/ratelimit.h>
|
#include <linux/ratelimit.h>
|
||||||
#ifdef CONFIG_PPC64
|
|
||||||
#include <linux/syscalls.h>
|
#include <linux/syscalls.h>
|
||||||
|
#ifdef CONFIG_PPC64
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
#else
|
#else
|
||||||
#include <linux/wait.h>
|
#include <linux/wait.h>
|
||||||
@ -57,10 +57,6 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
#define sys_rt_sigreturn compat_sys_rt_sigreturn
|
|
||||||
#define sys_swapcontext compat_sys_swapcontext
|
|
||||||
#define sys_sigreturn compat_sys_sigreturn
|
|
||||||
|
|
||||||
#define old_sigaction old_sigaction32
|
#define old_sigaction old_sigaction32
|
||||||
#define sigcontext sigcontext32
|
#define sigcontext sigcontext32
|
||||||
#define mcontext mcontext32
|
#define mcontext mcontext32
|
||||||
@ -1041,10 +1037,15 @@ static int do_setcontext_tm(struct ucontext __user *ucp,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
long sys_swapcontext(struct ucontext __user *old_ctx,
|
#ifdef CONFIG_PPC64
|
||||||
struct ucontext __user *new_ctx,
|
COMPAT_SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
|
||||||
int ctx_size, int r6, int r7, int r8, struct pt_regs *regs)
|
struct ucontext __user *, new_ctx, int, ctx_size)
|
||||||
|
#else
|
||||||
|
SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
|
||||||
|
struct ucontext __user *, new_ctx, long, ctx_size)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
struct pt_regs *regs = current_pt_regs();
|
||||||
unsigned char tmp __maybe_unused;
|
unsigned char tmp __maybe_unused;
|
||||||
int ctx_has_vsx_region = 0;
|
int ctx_has_vsx_region = 0;
|
||||||
|
|
||||||
@ -1132,10 +1133,14 @@ long sys_swapcontext(struct ucontext __user *old_ctx,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
#ifdef CONFIG_PPC64
|
||||||
struct pt_regs *regs)
|
COMPAT_SYSCALL_DEFINE0(rt_sigreturn)
|
||||||
|
#else
|
||||||
|
SYSCALL_DEFINE0(rt_sigreturn)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
struct rt_sigframe __user *rt_sf;
|
struct rt_sigframe __user *rt_sf;
|
||||||
|
struct pt_regs *regs = current_pt_regs();
|
||||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||||
struct ucontext __user *uc_transact;
|
struct ucontext __user *uc_transact;
|
||||||
unsigned long msr_hi;
|
unsigned long msr_hi;
|
||||||
@ -1224,11 +1229,10 @@ long sys_rt_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_PPC32
|
#ifdef CONFIG_PPC32
|
||||||
int sys_debug_setcontext(struct ucontext __user *ctx,
|
SYSCALL_DEFINE3(debug_setcontext, struct ucontext __user *, ctx,
|
||||||
int ndbg, struct sig_dbg_op __user *dbg,
|
int, ndbg, struct sig_dbg_op __user *, dbg)
|
||||||
int r6, int r7, int r8,
|
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
|
struct pt_regs *regs = current_pt_regs();
|
||||||
struct sig_dbg_op op;
|
struct sig_dbg_op op;
|
||||||
int i;
|
int i;
|
||||||
unsigned char tmp __maybe_unused;
|
unsigned char tmp __maybe_unused;
|
||||||
@ -1419,9 +1423,13 @@ badframe:
|
|||||||
/*
|
/*
|
||||||
* Do a signal return; undo the signal stack.
|
* Do a signal return; undo the signal stack.
|
||||||
*/
|
*/
|
||||||
long sys_sigreturn(int r3, int r4, int r5, int r6, int r7, int r8,
|
#ifdef CONFIG_PPC64
|
||||||
struct pt_regs *regs)
|
COMPAT_SYSCALL_DEFINE0(sigreturn)
|
||||||
|
#else
|
||||||
|
SYSCALL_DEFINE0(sigreturn)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
|
struct pt_regs *regs = current_pt_regs();
|
||||||
struct sigframe __user *sf;
|
struct sigframe __user *sf;
|
||||||
struct sigcontext __user *sc;
|
struct sigcontext __user *sc;
|
||||||
struct sigcontext sigctx;
|
struct sigcontext sigctx;
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <linux/elf.h>
|
#include <linux/elf.h>
|
||||||
#include <linux/ptrace.h>
|
#include <linux/ptrace.h>
|
||||||
#include <linux/ratelimit.h>
|
#include <linux/ratelimit.h>
|
||||||
|
#include <linux/syscalls.h>
|
||||||
|
|
||||||
#include <asm/sigcontext.h>
|
#include <asm/sigcontext.h>
|
||||||
#include <asm/ucontext.h>
|
#include <asm/ucontext.h>
|
||||||
@ -624,17 +625,14 @@ static long setup_trampoline(unsigned int syscall, unsigned int __user *tramp)
|
|||||||
/*
|
/*
|
||||||
* Handle {get,set,swap}_context operations
|
* Handle {get,set,swap}_context operations
|
||||||
*/
|
*/
|
||||||
int sys_swapcontext(struct ucontext __user *old_ctx,
|
SYSCALL_DEFINE3(swapcontext, struct ucontext __user *, old_ctx,
|
||||||
struct ucontext __user *new_ctx,
|
struct ucontext __user *, new_ctx, long, ctx_size)
|
||||||
long ctx_size, long r6, long r7, long r8, struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
unsigned char tmp;
|
unsigned char tmp;
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
unsigned long new_msr = 0;
|
unsigned long new_msr = 0;
|
||||||
int ctx_has_vsx_region = 0;
|
int ctx_has_vsx_region = 0;
|
||||||
|
|
||||||
BUG_ON(regs != current->thread.regs);
|
|
||||||
|
|
||||||
if (new_ctx &&
|
if (new_ctx &&
|
||||||
get_user(new_msr, &new_ctx->uc_mcontext.gp_regs[PT_MSR]))
|
get_user(new_msr, &new_ctx->uc_mcontext.gp_regs[PT_MSR]))
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
@ -698,18 +696,15 @@ int sys_swapcontext(struct ucontext __user *old_ctx,
|
|||||||
* Do a signal return; undo the signal stack.
|
* Do a signal return; undo the signal stack.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int sys_rt_sigreturn(unsigned long r3, unsigned long r4, unsigned long r5,
|
SYSCALL_DEFINE0(rt_sigreturn)
|
||||||
unsigned long r6, unsigned long r7, unsigned long r8,
|
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
{
|
||||||
|
struct pt_regs *regs = current_pt_regs();
|
||||||
struct ucontext __user *uc = (struct ucontext __user *)regs->gpr[1];
|
struct ucontext __user *uc = (struct ucontext __user *)regs->gpr[1];
|
||||||
sigset_t set;
|
sigset_t set;
|
||||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||||
unsigned long msr;
|
unsigned long msr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
BUG_ON(current->thread.regs != regs);
|
|
||||||
|
|
||||||
/* Always make any pending restarted system calls return -EINTR */
|
/* Always make any pending restarted system calls return -EINTR */
|
||||||
current->restart_block.fn = do_no_restart_syscall;
|
current->restart_block.fn = do_no_restart_syscall;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user