aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/i386/vfork.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/vfork.S')
-rw-r--r--sysdeps/unix/sysv/linux/i386/vfork.S10
1 files changed, 9 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/vfork.S b/sysdeps/unix/sysv/linux/i386/vfork.S
index e1f6df0998..e660e6b70e 100644
--- a/sysdeps/unix/sysv/linux/i386/vfork.S
+++ b/sysdeps/unix/sysv/linux/i386/vfork.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Andreas Schwab <schwab@gnu.org>.
@@ -34,6 +34,10 @@ ENTRY (__vfork)
/* Pop the return PC value into ECX. */
popl %ecx
+#ifdef SAVE_PID
+ SAVE_PID
+#endif
+
/* Stuff the syscall number in EAX and enter into the kernel. */
movl $SYS_ify (vfork), %eax
int $0x80
@@ -43,6 +47,10 @@ ENTRY (__vfork)
address back on the stack. */
pushl %ecx
+#ifdef RESTORE_PID
+ RESTORE_PID
+#endif
+
cmpl $-4095, %eax
/* Branch forward if it failed. */
# ifdef __ASSUME_VFORK_SYSCALL