github.com/afumu/libc@v0.0.6/musl/src/thread/mips64/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 ld $10, 0($sp) 30 syscall 31 __cp_end: 32 beq $7, $0, 1f 33 nop 34 dsubu $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 .align 8 42 bal 1f 43 nop 44 __cp_cancel_data: 45 .gpdword __cp_cancel_data 46 .gpdword __cancel 47 1: ld $3, ($ra) 48 dsubu $3, $ra, $3 49 ld $25, 8($ra) 50 daddu $25, $25, $3 51 jr $25 52 move $ra, $2