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