| 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 |