| .syntax unified | |
| .global __cp_begin | |
| .hidden __cp_begin | |
| .global __cp_end | |
| .hidden __cp_end | |
| .global __cp_cancel | |
| .hidden __cp_cancel | |
| .hidden __cancel | |
| .global __syscall_cp_asm | |
| .hidden __syscall_cp_asm | |
| .type __syscall_cp_asm,%function | |
| __syscall_cp_asm: | |
| mov ip,sp | |
| stmfd sp!,{r4,r5,r6,r7,lr} | |
| __cp_begin: | |
| ldr r0,[r0] | |
| cmp r0,#0 | |
| blne __cp_cancel | |
| mov r7,r1 | |
| mov r0,r2 | |
| mov r1,r3 | |
| ldmfd ip,{r2,r3,r4,r5,r6} | |
| svc 0 | |
| __cp_end: | |
| ldmfd sp!,{r4,r5,r6,r7,lr} | |
| bx lr | |
| __cp_cancel: | |
| ldmfd sp!,{r4,r5,r6,r7,lr} | |
| b __cancel |