about summary refs log tree commit diff
diff options
context:
space:
mode:
authorILyoan <ilyoan@gmail.com>2013-03-18 20:29:48 +0900
committerILyoan <ilyoan@gmail.com>2013-03-19 17:23:41 +0900
commitc1cacc36672e2c6a581848c2909c7bb8a1b01f33 (patch)
tree50f087a0cfee90ad5ca323bc8ed564a9e89121b2
parent0f89eab89d9a6af9c4536a943c646ebe41b13002 (diff)
Rewrite arm/ccall.s
-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