syscall_cp.s 494 B

1234567891011121314151617181920212223242526272829
  1. .syntax unified
  2. .global __cp_begin
  3. .hidden __cp_begin
  4. .global __cp_end
  5. .hidden __cp_end
  6. .global __cp_cancel
  7. .hidden __cp_cancel
  8. .hidden __cancel
  9. .global __syscall_cp_asm
  10. .hidden __syscall_cp_asm
  11. .type __syscall_cp_asm,%function
  12. __syscall_cp_asm:
  13. mov ip,sp
  14. stmfd sp!,{r4,r5,r6,r7}
  15. __cp_begin:
  16. ldr r0,[r0]
  17. cmp r0,#0
  18. bne __cp_cancel
  19. mov r7,r1
  20. mov r0,r2
  21. mov r1,r3
  22. ldmfd ip,{r2,r3,r4,r5,r6}
  23. svc 0
  24. __cp_end:
  25. ldmfd sp!,{r4,r5,r6,r7}
  26. bx lr
  27. __cp_cancel:
  28. ldmfd sp!,{r4,r5,r6,r7}
  29. b __cancel