master
1// __clone(func, stack, flags, arg, ptid, tls, ctid)
2// x0, x1, w2, x3, x4, x5, x6
3
4// syscall(SYS_clone, flags, stack, ptid, tls, ctid)
5// x8, x0, x1, x2, x3, x4
6
7.global __clone
8.hidden __clone
9.type __clone,%function
10__clone:
11 // align stack and save func,arg
12 and x1,x1,#-16
13 stp x0,x3,[x1,#-16]!
14
15 // syscall
16 uxtw x0,w2
17 mov x2,x4
18 mov x3,x5
19 mov x4,x6
20 mov x8,#220 // SYS_clone
21 svc #0
22
23 cbz x0,1f
24 // parent
25 ret
26 // child
271: mov fp, 0
28 ldp x1,x0,[sp],#16
29 blr x1
30 mov x8,#93 // SYS_exit
31 svc #0