Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bcfe540 authored by Al Viro's avatar Al Viro
Browse files

powerpc: switch to generic fork/clone/vfork



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 38a61b6b
Loading
Loading
Loading
Loading
+1 −0
Original line number Original line Diff line number Diff line
@@ -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
+0 −9
Original line number Original line Diff line number Diff line
@@ -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,
+3 −0
Original line number Original line Diff line number Diff line
@@ -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
+0 −23
Original line number Original line Diff line number Diff line
@@ -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)
{
{