summaryrefslogtreecommitdiff
path: root/arch/alpha/kernel/process.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@dorothy.sfbay.redhat.com>2002-11-21 02:56:50 -0800
committerRichard Henderson <rth@dorothy.sfbay.redhat.com>2002-11-21 02:56:50 -0800
commit85f7c390fc6df56dc17e7d163cabcc2011a9a151 (patch)
tree438b424887072fd8842b5291f6a8e6b8688fc1c3 /arch/alpha/kernel/process.c
parent1475142701e197c106683cb2140f48ce5a6b109d (diff)
[ALPHA] Update clone syscall for child_tid argument.
Diffstat (limited to 'arch/alpha/kernel/process.c')
-rw-r--r--arch/alpha/kernel/process.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c
index 2e727ba90f74..196a016657ed 100644
--- a/arch/alpha/kernel/process.c
+++ b/arch/alpha/kernel/process.c
@@ -235,24 +235,25 @@ release_thread(struct task_struct *dead_task)
* with parameters (SIGCHLD, 0).
*/
int
-alpha_clone(unsigned long clone_flags, unsigned long usp, int *user_tid,
- struct pt_regs *regs)
+alpha_clone(unsigned long clone_flags, unsigned long usp, int *parent_tid,
+ int *child_tid, unsigned long tls_value, struct pt_regs *regs)
{
struct task_struct *p;
if (!usp)
usp = rdusp();
- p = do_fork(clone_flags & ~CLONE_IDLETASK, usp, regs, 0, user_tid);
+ p = do_fork(clone_flags & ~CLONE_IDLETASK, usp, regs, 0,
+ parent_tid, child_tid);
return IS_ERR(p) ? PTR_ERR(p) : p->pid;
}
int
-alpha_vfork(struct switch_stack * swstack)
+alpha_vfork(struct pt_regs *regs)
{
struct task_struct *p;
p = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, rdusp(),
- (struct pt_regs *) (swstack+1), 0, NULL);
+ regs, 0, NULL, NULL);
return IS_ERR(p) ? PTR_ERR(p) : p->pid;
}
@@ -306,7 +307,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
required for proper operation in the case of a threaded
application calling fork. */
if (clone_flags & CLONE_SETTLS)
- childti->pcb.unique = regs->r19;
+ childti->pcb.unique = regs->r20;
return 0;
}