1*cf88c389Smatt/* $NetBSD: fork.S,v 1.6 2011/01/15 07:31:13 matt Exp $ */ 25ef4bdf6Sthorpej 35ef4bdf6Sthorpej/* 45ef4bdf6Sthorpej * pid = fork(); 55ef4bdf6Sthorpej * 65ef4bdf6Sthorpej * r4 == 0 in parent process, 1 in child process. 75ef4bdf6Sthorpej * r3 == pid of child in parent, pid of parent in child. 85ef4bdf6Sthorpej */ 95ef4bdf6Sthorpej 105ef4bdf6Sthorpej#include "SYS.h" 115ef4bdf6Sthorpej 124fb740b8Snathanw_SYSCALL(__fork,fork) 131cddd41eSmatt addi %r4,%r4,-1 # from 1 to 0 in child, 0 to -1 in parent 141cddd41eSmatt and %r3,%r3,%r4 # return 0 in child, pid in parent 155ef4bdf6Sthorpej blr 16*cf88c389SmattEND(__fork) 17