-rw-r--r-- | src/thread/mips/syscall_cp.s | 15 |
diff --git a/src/thread/mips/syscall_cp.s b/src/thread/mips/syscall_cp.s index 8f76d40e..b01a5704 100644 --- a/src/thread/mips/syscall_cp.s +++ b/src/thread/mips/syscall_cp.s @@ -9,6 +9,9 @@ .global __cp_cancel .hidden __cp_cancel .type __cp_cancel,@function +.global __cp_cancel_data +.hidden __cp_cancel_data +.type __cp_cancel_data,@function .hidden __cancel .global __syscall_cp_asm .hidden __syscall_cp_asm @@ -40,7 +43,15 @@ __cp_end: nop __cp_cancel: + move 2,ドル $ra + bal 1f addu $sp, $sp, 32 - lw 25,ドル %call16(__cancel)($gp) +__cp_cancel_data: + .gpword __cp_cancel_data + .gpword __cancel +1: lw 3,ドル ($ra) + subu 3,ドル $ra, 3ドル + lw 25,ドル 4($ra) + addu 25,ドル 25,ドル 3ドル jr 25ドル - nop + move $ra, 2ドル |