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 351: 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 471: 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 53