arm: Use push/pop mnemonics
authorRichard Henderson <rth@twiddle.net>
Fri, 15 Feb 2013 05:00:14 +0000 (21:00 -0800)
committerRichard Henderson <rth@twiddle.net>
Wed, 6 Mar 2013 15:46:45 +0000 (07:46 -0800)
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.

20 files changed:
ports/ChangeLog.arm
ports/sysdeps/arm/arm-mcount.S
ports/sysdeps/arm/crti.S
ports/sysdeps/arm/crtn.S
ports/sysdeps/arm/dl-tlsdesc.S
ports/sysdeps/arm/dl-trampoline.S
ports/sysdeps/arm/memcpy.S
ports/sysdeps/arm/memmove.S
ports/sysdeps/arm/start.S
ports/sysdeps/arm/sysdep.h
ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
ports/sysdeps/unix/sysv/linux/arm/clone.S
ports/sysdeps/unix/sysv/linux/arm/mmap.S
ports/sysdeps/unix/sysv/linux/arm/mmap64.S
ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
ports/sysdeps/unix/sysv/linux/arm/syscall.S
ports/sysdeps/unix/sysv/linux/arm/sysdep.h
ports/sysdeps/unix/sysv/linux/arm/vfork.S

index 6458a75..8279a3e 100644 (file)
@@ -1,5 +1,26 @@
 2013-03-06  Richard Henderson <rth@redhat.com>
 
+       * sysdeps/arm/arm-mcount.S (_mcount): Use push/pop mnemonics.
+       * sysdeps/arm/crti.S, sysdeps/arm/crtn.S: Likewise.
+       * sysdeps/arm/dl-tlsdesc.S: Likewise.
+       * sysdeps/arm/dl-trampoline.S: Likewise.
+       * sysdeps/arm/start.S: Likewise.
+       * sysdeps/arm/memcpy.S (PULL): Rename macro from pull.
+       (PUSH): Rename macro from push.
+       (memcpy): Use push/pop mnemonics.
+       * sysdeps/arm/memmove.S: Similarly.
+       * sysdeps/arm/sysdep.h (CALL_MCOUNT): Use push/pop mnemonics.
+       * sysdeps/unix/sysv/linux/arm/____longjmp_chk.S: Likewise.
+       * sysdeps/unix/sysv/linux/arm/clone.S: Likewise.
+       * sysdeps/unix/sysv/linux/arm/mmap.S: Likewise.
+       * sysdeps/unix/sysv/linux/arm/mmap64.S: Likewise.
+       * sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h: Likewise.
+       * sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c: Likewise.
+       * sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c: Likewise.
+       * sysdeps/unix/sysv/linux/arm/syscall.S: Likewise.
+       * sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
+       * sysdeps/unix/sysv/linux/arm/vfork.S: Likewise.
+
        * sysdeps/arm/sysdep.h [__ASSEMBLER__]: Enable thumb2 if __thumb2__.
        (PC_OFS): Respect __thumb__ if __ASSEMBLER__.
 
index 679d042..b6e5ec7 100644 (file)
@@ -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)
index 1d55ae2..be20a11 100644 (file)
@@ -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}
index a01eb01..ae7546c 100644 (file)
 
        .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
index 1a15272..718d5fd 100644 (file)
@@ -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]
index 561d8ae..f2d1679 100644 (file)
@@ -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
index 98b9b47..98981ef 100644 (file)
  * 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                  )
index 059ca7a..d9fa0e3 100644 (file)
  * 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                  )
index a1d15b8..0a57b0b 100644 (file)
@@ -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
index d855ceb..d74a328 100644 (file)
@@ -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);                         \
        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
index 29edec6..6ee7a1a 100644 (file)
@@ -53,7 +53,7 @@ longjmp_msg:
        cfi_remember_state;                     \
        cmp     sp, reg;                        \
        bls     .Lok;                           \
