microblaze port
[musl] / src / thread / microblaze / clone.s
1 .global __clone
2 .weak clone
3 .type   __clone,@function
4 .type   clone,@function
5
6 # r5, r6, r7, r8, r9, r10, stack
7 # fn, st, fl, ar, pt, tl, ct
8 # fl, st, pt, tl, ctx
9
10 __clone:
11 clone:
12         andi    r6, r6, -16
13         addi    r6, r6, -16
14         swi     r5, r6, 0
15         swi     r8, r6, 4
16
17         ori     r5, r7, 0
18         ori     r7, r9, 0
19         ori     r8, r10, 0
20         lwi     r9, r1, 28
21         ori     r12, r0, 120
22
23         brki    r14, 8
24         beqi    r3, 1f
25         rtsd    r15, 8
26         nop
27         
28 1:      lwi     r3, r1, 0
29         lwi     r5, r1, 4
30         brald   r15, r3
31         nop
32         ori     r12, r0, 1
33         brki    r14, 8