1
0

syscall_cp.s 512 B

1234567891011121314151617181920212223242526272829
  1. .global __cp_begin
  2. .hidden __cp_begin
  3. .global __cp_end
  4. .hidden __cp_end
  5. .global __cp_cancel
  6. .hidden __cp_cancel
  7. .hidden __cancel
  8. .global __syscall_cp_asm
  9. .hidden __syscall_cp_asm
  10. .type __syscall_cp_asm,@function
  11. __syscall_cp_asm:
  12. __cp_begin:
  13. ld.w $a0, $a0, 0
  14. bnez $a0, __cp_cancel
  15. move $t8, $a1 # reserve system call number
  16. move $a0, $a2
  17. move $a1, $a3
  18. move $a2, $a4
  19. move $a3, $a5
  20. move $a4, $a6
  21. move $a5, $a7
  22. move $a7, $t8
  23. syscall 0
  24. __cp_end:
  25. jr $ra
  26. __cp_cancel:
  27. la.local $t8, __cancel
  28. jr $t8