about summary refs log tree commit diff
path: root/ports/sysdeps/arm/start.S
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2013-02-14 21:00:14 -0800
committerRichard Henderson <rth@twiddle.net>2013-03-06 07:46:45 -0800
commit55668624cf2c1c70ff67d8160f021df1f50fab0e (patch)
tree8c8090e169aa1eb36f4dd3ab11f65d0a0790a5d4 /ports/sysdeps/arm/start.S
parent5ff5dfe748c0585bb43e9d16fea9d89dc3bf2b9b (diff)
downloadglibc-55668624cf2c1c70ff67d8160f021df1f50fab0e.tar.gz
glibc-55668624cf2c1c70ff67d8160f021df1f50fab0e.tar.xz
glibc-55668624cf2c1c70ff67d8160f021df1f50fab0e.zip
arm: Use push/pop mnemonics
For arm this makes no difference--the result is bit-for-bit identical;
for thumb this results in smaller encodings.  Perhaps it ought not and
this is in fact an assembler bug, but I also think it's clearer.
Diffstat (limited to 'ports/sysdeps/arm/start.S')
-rw-r--r--ports/sysdeps/arm/start.S10
1 files changed, 5 insertions, 5 deletions
diff --git a/ports/sysdeps/arm/start.S b/ports/sysdeps/arm/start.S
index a1d15b8104..0a57b0becb 100644
--- a/ports/sysdeps/arm/start.S
+++ b/ports/sysdeps/arm/start.S
@@ -80,14 +80,14 @@ _start:
 	mov lr, #0
 
 	/* Pop argc off the stack and save a pointer to argv */
-	ldr a2, [sp], #4
+	pop { a2 }
 	mov a3, sp
 
 	/* Push stack limit */
-	str a3, [sp, #-4]!
+	push { a3 }
 
 	/* Push rtld_fini */
-	str a1, [sp, #-4]!
+	push { a1 }
 
 #ifdef SHARED
 	ldr sl, .L_GOT
@@ -97,7 +97,7 @@ _start:
 	ldr ip, .L_GOT+4	/* __libc_csu_fini */
 	ldr ip, [sl, ip]
 
-	str ip, [sp, #-4]!	/* Push __libc_csu_fini */
+	push { ip }		/* Push __libc_csu_fini */
 
 	ldr a4, .L_GOT+8	/* __libc_csu_init */
 	ldr a4, [sl, a4]
@@ -113,7 +113,7 @@ _start:
 	ldr ip, =__libc_csu_fini
 
 	/* Push __libc_csu_fini */
-	str ip, [sp, #-4]!
+	push { ip }
 
 	/* Set up the other arguments in registers */
 	ldr a1, =main