install approved copyright notice
[unix-history] / usr / src / lib / libc / vax / sys / Ovfork.s
CommitLineData
fcd2465c
DF
1/*
2 * Copyright (c) 1983 Regents of the University of California.
b094f5ae
KB
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms are permitted
50c7758a
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
fcd2465c
DF
16 */
17
b094f5ae 18#if defined(SYSLIBC_SCCS) && !defined(lint)
50c7758a 19 .asciz "@(#)Ovfork.s 5.5 (Berkeley) %G%"
b094f5ae 20#endif /* SYSLIBC_SCCS and not lint */
fcd2465c 21
1dcd2d9e
KM
22/*
23 * @(#)vfork.s 4.1 (Berkeley) 12/21/80
24 * C library -- vfork
25 */
26
27/*
28 * pid = vfork();
29 *
30 * r1 == 0 in parent process, r1 == 1 in child process.
31 * r0 == pid of child in parent, r0 == pid of parent in child.
32 *
33 * trickery here, due to keith sklower, uses ret to clear the stack,
34 * and then returns with a jump indirect, since only one person can return
35 * with a ret off this stack... we do the ret before we vfork!
36 */
37
38 .set vfork,66
39.globl _vfork
40
41_vfork:
42 .word 0x0000
43 movl 16(fp),r2
44 movab here,16(fp)
45 ret
46here:
47 chmk $vfork
48 bcc vforkok
49 jmp verror
50vforkok:
51 tstl r1 # child process ?
52 bneq child # yes
53 bcc parent # if c-bit not set, fork ok
54.globl _errno
55verror:
56 movl r0,_errno
57 mnegl $1,r0
58 jmp (r2)
59child:
60 clrl r0
61parent:
62 jmp (r2)