github.com/afumu/libc@v0.0.6/musl/src/thread/mips/clone.s (about) 1 .set noreorder 2 .global __clone 3 .hidden __clone 4 .type __clone,@function 5 __clone: 6 # Save function pointer and argument pointer on new thread stack 7 and $5, $5, -8 8 subu $5, $5, 16 9 sw $4, 0($5) 10 sw $7, 4($5) 11 # Shuffle (fn,sp,fl,arg,ptid,tls,ctid) to (fl,sp,ptid,tls,ctid) 12 move $4, $6 13 lw $6, 16($sp) 14 lw $7, 20($sp) 15 lw $9, 24($sp) 16 subu $sp, $sp, 16 17 sw $9, 16($sp) 18 li $2, 4120 19 syscall 20 beq $7, $0, 1f 21 nop 22 addu $sp, $sp, 16 23 jr $ra 24 subu $2, $0, $2 25 1: beq $2, $0, 1f 26 nop 27 addu $sp, $sp, 16 28 jr $ra 29 nop 30 1: lw $25, 0($sp) 31 lw $4, 4($sp) 32 jalr $25 33 nop 34 move $4, $2 35 li $2, 4001 36 syscall