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