master
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