about summary refs log tree commit diff
path: root/src/thread/arm/clone.s
blob: bb0965dafe8298e652a5291dd443893153c748af (plain) (blame)
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
.syntax unified
.text
.global __clone
.hidden __clone
.type   __clone,%function
__clone:
	stmfd sp!,{r4,r5,r6,r7}
	mov r7,#120
	mov r6,r3
	mov r5,r0
	mov r0,r2
	and r1,r1,#-16
	ldr r2,[sp,#16]
	ldr r3,[sp,#20]
	ldr r4,[sp,#24]
	svc 0
	tst r0,r0
	beq 1f
	ldmfd sp!,{r4,r5,r6,r7}
	bx lr

1:	mov r0,r6
	bl 3f
2:	mov r7,#1
	svc 0
	b 2b

3:	bx r5