summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/ia64/clone.S
blob: ba768141c3d2b86790bdca2a964836ad9ad7eedc (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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* This is untested code which probably won´t work out of the box! */

#include "syscalls.h"
#include <errno.h>

.text
.globl __clone
.proc  __clone
.weak  __clone2
__clone2:
__clone:
	mov r8 = EINVAL
	cmp.eq p6,p0=0,r32     
(p6)	br.cond.spnt.few __error_unified_syscall
	cmp.eq p6,p0=0,r33     
(p6)	br.cond.spnt.few __error_unified_syscall
	flushrs

	mov.m r17 = ar.rsc
	mov r14 = r32
	mov r18 = r33
	mov r16 = r36;;
	mov r15 = __NR_clone2
	break 0x100000
	cmp.eq p6,p0=-1,r10
(p6)	br.cond.spnt.few __error_unified_syscall
	cmp.eq p6,p7=0,r8
(p6)	ld8 r34=[r14],8
(p6)	mov.m ar.bspstore=r18
(p6)	mov r32 = r16
	mov.m ar.rsc = r17
(p7)	br.ret.sptk b0
	ld8 r1 = [r14]
	mov b6 = r34
	br.call.dptk.few b0=b6
	mov r32 = r8
	br.call.dptk.few b0=__error_unified_syscall
	br.ret.sptk.few b0
.endp __clone
.endp __clone2
.size __clone, . - __clone