1*cf88c389Smatt/* $NetBSD: compat_Ovfork.S,v 1.2 2011/01/15 07:31:13 matt Exp $ */ 2bfb62ce4Smatt 3bfb62ce4Smatt/* 4bfb62ce4Smatt * pid = vfork(); 5bfb62ce4Smatt * 6bfb62ce4Smatt * r4 == 0 in parent process, 1 in child process. 7bfb62ce4Smatt * r3 == pid of child in parent, pid of parent in child. 8bfb62ce4Smatt */ 9bfb62ce4Smatt 10bfb62ce4Smatt#include "SYS.h" 11bfb62ce4Smatt 12*cf88c389Smatt#if defined(LIBC_SCCS) 13*cf88c389Smatt__RCSID("$NetBSD: compat_Ovfork.S,v 1.2 2011/01/15 07:31:13 matt Exp $") 14*cf88c389Smatt#endif 15*cf88c389Smatt 16bfb62ce4SmattWARN_REFERENCES(vfork, \ 17bfb62ce4Smatt "warning: reference to compatibility vfork(); include <unistd.h> for correct reference") 18bfb62ce4Smatt 19bfb62ce4SmattSYSCALL(vfork) 20bfb62ce4Smatt addi %r4,%r4,-1 # from 1 to 0 in child, 0 to -1 in parent 21bfb62ce4Smatt and %r3,%r3,%r4 # return 0 in child, pid in parent 22bfb62ce4Smatt blr 23*cf88c389SmattEND(vfork) 24