-       str     r7, [sp, #-4]!;                 \
+       push    { r7 };                         \
        cfi_adjust_cfa_offset (4);              \
        cfi_rel_offset (r7, 0);                 \
        mov     r5, r0;                         \
@@ -79,7 +79,7 @@ longjmp_msg:
 .Lfail:                                                \
        add     sp, sp, #12;                    \
        cfi_adjust_cfa_offset (-12);            \
-       ldr     r7, [sp], #4;                   \
+       pop     { r7 };                         \
        cfi_adjust_cfa_offset (-4);             \
        cfi_restore (r7);                       \
        CALL_FAIL                               \
index 9009393..ce9c2a5 100644 (file)
@@ -49,7 +49,7 @@ ENTRY(__clone)
        mov     ip, r2
 #endif
        @ new sp is already in r1
-       stmfd   sp!, {r4, r7}
+       push    {r4, r7}
        cfi_adjust_cfa_offset (8)
        cfi_rel_offset (r4, 0)
        cfi_rel_offset (r7, 4)
@@ -61,7 +61,7 @@ ENTRY(__clone)
        cfi_endproc
        cmp     r0, #0
        beq     1f
-       ldmfd   sp!, {r4, r7}
+       pop     {r4, r7}
        blt     PLTJMP(C_SYMBOL_NAME(__syscall_error))
        RETINSTR(, lr)
 
index 68560b0..06b737e 100644 (file)
 
 ENTRY (__mmap)
        /* shuffle args */
-       str     r5, [sp, #-4]!
+       push    { r5 }
        cfi_adjust_cfa_offset (4)
        cfi_rel_offset (r5, 0)
        ldr     r5, [sp, #8]
-       str     r4, [sp, #-4]!
+       push    { r4 }
        cfi_adjust_cfa_offset (4)
        cfi_rel_offset (r4, 0)
        cfi_remember_state
@@ -43,10 +43,10 @@ ENTRY (__mmap)
 
        /* restore registers */
 2:
-       ldr     r4, [sp], #4
+       pop     { r4 }
        cfi_adjust_cfa_offset (-4)
        cfi_restore (r4)
-       ldr     r5, [sp], #4
+       pop     { r5 }
        cfi_adjust_cfa_offset (-4)
        cfi_restore (r5)
 
index dcbab3a..d039129 100644 (file)
        .text
 ENTRY (__mmap64)
        ldr     ip, [sp, $LOW_OFFSET]
-       str     r5, [sp, #-4]!
+       push    { r5 }
        cfi_adjust_cfa_offset (4)
        cfi_rel_offset (r5, 0)
        ldr     r5, [sp, $HIGH_OFFSET]
-       str     r4, [sp, #-4]!
+       push    { r4 }
        cfi_adjust_cfa_offset (4)
        cfi_rel_offset (r4, 0)
        cfi_remember_state
@@ -51,7 +51,7 @@ ENTRY (__mmap64)
        orr     r5, ip, r5, lsl $20     @ compose page offset
        DO_CALL (mmap2, 0)
        cmn     r0, $4096
-       ldmfd   sp!, {r4, r5}
+       pop     {r4, r5}
        cfi_adjust_cfa_offset (-8)
        cfi_restore (r4)
        cfi_restore (r5)
@@ -62,7 +62,7 @@ ENTRY (__mmap64)
        cfi_restore_state
 .Linval:
        mov     r0, $-EINVAL
-       ldmfd   sp!, {r4, r5}
+       pop     {r4, r5}
        cfi_adjust_cfa_offset (-8)
        cfi_restore (r4)
        cfi_restore (r5)
index 2fc0535..59b826d 100644 (file)
 
 # define DOCARGS_0                             \
        .save {r7};                             \
-       str     lr, [sp, #-4]!;                 \
+       push    {lr};                           \
        cfi_adjust_cfa_offset (4);              \
        cfi_rel_offset (lr, 0);                 \
        .save   {lr}
 # define UNDOCARGS_0
 # define RESTORE_LR_0                          \
-       ldr     lr, [sp], #4;                   \
+       pop     {lr};                           \
        cfi_adjust_cfa_offset (-4);             \
        cfi_restore (lr)
 
 # define DOCARGS_1                             \
        .save   {r7};                           \
-       stmfd   sp!, {r0, r1, lr};              \
+       push    {r0, r1, lr};                   \
        cfi_adjust_cfa_offset (12);             \
        cfi_rel_offset (lr, 8);                 \
        .save   {lr};                           \
 
 # define DOCARGS_2                             \
        .save   {r7};                           \
-       stmfd   sp!, {r0, r1, lr};              \
+       push    {r0, r1, lr};                   \
        cfi_adjust_cfa_offset (12);             \
        cfi_rel_offset (lr, 8);                 \
        .save   {lr};                           \
        .pad    #8
 # define UNDOCARGS_2                           \
-       ldmfd   sp!, {r0, r1};                  \
+       pop     {r0, r1};                       \
        cfi_adjust_cfa_offset (-8);             \
        RESTART_UNWIND
 # define RESTORE_LR_2                          \
 
 # define DOCARGS_3                             \
        .save   {r7};                           \
-       stmfd   sp!, {r0, r1, r2, r3, lr};      \
+       push    {r0, r1, r2, r3, lr};           \
        cfi_adjust_cfa_offset (20);             \
        cfi_rel_offset (lr, 16);                \
        .save   {lr};                           \
        .pad    #16
 # define UNDOCARGS_3                           \
-       ldmfd   sp!, {r0, r1, r2, r3};          \
+       pop     {r0, r1, r2, r3};               \
        cfi_adjust_cfa_offset (-16);            \
        RESTART_UNWIND
 # define RESTORE_LR_3                          \
 
 # define DOCARGS_4                             \
        .save   {r7};                           \
-       stmfd   sp!, {r0, r1, r2, r3, lr};      \
+       push    {r0, r1, r2, r3, lr};           \
        cfi_adjust_cfa_offset (20);             \
        cfi_rel_offset (lr, 16);                \
        .save   {lr};                           \
        .pad    #16
 # define UNDOCARGS_4                           \
-       ldmfd   sp!, {r0, r1, r2, r3};          \
+       pop     {r0, r1, r2, r3};               \
        cfi_adjust_cfa_offset (-16);            \
        RESTART_UNWIND
 # define RESTORE_LR_4                          \
 /* r4 is only stmfd'ed for correct stack alignment.  */
 # define DOCARGS_5                             \
        .save   {r4, r7};                       \
-       stmfd   sp!, {r0, r1, r2, r3, r4, lr};  \
+       push    {r0, r1, r2, r3, r4, lr};       \
        cfi_adjust_cfa_offset (24);             \
        cfi_rel_offset (lr, 20);                \
        .save   {lr};                           \
        .pad    #20
 # define UNDOCARGS_5                           \
-       ldmfd   sp!, {r0, r1, r2, r3};          \
+       pop     {r0, r1, r2, r3};               \
        cfi_adjust_cfa_offset (-16);            \
        .fnend;                                 \
        .fnstart;                               \
        .save   {lr};                           \
        .pad    #4
 # define RESTORE_LR_5                          \
-       ldmfd sp!, {r4, lr};                    \
+       pop     {r4, lr};                       \
        cfi_adjust_cfa_offset (-8);             \
        /* r4 will be marked as restored later.  */ \
        cfi_restore (lr)
 
 # define DOCARGS_6                             \
        .save   {r4, r5, r7};                   \
-       stmfd   sp!, {r0, r1, r2, r3, lr};      \
+       push    {r0, r1, r2, r3, lr};           \
        cfi_adjust_cfa_offset (20);             \
        cfi_rel_offset (lr, 16);                \
        .save   {lr};                           \
        .pad    #16
 # define UNDOCARGS_6                           \
-       ldmfd   sp!, {r0, r1, r2, r3};          \
+       pop     {r0, r1, r2, r3};               \
        cfi_adjust_cfa_offset (-16);            \
        .fnend;                                 \
        .fnstart;                               \
@@ -213,13 +213,13 @@ extern int __local_multiple_threads attribute_hidden;
                                   header.multiple_threads) == 0, 1)
 #  else
 #   define SINGLE_THREAD_P                                             \
-       stmfd   sp!, {r0, lr};                                          \
+       push    {r0, lr};                                               \
        cfi_adjust_cfa_offset (8);                                      \
        cfi_rel_offset (lr, 4);                                         \
        GET_TLS (lr);                                                   \
        NEGOFF_ADJ_BASE (r0, MULTIPLE_THREADS_OFFSET);                  \
        ldr     ip, NEGOFF_OFF1 (r0, MULTIPLE_THREADS_OFFSET);          \
-       ldmfd   sp!, {r0, lr};                                          \
+       pop     {r0, lr};                                               \
        cfi_adjust_cfa_offset (-8);                                     \
        cfi_restore (lr);                                               \
        teq     ip, #0
index caa6a26..108924d 100644 (file)
@@ -93,7 +93,7 @@ asm (
 "_Unwind_Resume:\n"
 "      .cfi_sections .debug_frame\n"
 "      " CFI_STARTPROC "\n"
-"      stmfd   sp!, {r4, r5, r6, lr}\n"
+"      push    {r4, r5, r6, lr}\n"
 "      " CFI_ADJUST_CFA_OFFSET (16)" \n"
 "      " CFI_REL_OFFSET (r4, 0) "\n"
 "      " CFI_REL_OFFSET (r5, 4) "\n"
@@ -108,7 +108,7 @@ asm (
 "      cmp     r3, #0\n"
 "      beq     4f\n"
 "5:    mov     r0, r6\n"
-"      ldmfd   sp!, {r4, r5, r6, lr}\n"
+"      pop     {r4, r5, r6, lr}\n"
 "      " CFI_ADJUST_CFA_OFFSET (-16) "\n"
 "      " CFI_RESTORE (r4) "\n"
 "      " CFI_RESTORE (r5) "\n"
index 1211599..d155ea7 100644 (file)
@@ -56,7 +56,7 @@ asm (
 "_Unwind_Resume:\n"
 "      .cfi_sections .debug_frame\n"
 "      " CFI_STARTPROC "\n"
-"      stmfd   sp!, {r4, r5, r6, lr}\n"
+"      push    {r4, r5, r6, lr}\n"
 "      " CFI_ADJUST_CFA_OFFSET (16)" \n"
 "      " CFI_REL_OFFSET (r4, 0) "\n"
 "      " CFI_REL_OFFSET (r5, 4) "\n"
@@ -71,7 +71,7 @@ asm (
 "      cmp     r3, #0\n"
 "      beq     4f\n"
 "5:    mov     r0, r6\n"
-"      ldmfd   sp!, {r4, r5, r6, lr}\n"
+"      pop     {r4, r5, r6, lr}\n"
 "      " CFI_ADJUST_CFA_OFFSET (-16) "\n"
 "      " CFI_RESTORE (r4) "\n"
 "      " CFI_RESTORE (r5) "\n"
index 665ecb4..bdd5a52 100644 (file)
@@ -23,7 +23,7 @@
 
 ENTRY (syscall)
        mov     ip, sp
-       stmfd   sp!, {r4, r5, r6, r7}
+       push    {r4, r5, r6, r7}
        cfi_adjust_cfa_offset (16)
        cfi_rel_offset (r4, 0)
        cfi_rel_offset (r5, 4)
@@ -35,7 +35,7 @@ ENTRY (syscall)
        mov     r2, r3
        ldmfd   ip, {r3, r4, r5, r6}
        swi     0x0
-       ldmfd   sp!, {r4, r5, r6, r7}
+       pop     {r4, r5, r6, r7}
        cfi_adjust_cfa_offset (-16)
        cfi_restore (r4)
        cfi_restore (r5)
index dc2058b..f2ab5f5 100644 (file)
@@ -147,23 +147,22 @@ __local_syscall_error:                                            \
 # else
 #  if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
 #   define POP_PC \
-  ldr lr, [sp], #4; \
+  pop { lr }; \
   cfi_adjust_cfa_offset (-4); \
   cfi_restore (lr); \
   bx lr
 #  else
-#   define POP_PC  \
-  ldr pc, [sp], #4
+#   define POP_PC  pop { pc }
 #  endif
 #  define SYSCALL_ERROR_HANDLER                                        \
 __local_syscall_error:                                         \
-       str     lr, [sp, #-4]!;                                 \
+       push    { lr };                                         \
        cfi_adjust_cfa_offset (4);                              \
        cfi_rel_offset (lr, 0);                                 \
-       str     r0, [sp, #-4]!;                                 \
+       push    { r0 };                                         \
        cfi_adjust_cfa_offset (4);                              \
        bl      PLTJMP(C_SYMBOL_NAME(__errno_location));        \
-       ldr     r1, [sp], #4;                                   \
+       pop     { r1 };                                         \
        cfi_adjust_cfa_offset (-4);                             \
        rsb     r1, r1, #0;                                     \
        str     r1, [r0];                                       \
@@ -230,7 +229,7 @@ __local_syscall_error:                                              \
 #undef  DOARGS_0
 #define DOARGS_0                                       \
        .fnstart;                                       \
-       str r7, [sp, #-4]!;                             \
+       push    { r7 };                                 \
        cfi_adjust_cfa_offset (4);                      \
        cfi_rel_offset (r7, 0);                         \
        .save   { r7 }
@@ -245,7 +244,7 @@ __local_syscall_error:                                              \
 #undef  DOARGS_5
 #define DOARGS_5                                       \
        .fnstart;                                       \
-       stmfd   sp!, {r4, r7};                          \
+       push    {r4, r7};                               \
        cfi_adjust_cfa_offset (8);                      \
        cfi_rel_offset (r4, 0);                         \
        cfi_rel_offset (r7, 4);                         \
@@ -255,7 +254,7 @@ __local_syscall_error:                                              \
 #define DOARGS_6                                       \
        .fnstart;                                       \
        mov     ip, sp;                                 \
-       stmfd   sp!, {r4, r5, r7};                      \
+       push    {r4, r5, r7};                           \
        cfi_adjust_cfa_offset (12);                     \
        cfi_rel_offset (r4, 0);                         \
        cfi_rel_offset (r5, 4);                         \
@@ -266,7 +265,7 @@ __local_syscall_error:                                              \
 #define DOARGS_7                                       \
        .fnstart;                                       \
        mov     ip, sp;                                 \
-       stmfd   sp!, {r4, r5, r6, r7};                  \
+       push    {r4, r5, r6, r7};                       \
        cfi_adjust_cfa_offset (16);                     \
        cfi_rel_offset (r4, 0);                         \
        cfi_rel_offset (r5, 4);                         \
@@ -277,7 +276,7 @@ __local_syscall_error:                                              \
 
 #undef  UNDOARGS_0
 #define UNDOARGS_0                                     \
-       ldr     r7, [sp], #4;                           \
+       pop     {r7};                                   \
        cfi_adjust_cfa_offset (-4);                     \
        cfi_restore (r7);                               \
        .fnend
@@ -291,14 +290,14 @@ __local_syscall_error:                                            \
 #define UNDOARGS_4 UNDOARGS_0
 #undef  UNDOARGS_5
 #define UNDOARGS_5                                     \
-       ldmfd   sp!, {r4, r7};                          \
+       pop     {r4, r7};                               \
        cfi_adjust_cfa_offset (-8);                     \
        cfi_restore (r4);                               \
        cfi_restore (r7);                               \
        .fnend
 #undef  UNDOARGS_6
 #define UNDOARGS_6                                     \
-       ldmfd   sp!, {r4, r5, r7};                      \
+       pop     {r4, r5, r7};                           \
        cfi_adjust_cfa_offset (-12);                    \
        cfi_restore (r4);                               \
        cfi_restore (r5);                               \
@@ -306,7 +305,7 @@ __local_syscall_error:                                              \
        .fnend
 #undef  UNDOARGS_7
 #define UNDOARGS_7                                     \
-       ldmfd   sp!, {r4, r5, r6, r7};                  \
+       pop     {r4, r5, r6, r7};                       \
        cfi_adjust_cfa_offset (-16);                    \
        cfi_restore (r4);                               \
        cfi_restore (r5);                               \
index ae931f7..128a640 100644 (file)
@@ -37,7 +37,7 @@ ENTRY (__vfork)
        mov     ip, r7
        cfi_register (r7, ip)
        .fnstart
-       str r7, [sp, #-4]!
+       push    { r7 }
        cfi_adjust_cfa_offset (4)
        .save { r7 }
        ldr     r7, =SYS_ify (vfork)