diff options
author | Richard Henderson <rth@twiddle.net> | 2013-02-14 21:00:14 -0800 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2013-03-06 07:46:45 -0800 |
commit | 55668624cf2c1c70ff67d8160f021df1f50fab0e (patch) | |
tree | 8c8090e169aa1eb36f4dd3ab11f65d0a0790a5d4 /ports/sysdeps/arm | |
parent | 5ff5dfe748c0585bb43e9d16fea9d89dc3bf2b9b (diff) | |
download | glibc-55668624cf2c1c70ff67d8160f021df1f50fab0e.tar glibc-55668624cf2c1c70ff67d8160f021df1f50fab0e.tar.gz glibc-55668624cf2c1c70ff67d8160f021df1f50fab0e.tar.bz2 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')
-rw-r--r-- | ports/sysdeps/arm/arm-mcount.S | 6 | ||||
-rw-r--r-- | ports/sysdeps/arm/crti.S | 4 | ||||
-rw-r--r-- | ports/sysdeps/arm/crtn.S | 8 | ||||
-rw-r--r-- | ports/sysdeps/arm/dl-tlsdesc.S | 16 | ||||
-rw-r--r-- | ports/sysdeps/arm/dl-trampoline.S | 4 | ||||
-rw-r--r-- | ports/sysdeps/arm/memcpy.S | 58 | ||||
-rw-r--r-- | ports/sysdeps/arm/memmove.S | 58 | ||||
-rw-r--r-- | ports/sysdeps/arm/start.S | 10 | ||||
-rw-r--r-- | ports/sysdeps/arm/sysdep.h | 6 |
9 files changed, 85 insertions, 85 deletions
diff --git a/ports/sysdeps/arm/arm-mcount.S b/ports/sysdeps/arm/arm-mcount.S index 679d042ba4..b6e5ec78a1 100644 --- a/ports/sysdeps/arm/arm-mcount.S +++ b/ports/sysdeps/arm/arm-mcount.S @@ -69,7 +69,7 @@ END(__gnu_mcount_nc) code be compiled with APCS frame pointers. */ ENTRY(_mcount) - stmdb sp!, {r0, r1, r2, r3, fp, lr} + push {r0, r1, r2, r3, fp, lr} cfi_adjust_cfa_offset (24) cfi_rel_offset (r0, 0) cfi_rel_offset (r1, 4) @@ -83,9 +83,9 @@ ENTRY(_mcount) movsne r1, lr blne __mcount_internal #ifdef __thumb2__ - ldmia sp!, {r0, r1, r2, r3, fp, pc} + pop {r0, r1, r2, r3, fp, pc} #else - ldmia sp!, {r0, r1, r2, r3, fp, lr} + pop {r0, r1, r2, r3, fp, lr} cfi_adjust_cfa_offset (-24) cfi_restore (r0) cfi_restore (r1) diff --git a/ports/sysdeps/arm/crti.S b/ports/sysdeps/arm/crti.S index 1d55ae27ad..be20a11995 100644 --- a/ports/sysdeps/arm/crti.S +++ b/ports/sysdeps/arm/crti.S @@ -80,7 +80,7 @@ call_weak_fn: .globl _init .type _init, %function _init: - stmfd sp!, {r3, lr} + push {r3, lr} #if PREINIT_FUNCTION_WEAK bl call_weak_fn #else @@ -92,4 +92,4 @@ _init: .globl _fini .type _fini, %function _fini: - stmfd sp!, {r3, lr} + push {r3, lr} diff --git a/ports/sysdeps/arm/crtn.S b/ports/sysdeps/arm/crtn.S index a01eb01397..ae7546c5e7 100644 --- a/ports/sysdeps/arm/crtn.S +++ b/ports/sysdeps/arm/crtn.S @@ -42,16 +42,16 @@ .section .init,"ax",%progbits #ifdef __ARM_ARCH_4T__ - ldmfd sp!, {r3, lr} + pop {r3, lr} bx lr #else - ldmfd sp!, {r3, pc} + pop {r3, pc} #endif .section .fini,"ax",%progbits #ifdef __ARM_ARCH_4T__ - ldmfd sp!, {r3, lr} + pop {r3, lr} bx lr #else - ldmfd sp!, {r3, pc} + pop {r3, pc} #endif diff --git a/ports/sysdeps/arm/dl-tlsdesc.S b/ports/sysdeps/arm/dl-tlsdesc.S index 1a15272821..718d5fd178 100644 --- a/ports/sysdeps/arm/dl-tlsdesc.S +++ b/ports/sysdeps/arm/dl-tlsdesc.S @@ -90,7 +90,7 @@ _dl_tlsdesc_dynamic: /* Our calling convention is to clobber r0, r1 and the processor flags. All others that are modified must be saved */ .save {r2,r3,r4,lr} - stmdb sp!, {r2,r3,r4,lr} + push {r2,r3,r4,lr} cfi_adjust_cfa_offset (16) cfi_rel_offset (r2,0) cfi_rel_offset (r3,4) @@ -115,7 +115,7 @@ _dl_tlsdesc_dynamic: 1: mov r0, r1 bl __tls_get_addr rsb r0, r4, r0 -2: ldmia sp!, {r2,r3,r4, lr} +2: pop {r2,r3,r4, lr} cfi_adjust_cfa_offset (-16) cfi_restore (lr) cfi_restore (r4) @@ -146,7 +146,7 @@ _dl_tlsdesc_lazy_resolver: cfi_adjust_cfa_offset (4) cfi_rel_offset (r2, 0) .save {r0,r1,r3,ip,lr} - stmdb sp!, {r0, r1, r3, ip, lr} + push {r0, r1, r3, ip, lr} cfi_adjust_cfa_offset (20) cfi_rel_offset (r0, 0) cfi_rel_offset (r1, 4) @@ -154,14 +154,14 @@ _dl_tlsdesc_lazy_resolver: cfi_rel_offset (ip, 12) cfi_rel_offset (lr, 16) bl _dl_tlsdesc_lazy_resolver_fixup - ldmia sp!, {r0, r1, r3, ip, lr} + pop {r0, r1, r3, ip, lr} cfi_adjust_cfa_offset (-20) cfi_restore (lr) cfi_restore (ip) cfi_restore (r3) cfi_restore (r1) cfi_restore (r0) - ldmia sp!, {r2} + pop {r2} cfi_adjust_cfa_offset (-4) cfi_restore (r2) ldr r1, [r0, #4] @@ -184,7 +184,7 @@ _dl_tlsdesc_resolve_hold: cfi_adjust_cfa_offset (4) cfi_rel_offset (r2, 0) .save {r0,r1,r3,ip,lr} - stmdb sp!, {r0, r1, r3, ip, lr} + push {r0, r1, r3, ip, lr} cfi_adjust_cfa_offset (20) cfi_rel_offset (r0, 0) cfi_rel_offset (r1, 4) @@ -193,14 +193,14 @@ _dl_tlsdesc_resolve_hold: cfi_rel_offset (lr, 16) adr r2, _dl_tlsdesc_resolve_hold bl _dl_tlsdesc_resolve_hold_fixup - ldmia sp!, {r0, r1, r3, ip, lr} + pop {r0, r1, r3, ip, lr} cfi_adjust_cfa_offset (-20) cfi_restore (lr) cfi_restore (ip) cfi_restore (r3) cfi_restore (r1) cfi_restore (r0) - ldmia sp!, {r2} + pop {r2} cfi_adjust_cfa_offset (-4) cfi_restore (r2) ldr r1, [r0, #4] diff --git a/ports/sysdeps/arm/dl-trampoline.S b/ports/sysdeps/arm/dl-trampoline.S index 561d8ae6fd..f2d1679a64 100644 --- a/ports/sysdeps/arm/dl-trampoline.S +++ b/ports/sysdeps/arm/dl-trampoline.S @@ -43,7 +43,7 @@ _dl_runtime_resolve: @ lr points to &GOT[2] @ Save arguments. We save r4 to realign the stack. - stmdb sp!,{r0-r4} + push {r0-r4} cfi_adjust_cfa_offset (20) cfi_rel_offset (r0, 0) cfi_rel_offset (r1, 4) @@ -67,7 +67,7 @@ _dl_runtime_resolve: @ get arguments and return address back. We restore r4 @ only to realign the stack. - ldmia sp!, {r0-r4,lr} + pop {r0-r4,lr} cfi_adjust_cfa_offset (-24) @ jump to the newly found address diff --git a/ports/sysdeps/arm/memcpy.S b/ports/sysdeps/arm/memcpy.S index 98b9b47e39..98981ef489 100644 --- a/ports/sysdeps/arm/memcpy.S +++ b/ports/sysdeps/arm/memcpy.S @@ -45,11 +45,11 @@ * Endian independent macros for shifting bytes within registers. */ #ifndef __ARMEB__ -#define pull lsr -#define push lsl +#define PULL lsr +#define PUSH lsl #else -#define pull lsl -#define push lsr +#define PULL lsl +#define PUSH lsr #endif .text @@ -58,7 +58,7 @@ ENTRY(memcpy) - stmfd sp!, {r0, r4, lr} + push {r0, r4, lr} cfi_adjust_cfa_offset (12) cfi_rel_offset (r4, 4) cfi_rel_offset (lr, 8) @@ -74,7 +74,7 @@ ENTRY(memcpy) bne 10f 1: subs r2, r2, #(28) - stmfd sp!, {r5 - r8} + push {r5 - r8} cfi_adjust_cfa_offset (16) cfi_rel_offset (r5, 0) cfi_rel_offset (r6, 4) @@ -131,7 +131,7 @@ ENTRY(memcpy) CALGN( bcs 2b ) -7: ldmfd sp!, {r5 - r8} +7: pop {r5 - r8} cfi_adjust_cfa_offset (-16) cfi_restore (r5) cfi_restore (r6) @@ -147,13 +147,13 @@ ENTRY(memcpy) strcsb ip, [r0] #if defined (__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__) - ldmfd sp!, {r0, r4, lr} + pop {r0, r4, lr} cfi_adjust_cfa_offset (-12) cfi_restore (r4) cfi_restore (lr) bx lr #else - ldmfd sp!, {r0, r4, pc} + pop {r0, r4, pc} #endif cfi_restore_state @@ -189,7 +189,7 @@ ENTRY(memcpy) CALGN( subcc r2, r2, ip ) CALGN( bcc 15f ) -11: stmfd sp!, {r5 - r9} +11: push {r5 - r9} cfi_adjust_cfa_offset (20) cfi_rel_offset (r5, 0) cfi_rel_offset (r6, 4) @@ -206,30 +206,30 @@ ENTRY(memcpy) 12: PLD( pld [r1, #124] ) 13: ldmia r1!, {r4, r5, r6, r7} - mov r3, lr, pull #\pull + mov r3, lr, PULL #\pull subs r2, r2, #32 ldmia r1!, {r8, r9, ip, lr} - orr r3, r3, r4, push #\push - mov r4, r4, pull #\pull - orr r4, r4, r5, push #\push - mov r5, r5, pull #\pull - orr r5, r5, r6, push #\push - mov r6, r6, pull #\pull - orr r6, r6, r7, push #\push - mov r7, r7, pull #\pull - orr r7, r7, r8, push #\push - mov r8, r8, pull #\pull - orr r8, r8, r9, push #\push - mov r9, r9, pull #\pull - orr r9, r9, ip, push #\push - mov ip, ip, pull #\pull - orr ip, ip, lr, push #\push + orr r3, r3, r4, PUSH #\push + mov r4, r4, PULL #\pull + orr r4, r4, r5, PUSH #\push + mov r5, r5, PULL #\pull + orr r5, r5, r6, PUSH #\push + mov r6, r6, PULL #\pull + orr r6, r6, r7, PUSH #\push + mov r7, r7, PULL #\pull + orr r7, r7, r8, PUSH #\push + mov r8, r8, PULL #\pull + orr r8, r8, r9, PUSH #\push + mov r9, r9, PULL #\pull + orr r9, r9, ip, PUSH #\push + mov ip, ip, PULL #\pull + orr ip, ip, lr, PUSH #\push stmia r0!, {r3, r4, r5, r6, r7, r8, r9, ip} bge 12b PLD( cmn r2, #96 ) PLD( bge 13b ) - ldmfd sp!, {r5 - r9} + pop {r5 - r9} cfi_adjust_cfa_offset (-20) cfi_restore (r5) cfi_restore (r6) @@ -240,10 +240,10 @@ ENTRY(memcpy) 14: ands ip, r2, #28 beq 16f -15: mov r3, lr, pull #\pull +15: mov r3, lr, PULL #\pull ldr lr, [r1], #4 subs ip, ip, #4 - orr r3, r3, lr, push #\push + orr r3, r3, lr, PUSH #\push str r3, [r0], #4 bgt 15b CALGN( cmp r2, #0 ) diff --git a/ports/sysdeps/arm/memmove.S b/ports/sysdeps/arm/memmove.S index 059ca7ac31..d9fa0e3b6b 100644 --- a/ports/sysdeps/arm/memmove.S +++ b/ports/sysdeps/arm/memmove.S @@ -45,11 +45,11 @@ * Endian independent macros for shifting bytes within registers. */ #ifndef __ARMEB__ -#define pull lsr -#define push lsl +#define PULL lsr +#define PUSH lsl #else -#define pull lsl -#define push lsr +#define PULL lsl +#define PUSH lsr #endif .text @@ -73,7 +73,7 @@ ENTRY(memmove) bls HIDDEN_JUMPTARGET(memcpy) #endif - stmfd sp!, {r0, r4, lr} + push {r0, r4, lr} cfi_adjust_cfa_offset (12) cfi_rel_offset (r4, 4) cfi_rel_offset (lr, 8) @@ -91,7 +91,7 @@ ENTRY(memmove) bne 10f 1: subs r2, r2, #(28) - stmfd sp!, {r5 - r8} + push {r5 - r8} cfi_adjust_cfa_offset (16) cfi_rel_offset (r5, 0) cfi_rel_offset (r6, 4) @@ -147,7 +147,7 @@ ENTRY(memmove) CALGN( bcs 2b ) -7: ldmfd sp!, {r5 - r8} +7: pop {r5 - r8} cfi_adjust_cfa_offset (-16) cfi_restore (r5) cfi_restore (r6) @@ -163,13 +163,13 @@ ENTRY(memmove) strcsb ip, [r0, #-1] #if defined (__ARM_ARCH_4T__) && defined (__THUMB_INTERWORK__) - ldmfd sp!, {r0, r4, lr} + pop {r0, r4, lr} cfi_adjust_cfa_offset (-12) cfi_restore (r4) cfi_restore (lr) bx lr #else - ldmfd sp!, {r0, r4, pc} + pop {r0, r4, pc} #endif cfi_restore_state @@ -204,7 +204,7 @@ ENTRY(memmove) CALGN( subcc r2, r2, ip ) CALGN( bcc 15f ) -11: stmfd sp!, {r5 - r9} +11: push {r5 - r9} cfi_adjust_cfa_offset (20) cfi_rel_offset (r5, 0) cfi_rel_offset (r6, 4) @@ -221,30 +221,30 @@ ENTRY(memmove) 12: PLD( pld [r1, #-128] ) 13: ldmdb r1!, {r7, r8, r9, ip} - mov lr, r3, push #\push + mov lr, r3, PUSH #\push subs r2, r2, #32 ldmdb r1!, {r3, r4, r5, r6} - orr lr, lr, ip, pull #\pull - mov ip, ip, push #\push - orr ip, ip, r9, pull #\pull - mov r9, r9, push #\push - orr r9, r9, r8, pull #\pull - mov r8, r8, push #\push - orr r8, r8, r7, pull #\pull - mov r7, r7, push #\push - orr r7, r7, r6, pull #\pull - mov r6, r6, push #\push - orr r6, r6, r5, pull #\pull - mov r5, r5, push #\push - orr r5, r5, r4, pull #\pull - mov r4, r4, push #\push - orr r4, r4, r3, pull #\pull + orr lr, lr, ip, PULL #\pull + mov ip, ip, PUSH #\push + orr ip, ip, r9, PULL #\pull + mov r9, r9, PUSH #\push + orr r9, r9, r8, PULL #\pull + mov r8, r8, PUSH #\push + orr r8, r8, r7, PULL #\pull + mov r7, r7, PUSH #\push + orr r7, r7, r6, PULL #\pull + mov r6, r6, PUSH #\push + orr r6, r6, r5, PULL #\pull + mov r5, r5, PUSH #\push + orr r5, r5, r4, PULL #\pull + mov r4, r4, PUSH #\push + orr r4, r4, r3, PULL #\pull stmdb r0!, {r4 - r9, ip, lr} bge 12b PLD( cmn r2, #96 ) PLD( bge 13b ) - ldmfd sp!, {r5 - r9} + pop {r5 - r9} cfi_adjust_cfa_offset (-20) cfi_restore (r5) cfi_restore (r6) @@ -255,10 +255,10 @@ ENTRY(memmove) 14: ands ip, r2, #28 beq 16f -15: mov lr, r3, push #\push +15: mov lr, r3, PUSH #\push ldr r3, [r1, #-4]! subs ip, ip, #4 - orr lr, lr, r3, pull #\pull + orr lr, lr, r3, PULL #\pull str lr, [r0, #-4]! bgt 15b CALGN( cmp r2, #0 ) 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 diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h index d855ceb3c3..d74a32811a 100644 --- a/ports/sysdeps/arm/sysdep.h +++ b/ports/sysdeps/arm/sysdep.h @@ -80,7 +80,7 @@ /* Call __gnu_mcount_nc if GCC >= 4.4. */ #if __GNUC_PREREQ(4,4) #define CALL_MCOUNT \ - str lr,[sp, #-4]!; \ + push {lr}; \ cfi_adjust_cfa_offset (4); \ cfi_rel_offset (lr, 0); \ bl PLTJMP(mcount); \ @@ -88,11 +88,11 @@ cfi_restore (lr) #else /* else call _mcount */ #define CALL_MCOUNT \ - str lr,[sp, #-4]!; \ + push {lr}; \ cfi_adjust_cfa_offset (4); \ cfi_rel_offset (lr, 0); \ bl PLTJMP(mcount); \ - ldr lr, [sp], #4; \ + pops {lr}; \ cfi_adjust_cfa_offset (-4); \ cfi_restore (lr) #endif |