diff options
author | Brian Gerst <brgerst@gmail.com> | 2009-12-10 01:01:56 +0100 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2009-12-10 01:29:42 +0100 |
commit | f839bbc5c81b1c92ff8e81c360e9564f7b961b2e (patch) | |
tree | 038fef1b902db9ec43b1ab6b82861ebf2d56eef5 /arch/x86/kernel/entry_32.S | |
parent | x86, 32-bit: Convert sys_vm86 & sys_vm86old (diff) | |
download | linux-f839bbc5c81b1c92ff8e81c360e9564f7b961b2e.tar.xz linux-f839bbc5c81b1c92ff8e81c360e9564f7b961b2e.zip |
x86: Merge sys_clone
Change 32-bit sys_clone to new PTREGSCALL stub, and merge with 64-bit.
Signed-off-by: Brian Gerst <brgerst@gmail.com>
LKML-Reference: <1260403316-5679-7-git-send-email-brgerst@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86/kernel/entry_32.S')
-rw-r--r-- | arch/x86/kernel/entry_32.S | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S index 6c2f25d9b9d5..6492555d123d 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -760,7 +760,6 @@ ptregs_##name: \ PTREGSCALL1(iopl) PTREGSCALL0(fork) -PTREGSCALL0(clone) PTREGSCALL0(vfork) PTREGSCALL3(execve) PTREGSCALL2(sigaltstack) @@ -769,6 +768,19 @@ PTREGSCALL0(rt_sigreturn) PTREGSCALL2(vm86) PTREGSCALL1(vm86old) +/* Clone is an oddball. The 4th arg is in %edi */ + ALIGN; +ptregs_clone: + leal 4(%esp),%eax + pushl %eax + pushl PT_EDI(%eax) + movl PT_EDX(%eax),%ecx + movl PT_ECX(%eax),%edx + movl PT_EBX(%eax),%eax + call sys_clone + addl $8,%esp + ret + .macro FIXUP_ESPFIX_STACK /* * Switch back for ESPFIX stack to the normal zerobased stack |