master
 1# __clone(func, stack, flags, arg, ptid, tls, ctid)
 2#           a0,    a1,    a2,  a3,   a4,  a5,   a6
 3
 4# syscall(SYS_clone, flags, stack, ptid, tls, ctid)
 5#                a7     a0,    a1,   a2,  a3,   a4
 6
 7.global __clone
 8.type  __clone, %function
 9__clone:
10	andi a1, a1, -16
11
12	# Save func and arg to stack
13	addi a1, a1, -16
14	sw a0, 0(a1)
15	sw a3, 4(a1)
16
17	# Call SYS_clone
18	mv a0, a2
19	mv a2, a4
20	mv a3, a5
21	mv a4, a6
22	li a7, 220 # SYS_clone
23	ecall
24
25	beqz a0, 1f
26	# Parent
27	ret
28
29	# Child
301:      lw a1, 0(sp)
31	lw a0, 4(sp)
32	jalr a1
33
34	# Exit
35	li a7, 93 # SYS_exit
36	ecall