summaryrefslogtreecommitdiffstats
path: root/libc/sysdeps/linux/i386/vfork.S
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/i386/vfork.S')
-rw-r--r--libc/sysdeps/linux/i386/vfork.S35
1 files changed, 9 insertions, 26 deletions
diff --git a/libc/sysdeps/linux/i386/vfork.S b/libc/sysdeps/linux/i386/vfork.S
index d340a983d..19c1210cb 100644
--- a/libc/sysdeps/linux/i386/vfork.S
+++ b/libc/sysdeps/linux/i386/vfork.S
@@ -3,8 +3,6 @@
*
*/
-#define _ERRNO_H 1
-#include <bits/errno.h>
#include <sys/syscall.h>
#ifndef __NR_vfork
@@ -14,39 +12,24 @@
#else
- .text
- .globl __vfork;
- .type __vfork,@function;
- .align 1<<4;
-
+.text
+.global __vfork
+.type __vfork,%function
+.align 1<<4
+
__vfork:
popl %ecx
movl $__NR_vfork,%eax
int $0x80
pushl %ecx
cmpl $-4095,%eax
- jae __syscall_error
+ jae __error
ret
-__syscall_error:
- negl %eax
- pushl %eax
-#ifdef __PIC__
- call .Lthere
-.Lthere:
- popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.- .Lthere ], %ebx
- call __errno_location@PLT
-#else
- call __errno_location
-#endif
- popl %ecx
- movl %ecx, (%eax)
- xorl %eax, %eax
- decl %eax
+__error:
+ jmp __syscall_error
-.Lsize:
- .size __vfork,.Lsize-__vfork
+.size __vfork,.-__vfork
.weak vfork ; vfork = __vfork