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