1/*- 2 * Copyright (c) 1990, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * William Jolitz. 7 * 8 * %sccs.include.redist.c% 9 */ 10 11#if defined(SYSLIBC_SCCS) && !defined(lint) 12 .asciz "@(#)Ovfork.s 8.1 (Berkeley) 06/04/93" 13#endif /* SYSLIBC_SCCS and not lint */ 14 15#include "SYS.h" 16 17/* 18 * pid = vfork(); 19 * 20 * %edx == 0 in parent process, %edx == 1 in child process. 21 * %eax == pid of child in parent, %eax == pid of parent in child. 22 * 23 */ 24 .set vfork,66 25.globl _vfork 26 27_vfork: 28 popl %ecx /* my rta into ecx */ 29 movl $vfork, %eax 30 LCALL(7,0) 31 jb verror 32vforkok: 33 cmpl $0,%edx /* child process? */ 34 jne child /* yes */ 35 jmp parent 36.globl _errno 37verror: 38 movl %eax,_errno 39 movl $-1,%eax 40 jmp %ecx 41child: 42 movl $0,%eax 43parent: 44 jmp %ecx 45