summaryrefslogblamecommitdiff
path: root/src/thread/arm/clone.s
blob: d146999bda7bc3f86b1ebc5e20f9b334d17f350c (plain) (tree)
1
2
3
4

               
                         
        





















                               
                 
             
 

                 
            
.text
.global __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}
	tst lr,#1
	moveq pc,lr
	bx lr

1:	mov r0,r6
	tst r5,#1
	bne 1f
	mov lr,pc
	mov pc,r5
2:	mov r7,#1
	svc 0

1:	mov lr,pc
	bx r5
	b 2b