summaryrefslogtreecommitdiff
path: root/src/thread/arm/syscall_cp.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/arm/syscall_cp.s')
-rw-r--r--src/thread/arm/syscall_cp.s18
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