github.com/afumu/libc@v0.0.6/musl/src/thread/mips/syscall_cp.s (about) 1 .set noreorder 2 3 .global __cp_begin 4 .hidden __cp_begin 5 .type __cp_begin,@function 6 .global __cp_end 7 .hidden __cp_end 8 .type __cp_end,@function 9 .global __cp_cancel 10 .hidden __cp_cancel 11 .type __cp_cancel,@function 12 .hidden __cancel 13 .global __syscall_cp_asm 14 .hidden __syscall_cp_asm 15 .type __syscall_cp_asm,@function 16 __syscall_cp_asm: 17 subu $sp, $sp, 32 18 __cp_begin: 19 lw $4, 0($4) 20 bne $4, $0, __cp_cancel 21 move $2, $5 22 move $4, $6 23 move $5, $7 24 lw $6, 48($sp) 25 lw $7, 52($sp) 26 lw $8, 56($sp) 27 lw $9, 60($sp) 28 lw $10,64($sp) 29 sw $8, 16($sp) 30 sw $9, 20($sp) 31 sw $10,24($sp) 32 sw $2, 28($sp) 33 lw $2, 28($sp) 34 syscall 35 __cp_end: 36 beq $7, $0, 1f 37 addu $sp, $sp, 32 38 subu $2, $0, $2 39 1: jr $ra 40 nop 41 42 __cp_cancel: 43 move $2, $ra 44 bal 1f 45 addu $sp, $sp, 32 46 .gpword . 47 .gpword __cancel 48 1: lw $3, ($ra) 49 subu $3, $ra, $3 50 lw $25, 4($ra) 51 addu $25, $25, $3 52 jr $25 53 move $ra, $2