]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/uclibc/lib/contrib/uclibc/libc/sysdeps/linux/x86_64/vfork.S
update
[l4.git] / l4 / pkg / uclibc / lib / contrib / uclibc / libc / sysdeps / linux / x86_64 / vfork.S
index 2dadbbfe0e49637b4ca9b82fa756641edba3ba64..97c9c5b67b14d022c41190d2b45ea6d97c5604bf 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2004, 2008 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,7 @@
 .text
 .global __vfork
 .hidden __vfork
-.type  __vfork,%function
+.type   __vfork,%function
 
 __vfork:
 
@@ -39,6 +39,10 @@ __vfork:
           is preserved by the syscall and that we're allowed to destroy. */
        popq    %rdi
 
+#ifdef SAVE_PID
+       SAVE_PID
+#endif
+
        /* Stuff the syscall number in RAX and enter into the kernel.  */
        movl    $__NR_vfork, %eax
        syscall
@@ -46,6 +50,10 @@ __vfork:
        /* Push back the return PC.  */
        pushq   %rdi
 
+#ifdef RESTORE_PID
+       RESTORE_PID
+#endif
+
        cmpl    $-4095, %eax
        jae __syscall_error             /* Branch forward if it failed.  */