aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/entry_32.S
diff options
context:
space:
mode:
authorBrian Gerst <brgerst@gmail.com>2009-12-09 19:01:56 -0500
committerH. Peter Anvin <hpa@zytor.com>2009-12-09 19:29:42 -0500
commitf839bbc5c81b1c92ff8e81c360e9564f7b961b2e (patch)
tree038fef1b902db9ec43b1ab6b82861ebf2d56eef5 /arch/x86/kernel/entry_32.S
parentf1382f157fb1175bba008abad0907310a1e459ce (diff)
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.S14
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: \
760 760
761PTREGSCALL1(iopl) 761PTREGSCALL1(iopl)
762PTREGSCALL0(fork) 762PTREGSCALL0(fork)
763PTREGSCALL0(clone)
764PTREGSCALL0(vfork) 763PTREGSCALL0(vfork)
765PTREGSCALL3(execve) 764PTREGSCALL3(execve)
766PTREGSCALL2(sigaltstack) 765PTREGSCALL2(sigaltstack)
@@ -769,6 +768,19 @@ PTREGSCALL0(rt_sigreturn)
769PTREGSCALL2(vm86) 768PTREGSCALL2(vm86)
770PTREGSCALL1(vm86old) 769PTREGSCALL1(vm86old)
771 770
771/* Clone is an oddball. The 4th arg is in %edi */
772 ALIGN;
773ptregs_clone:
774 leal 4(%esp),%eax
775 pushl %eax
776 pushl PT_EDI(%eax)
777 movl PT_EDX(%eax),%ecx
778 movl PT_ECX(%eax),%edx
779 movl PT_EBX(%eax),%eax
780 call sys_clone
781 addl $8,%esp
782 ret
783
772.macro FIXUP_ESPFIX_STACK 784.macro FIXUP_ESPFIX_STACK
773/* 785/*
774 * Switch back for ESPFIX stack to the normal zerobased stack 786 * Switch back for ESPFIX stack to the normal zerobased stack