12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- /*
- * June 27, 2001 Manuel Novoa III
- *
- * Modified to (hopefully) be PIC and REENTRANT safe.
- *
- */
-
- .text
- .align 4
- .globl vfork
- .type vfork,@function
- vfork:
- popl %ecx
- movl $190,%eax
- #ifdef PIC
- pushl %ebx
- #endif
- #APP
- int $0x80
- #NO_APP
- #ifdef PIC
- popl %ebx
- #endif
- cmpl $-4095,%eax
- jae .Lerror
- jmp *%ecx
- .p2align 4,,7
- .Lerror:
- pushl %ecx
- #ifdef PIC
- pushl %ebx
- call .Lhere
- .Lhere:
- popl %ebx
- addl $_GLOBAL_OFFSET_TABLE_+[.-.Lhere],%ebx
- negl %eax
- movl %eax,%ecx
- #ifdef _LIBC_REENTRANT
- call __errno_location@PLT
- #else
- movl errno@GOT(%ebx),%eax
- #endif /* _LIBC_REENTRANT */
- movl %ecx,(%eax)
- popl %ebx
- #else
- negl %eax
- #ifdef _LIBC_REENTRANT
- movl %eax,%ecx
- call __errno_location
- movl %ecx,(%eax)
- #else
- movl %eax,errno
- #endif /* _LIBC_REENTRANT */
- #endif /* PIC */
-
- movl $-1,%eax
- ret
- .Lsize:
- .size vfork,.Lsize-vfork
|