about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/rt/arch/arm/ccall.S25
1 files changed, 10 insertions, 15 deletions
diff --git a/src/rt/arch/arm/ccall.S b/src/rt/arch/arm/ccall.S
index 4b89cc994a7..345e6462d07 100644
--- a/src/rt/arch/arm/ccall.S
+++ b/src/rt/arch/arm/ccall.S
@@ -5,23 +5,18 @@
 
 .globl __morestack
 .hidden __morestack
+.type __morestack, %function
 __morestack:
-	mov r3, sp
+	.fnstart
+	.save {r4, fp, lr}
+	push {r4, fp, lr}
+    .movsp r4
+	mov r4, sp
 	mov sp, r2
-	
-	str r3, [sp]
-	str lr, [sp, #-4]
-	
-	sub sp, #8
-	
+	mov fp, sp
 	blx r1
-
-	add sp, #8
-	
-	ldr lr, [sp, #-4]
-	ldr r3, [sp] 
-	
-	mov sp, r3
+	mov sp, r4
+	pop {r4, fp, lr}
 	mov pc, lr
-	
+	.fnend