rework arm atomic/tp backends to be thumb-compatible and fdpic-ready
[musl.git] / src / thread / arm / clone.s
blobfe2e0e60ec4c9e5963fe55d5a940f4028f6c39da
1 .syntax unified
2 .text
3 .global __clone
4 .type __clone,%function
5 __clone:
6 stmfd sp!,{r4,r5,r6,r7}
7 mov r7,#120
8 mov r6,r3
9 mov r5,r0
10 mov r0,r2
11 and r1,r1,#-16
12 ldr r2,[sp,#16]
13 ldr r3,[sp,#20]
14 ldr r4,[sp,#24]
15 svc 0
16 tst r0,r0
17 beq 1f
18 ldmfd sp!,{r4,r5,r6,r7}
19 bx lr
21 1: mov r0,r6
22 tst r5,#1
23 bne 1f
24 mov lr,pc
25 mov pc,r5
26 2: mov r7,#1
27 svc 0
29 1: mov lr,pc
30 bx r5
31 b 2b