1234567891011121314151617181920212223242526272829303132 |
- .set noreorder
- .global __clone
- .type __clone,@function
- __clone:
- # Save function pointer and argument pointer on new thread stack
- and $5, $5, -8
- subu $5, $5, 16
- sw $4, 0($5)
- sw $7, 4($5)
- # Shuffle (fn,sp,fl,arg,ptid,tls,ctid) to (fl,sp,ptid,tls,ctid)
- move $4, $6
- lw $6, 16($sp)
- lw $7, 20($sp)
- lw $9, 24($sp)
- subu $sp, $sp, 16
- sw $9, 16($sp)
- li $2, 4120
- syscall
- beq $7, $0, 1f
- nop
- addu $sp, $sp, 16
- jr $ra
- subu $2, $0, $2
- 1: beq $2, $0, 1f
- nop
- addu $sp, $sp, 16
- jr $ra
- nop
- 1: lw $25, 0($sp)
- lw $4, 4($sp)
- jr $25
- nop
|