diff options
Diffstat (limited to 'src/thread/arm')
-rw-r--r-- | src/thread/arm/syscall_cp.s | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/thread/arm/syscall_cp.s b/src/thread/arm/syscall_cp.s index 59924fc5..0cc23b1f 100644 --- a/src/thread/arm/syscall_cp.s +++ b/src/thread/arm/syscall_cp.s @@ -3,20 +3,18 @@ __syscall_cp_asm: mov ip,sp stmfd sp!,{r4,r5,r6,r7,lr} - stmfd sp!,{r0} - bl 1f -1: mov r4,#(1f-.) - add r4,r4,lr - str r4,[r0,#4] - str sp,[r0] +.global __cp_begin +__cp_begin: + ld r0,[r0] + cmp r0,#0 + blne __cancel mov r7,r1 mov r0,r2 mov r1,r3 ldmfd ip,{r2,r3,r4,r5,r6} -1: svc 0 - ldmfd sp!,{r1} - mov r2,#0 - str r2,[r1] + svc 0 +.global __cp_end +__cp_end: ldmfd sp!,{r4,r5,r6,r7,lr} tst lr,#1 moveq pc,lr |