summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/sparc/fork.S
blob: a54cab2a9124e84469310436f3448d9be8b4a1a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "syscalls.h"

.text
.weak fork
fork:
.global __libc_fork
__libc_fork:
	mov	2, %g1
	ta	0x10
	bcc,a	1f
	nop
	save	%sp, -96, %sp
#ifdef WANT_THREAD_SAFE
	call	__errno_location
	nop
#else
	sethi	%hi(errno), %o0
	or	%o0, %lo(errno), %o0
#endif
	st	%i0, [ %o0 ]
	retl
	restore	%g0, -1, %o0
1:	dec	%o1
	retl
	and	%o0, %o1, %o0