summaryrefslogtreecommitdiff
path: root/src/thread/arm
diff options
context:
space:
mode:
Diffstat (limited to 'src/thread/arm')
-rw-r--r--src/thread/arm/atomics.s4
-rw-r--r--src/thread/arm/clone.s13
2 files changed, 7 insertions, 10 deletions
diff --git a/src/thread/arm/atomics.s b/src/thread/arm/atomics.s
index 101ad391..da50508d 100644
--- a/src/thread/arm/atomics.s
+++ b/src/thread/arm/atomics.s
@@ -15,10 +15,10 @@ __a_barrier_oldkuser:
mov r1,r0
mov r2,sp
ldr ip,=0xffff0fc0
- mov lr,pc
- mov pc,ip
+ bl 1f
pop {r0,r1,r2,r3,ip,lr}
bx lr
+1: bx ip
.global __a_barrier_v6
.hidden __a_barrier_v6
diff --git a/src/thread/arm/clone.s b/src/thread/arm/clone.s
index e16b1326..4ff0c0e8 100644
--- a/src/thread/arm/clone.s
+++ b/src/thread/arm/clone.s
@@ -19,14 +19,11 @@ __clone:
ldmfd sp!,{r4,r5,r6,r7}
bx lr
-1: mov r0,r6
- tst r5,#1
- bne 1f
- mov lr,pc
- mov pc,r5
+1: mov fp,#0
+ mov r0,r6
+ bl 3f
2: mov r7,#1
svc 0
-
-1: mov lr,pc
- bx r5
b 2b
+
+3: bx r5