1570af302Sopenharmony_ci# __clone(func, stack, flags, arg, ptid, tls, ctid) 2570af302Sopenharmony_ci# a0, a1, a2, a3, a4, a5, a6 3570af302Sopenharmony_ci 4570af302Sopenharmony_ci# syscall(SYS_clone, flags, stack, ptid, tls, ctid) 5570af302Sopenharmony_ci# a7 a0, a1, a2, a3, a4 6570af302Sopenharmony_ci 7570af302Sopenharmony_ci.global __clone 8570af302Sopenharmony_ci.type __clone, %function 9570af302Sopenharmony_ci__clone: 10570af302Sopenharmony_ci # Save func and arg to stack 11570af302Sopenharmony_ci addi a1, a1, -16 12570af302Sopenharmony_ci sw a0, 0(a1) 13570af302Sopenharmony_ci sw a3, 4(a1) 14570af302Sopenharmony_ci 15570af302Sopenharmony_ci # Call SYS_clone 16570af302Sopenharmony_ci mv a0, a2 17570af302Sopenharmony_ci mv a2, a4 18570af302Sopenharmony_ci mv a3, a5 19570af302Sopenharmony_ci mv a4, a6 20570af302Sopenharmony_ci li a7, 220 # SYS_clone 21570af302Sopenharmony_ci ecall 22570af302Sopenharmony_ci 23570af302Sopenharmony_ci beqz a0, 1f 24570af302Sopenharmony_ci # Parent 25570af302Sopenharmony_ci ret 26570af302Sopenharmony_ci 27570af302Sopenharmony_ci # Child 28570af302Sopenharmony_ci1: lw a1, 0(sp) 29570af302Sopenharmony_ci lw a0, 4(sp) 30570af302Sopenharmony_ci jalr a1 31570af302Sopenharmony_ci 32570af302Sopenharmony_ci # Exit 33570af302Sopenharmony_ci li a7, 93 # SYS_exit 34570af302Sopenharmony_ci ecall 35