powerpc: switch to generic fork/clone/vfork
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
38a61b6b4a
commit
0bcfe54049
|
@ -145,6 +145,7 @@ config PPC
|
||||||
select HAVE_MOD_ARCH_SPECIFIC
|
select HAVE_MOD_ARCH_SPECIFIC
|
||||||
select MODULES_USE_ELF_RELA
|
select MODULES_USE_ELF_RELA
|
||||||
select GENERIC_KERNEL_EXECVE
|
select GENERIC_KERNEL_EXECVE
|
||||||
|
select CLONE_BACKWARDS
|
||||||
|
|
||||||
config EARLY_PRINTK
|
config EARLY_PRINTK
|
||||||
bool
|
bool
|
||||||
|
|
|
@ -17,15 +17,6 @@ asmlinkage unsigned long sys_mmap(unsigned long addr, size_t len,
|
||||||
asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len,
|
asmlinkage unsigned long sys_mmap2(unsigned long addr, size_t len,
|
||||||
unsigned long prot, unsigned long flags,
|
unsigned long prot, unsigned long flags,
|
||||||
unsigned long fd, unsigned long pgoff);
|
unsigned long fd, unsigned long pgoff);
|
||||||
asmlinkage int sys_clone(unsigned long clone_flags, unsigned long usp,
|
|
||||||
int __user *parent_tidp, void __user *child_threadptr,
|
|
||||||
int __user *child_tidp, int p6, struct pt_regs *regs);
|
|
||||||
asmlinkage int sys_fork(unsigned long p1, unsigned long p2,
|
|
||||||
unsigned long p3, unsigned long p4, unsigned long p5,
|
|
||||||
unsigned long p6, struct pt_regs *regs);
|
|
||||||
asmlinkage int sys_vfork(unsigned long p1, unsigned long p2,
|
|
||||||
unsigned long p3, unsigned long p4, unsigned long p5,
|
|
||||||
unsigned long p6, struct pt_regs *regs);
|
|
||||||
asmlinkage long sys_pipe(int __user *fildes);
|
asmlinkage long sys_pipe(int __user *fildes);
|
||||||
asmlinkage long sys_pipe2(int __user *fildes, int flags);
|
asmlinkage long sys_pipe2(int __user *fildes, int flags);
|
||||||
asmlinkage long sys_rt_sigaction(int sig,
|
asmlinkage long sys_rt_sigaction(int sig,
|
||||||
|
|
|
@ -56,6 +56,9 @@
|
||||||
#define __ARCH_WANT_COMPAT_SYS_SENDFILE
|
#define __ARCH_WANT_COMPAT_SYS_SENDFILE
|
||||||
#endif
|
#endif
|
||||||
#define __ARCH_WANT_SYS_EXECVE
|
#define __ARCH_WANT_SYS_EXECVE
|
||||||
|
#define __ARCH_WANT_SYS_FORK
|
||||||
|
#define __ARCH_WANT_SYS_VFORK
|
||||||
|
#define __ARCH_WANT_SYS_CLONE
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "Conditional" syscalls
|
* "Conditional" syscalls
|
||||||
|
|
|
@ -1026,29 +1026,6 @@ int get_unalign_ctl(struct task_struct *tsk, unsigned long adr)
|
||||||
return put_user(tsk->thread.align_ctl, (unsigned int __user *)adr);
|
return put_user(tsk->thread.align_ctl, (unsigned int __user *)adr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int sys_clone(unsigned long clone_flags, unsigned long usp,
|
|
||||||
int __user *parent_tidp, void __user *child_threadptr,
|
|
||||||
int __user *child_tidp, int p6,
|
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return do_fork(clone_flags, usp, regs, 0, parent_tidp, child_tidp);
|
|
||||||
}
|
|
||||||
|
|
||||||
int sys_fork(unsigned long p1, unsigned long p2, unsigned long p3,
|
|
||||||
unsigned long p4, unsigned long p5, unsigned long p6,
|
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return do_fork(SIGCHLD, 0, regs, 0, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
int sys_vfork(unsigned long p1, unsigned long p2, unsigned long p3,
|
|
||||||
unsigned long p4, unsigned long p5, unsigned long p6,
|
|
||||||
struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, 0,
|
|
||||||
regs, 0, NULL, NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline int valid_irq_stack(unsigned long sp, struct task_struct *p,
|
static inline int valid_irq_stack(unsigned long sp, struct task_struct *p,
|
||||||
unsigned long nbytes)
|
unsigned long nbytes)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue