diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-11-13 23:47:37 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-11-28 23:43:41 -0500 |
commit | 135c37b83c81b79a888108e3f7c5f64423d8a851 (patch) | |
tree | f7d0b5f796ce3f9421abdea1230d591f5ae6e470 /arch/blackfin/kernel/process.c | |
parent | 3e41f9ba611cf8b87a20eecc54572b348b48bd91 (diff) | |
download | op-kernel-dev-135c37b83c81b79a888108e3f7c5f64423d8a851.zip op-kernel-dev-135c37b83c81b79a888108e3f7c5f64423d8a851.tar.gz |
bfin: switch to generic vfork, get rid of pointless wrappers
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/blackfin/kernel/process.c')
-rw-r--r-- | arch/blackfin/kernel/process.c | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/arch/blackfin/kernel/process.c b/arch/blackfin/kernel/process.c index da8df0e..e5ae8fc 100644 --- a/arch/blackfin/kernel/process.c +++ b/arch/blackfin/kernel/process.c @@ -127,28 +127,13 @@ void flush_thread(void) { } -asmlinkage int bfin_vfork(struct pt_regs *regs) +asmlinkage int bfin_clone(unsigned long clone_flags, unsigned long newsp) { - return do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(), regs, 0, NULL, - NULL); -} - -asmlinkage int bfin_clone(struct pt_regs *regs) -{ - unsigned long clone_flags; - unsigned long newsp; - #ifdef __ARCH_SYNC_CORE_DCACHE if (current->nr_cpus_allowed == num_possible_cpus()) set_cpus_allowed_ptr(current, cpumask_of(smp_processor_id())); #endif - - /* syscall2 puts clone_flags in r0 and usp in r1 */ - clone_flags = regs->r0; - newsp = regs->r1; - if (!newsp) - newsp = rdusp(); - else + if (newsp) newsp -= 12; return do_fork(clone_flags, newsp, regs, 0, NULL, NULL); } @@ -174,7 +159,7 @@ copy_thread(unsigned long clone_flags, } else { *childregs = *regs; childregs->r0 = 0; - p->thread.usp = usp; + p->thread.usp = usp ? : rdusp(); v[0] = v[1] = 0; } |