Messages in this thread Patch in this message | | | From | Jonas Bonn <> | Subject | [PATCH 1/2] openrisc: move sys_clone's stack determination to copy_thread | Date | Thu, 25 Oct 2012 17:46:38 +0200 |
| |
Signed-off-by: Jonas Bonn <jonas@southpole.se> --- arch/openrisc/kernel/process.c | 6 +++++- arch/openrisc/kernel/sys_or32.c | 8 +------- 2 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c index e0874b8..efbe4f8 100644 --- a/arch/openrisc/kernel/process.c +++ b/arch/openrisc/kernel/process.c @@ -170,7 +170,11 @@ copy_thread(unsigned long clone_flags, unsigned long usp, } else { *userregs = *regs; - userregs->sp = usp; + if (usp) + userregs->sp = usp; /* clone */ + else + userregs->sp = regs->sp; /* fork/clone */ + userregs->gpr[11] = 0; /* Result from fork() */ kregs->gpr[20] = 0; /* Userspace thread */ diff --git a/arch/openrisc/kernel/sys_or32.c b/arch/openrisc/kernel/sys_or32.c index d6ddd3c..db46b82 100644 --- a/arch/openrisc/kernel/sys_or32.c +++ b/arch/openrisc/kernel/sys_or32.c @@ -46,12 +46,6 @@ asmlinkage long _sys_clone(unsigned long clone_flags, unsigned long newsp, { long ret; - /* FIXME: Is alignment necessary? */ - /* newsp = ALIGN(newsp, 4); */ - - if (!newsp) - newsp = regs->sp; - ret = do_fork(clone_flags, newsp, regs, 0, parent_tid, child_tid); return ret; @@ -60,7 +54,7 @@ asmlinkage long _sys_clone(unsigned long clone_flags, unsigned long newsp, asmlinkage int _sys_fork(struct pt_regs *regs) { #ifdef CONFIG_MMU - return do_fork(SIGCHLD, regs->sp, regs, 0, NULL, NULL); + return do_fork(SIGCHLD, 0, regs, 0, NULL, NULL); #else return -EINVAL; #endif -- 1.7.9.5
| |