remove use of endian.h from arch reloc.h headers, clean up
[musl] / src / thread / mips / clone.s
index 6c2e790..0446338 100644 (file)
@@ -1,5 +1,6 @@
 .set noreorder
 .global __clone
+.hidden __clone
 .type   __clone,@function
 __clone:
        # Save function pointer and argument pointer on new thread stack
@@ -12,18 +13,24 @@ __clone:
        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
+       jalr $25
        nop
+       move $4, $2
+       li $2, 4001
+       syscall