diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2012-10-22 22:34:11 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2012-11-28 22:13:44 -0500 |
commit | 1d4b4b2994b5fc208963c0b795291f8c1f18becf (patch) | |
tree | befe27a3e2abc333b5bd81ee7381e4c5541f543f /arch/x86/ia32 | |
parent | 71613c3b871c5a9f27cc48f124251bcd3aa23be1 (diff) |
x86, um: switch to generic fork/vfork/clone
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'arch/x86/ia32')
-rw-r--r-- | arch/x86/ia32/ia32entry.S | 7 | ||||
-rw-r--r-- | arch/x86/ia32/sys_ia32.c | 11 |
2 files changed, 6 insertions, 12 deletions
diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 076745fc8045..32e6f05ddaaa 100644 --- a/arch/x86/ia32/ia32entry.S +++ b/arch/x86/ia32/ia32entry.S | |||
@@ -467,11 +467,16 @@ GLOBAL(\label) | |||
467 | PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx | 467 | PTREGSCALL stub32_sigaltstack, sys32_sigaltstack, %rdx |
468 | PTREGSCALL stub32_execve, compat_sys_execve, %rcx | 468 | PTREGSCALL stub32_execve, compat_sys_execve, %rcx |
469 | PTREGSCALL stub32_fork, sys_fork, %rdi | 469 | PTREGSCALL stub32_fork, sys_fork, %rdi |
470 | PTREGSCALL stub32_clone, sys32_clone, %rdx | ||
471 | PTREGSCALL stub32_vfork, sys_vfork, %rdi | 470 | PTREGSCALL stub32_vfork, sys_vfork, %rdi |
472 | PTREGSCALL stub32_iopl, sys_iopl, %rsi | 471 | PTREGSCALL stub32_iopl, sys_iopl, %rsi |
473 | 472 | ||
474 | ALIGN | 473 | ALIGN |
474 | GLOBAL(stub32_clone) | ||
475 | leaq sys_clone(%rip),%rax | ||
476 | mov %r8, %rcx | ||
477 | jmp ia32_ptregs_common | ||
478 | |||
479 | ALIGN | ||
475 | ia32_ptregs_common: | 480 | ia32_ptregs_common: |
476 | popq %r11 | 481 | popq %r11 |
477 | CFI_ENDPROC | 482 | CFI_ENDPROC |
diff --git a/arch/x86/ia32/sys_ia32.c b/arch/x86/ia32/sys_ia32.c index 86d68d1c8806..d0b689ba7be2 100644 --- a/arch/x86/ia32/sys_ia32.c +++ b/arch/x86/ia32/sys_ia32.c | |||
@@ -385,17 +385,6 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd, | |||
385 | return ret; | 385 | return ret; |
386 | } | 386 | } |
387 | 387 | ||
388 | asmlinkage long sys32_clone(unsigned int clone_flags, unsigned int newsp, | ||
389 | struct pt_regs *regs) | ||
390 | { | ||
391 | void __user *parent_tid = (void __user *)regs->dx; | ||
392 | void __user *child_tid = (void __user *)regs->di; | ||
393 | |||
394 | if (!newsp) | ||
395 | newsp = regs->sp; | ||
396 | return do_fork(clone_flags, newsp, regs, 0, parent_tid, child_tid); | ||
397 | } | ||
398 | |||
399 | /* | 388 | /* |
400 | * Some system calls that need sign extended arguments. This could be | 389 | * Some system calls that need sign extended arguments. This could be |
401 | * done by a generic wrapper. | 390 | * done by a generic wrapper. |