diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-12-13 16:14:30 -0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2017-12-20 16:55:26 -0200 |
commit | 8d2d239cb7db9df7b486d5f153c90865443e7abb (patch) | |
tree | 465984a5c7699deb3ef3503aef1c6c06eff3df06 /sysdeps/tile | |
parent | 24d1d8ec9e529ed66c49e17366fe5a889d483670 (diff) | |
download | glibc-8d2d239cb7db9df7b486d5f153c90865443e7abb.tar.gz |
Simplify tile assembly definitions
With tilepro removal, the uppercase instruction are not anymore
required to be defines as potentially macros. This is a
mechanical change done by the following shell script:
---
INSNS="LD LD4U ST ST4 BNEZ BEQZ BEQZT BGTZ CMPEQI CMPEQ CMOVEQZ CMOVNEZ"
FILES=$(find sysdeps/tile sysdeps/unix/sysv/linux/tile -iname *.S)
for insn in $INSNS; do
repl=$(echo $insn | tr '[:upper:]' '[:lower:]')
sed -i 's/\b'$insn'\b/'$repl'/g' $FILES
done
---
Checked with a build for tilegx-linux-gnu and tilegx-linux-gnu-32 with
and without the patch, there is no difference in generated binary with
a dissassemble.
* sysdeps/tile/__longjmp.S (__longjmp): Use lowercase instructions.
* sysdeps/tile/__tls_get_addr.S (__tls_get_addr): Likewise.
* sysdeps/tile/_mcount.S (__mcount): Likewise.
* sysdeps/tile/crti.S (_init, _fini): Likewise.
* sysdeps/tile/crtn.S: Likewise.
* sysdeps/tile/dl-start.S (_start): Likewise.
* sysdeps/tile/dl-trampoline.S: Likewise.
* sysdeps/tile/setjmp.S (__sigsetjmp): Likewise.
* sysdeps/tile/start.S (_start): Likewise.
* sysdeps/unix/sysv/linux/tile/clone.S (_clone): Likewise.
* sysdeps/unix/sysv/linux/tile/getcontext.S (__getcontext): Likewise.
* sysdeps/unix/sysv/linux/tile/ioctl.S (__ioctl): Likewise.
* sysdeps/unix/sysv/linux/tile/setcontext.S (__setcontext): Likewise.
* sysdeps/unix/sysv/linux/tile/swapcontext.S (__swapcontext): Likewise.
* sysdeps/unix/sysv/linux/tile/syscall.S (syscall): Likewise.
* sysdeps/unix/sysv/linux/tile/vfork.S (__vfork): Likewise.
Diffstat (limited to 'sysdeps/tile')
-rw-r--r-- | sysdeps/tile/__longjmp.S | 6 | ||||
-rw-r--r-- | sysdeps/tile/__tls_get_addr.S | 114 | ||||
-rw-r--r-- | sysdeps/tile/_mcount.S | 50 | ||||
-rw-r--r-- | sysdeps/tile/crti.S | 10 | ||||
-rw-r--r-- | sysdeps/tile/crtn.S | 4 | ||||
-rw-r--r-- | sysdeps/tile/dl-start.S | 6 | ||||
-rw-r--r-- | sysdeps/tile/dl-trampoline.S | 28 | ||||
-rw-r--r-- | sysdeps/tile/setjmp.S | 4 | ||||
-rw-r--r-- | sysdeps/tile/start.S | 4 |
9 files changed, 113 insertions, 113 deletions
diff --git a/sysdeps/tile/__longjmp.S b/sysdeps/tile/__longjmp.S index c9902b1b31..7247af8af5 100644 --- a/sysdeps/tile/__longjmp.S +++ b/sysdeps/tile/__longjmp.S @@ -28,7 +28,7 @@ ENTRY (__longjmp) FEEDBACK_ENTER(__longjmp) -#define RESTORE(r) { LD r, r0 ; ADDI_PTR r0, r0, REGSIZE } +#define RESTORE(r) { ld r, r0 ; ADDI_PTR r0, r0, REGSIZE } FOR_EACH_CALLEE_SAVED_REG(RESTORE) /* Make longjmp(buf, 0) return "1" instead. @@ -36,9 +36,9 @@ ENTRY (__longjmp) we can validly load EX_CONTEXT for iret without being interrupted halfway through. */ { - LD r2, r0 /* retrieve ICS bit from jmp_buf */ + ld r2, r0 /* retrieve ICS bit from jmp_buf */ movei r3, 1 - CMPEQI r0, r1, 0 + cmpeqi r0, r1, 0 } { mtspr INTERRUPT_CRITICAL_SECTION, r3 diff --git a/sysdeps/tile/__tls_get_addr.S b/sysdeps/tile/__tls_get_addr.S index 2402bd1e9a..ea9470ad18 100644 --- a/sysdeps/tile/__tls_get_addr.S +++ b/sysdeps/tile/__tls_get_addr.S @@ -53,20 +53,20 @@ ENTRY (__tls_get_addr) } { LD_PTR r29, r29 /* r29 = ti_offset */ - CMPEQ r25, r28, r25 /* r25 nonzero if generation OK */ + cmpeq r25, r28, r25 /* r25 nonzero if generation OK */ shli r28, r26, LOG_SIZEOF_DTV_T /* byte index into dtv array */ } { - BEQZ r25, .Lslowpath - CMPEQI r25, r26, -1 /* r25 nonzero if ti_module invalid */ + beqz r25, .Lslowpath + cmpeqi r25, r26, -1 /* r25 nonzero if ti_module invalid */ } { - BNEZ r25, .Lslowpath + bnez r25, .Lslowpath ADD_PTR r28, r28, r27 /* pointer into module array */ } LD_PTR r26, r28 /* r26 = module TLS pointer */ - CMPEQI r25, r26, -1 /* check r26 == TLS_DTV_UNALLOCATED */ - BNEZ r25, .Lslowpath + cmpeqi r25, r26, -1 /* check r26 == TLS_DTV_UNALLOCATED */ + bnez r25, .Lslowpath { ADD_PTR r0, r26, r29 jrp lr @@ -74,68 +74,68 @@ ENTRY (__tls_get_addr) .Lslowpath: { - ST sp, lr + st sp, lr ADDLI_PTR r29, sp, - (25 * REGSIZE) } cfi_offset (lr, 0) { - ST r29, sp + st r29, sp ADDLI_PTR sp, sp, - (26 * REGSIZE) } cfi_def_cfa_offset (26 * REGSIZE) ADDI_PTR r29, sp, (2 * REGSIZE) - { ST r29, r1; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r2; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r3; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r4; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r5; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r6; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r7; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r8; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r9; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r10; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r11; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r12; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r13; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r14; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r15; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r16; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r17; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r18; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r19; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r20; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r21; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r22; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r23; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r24; ADDI_PTR r29, r29, REGSIZE } + { st r29, r1; ADDI_PTR r29, r29, REGSIZE } + { st r29, r2; ADDI_PTR r29, r29, REGSIZE } + { st r29, r3; ADDI_PTR r29, r29, REGSIZE } + { st r29, r4; ADDI_PTR r29, r29, REGSIZE } + { st r29, r5; ADDI_PTR r29, r29, REGSIZE } + { st r29, r6; ADDI_PTR r29, r29, REGSIZE } + { st r29, r7; ADDI_PTR r29, r29, REGSIZE } + { st r29, r8; ADDI_PTR r29, r29, REGSIZE } + { st r29, r9; ADDI_PTR r29, r29, REGSIZE } + { st r29, r10; ADDI_PTR r29, r29, REGSIZE } + { st r29, r11; ADDI_PTR r29, r29, REGSIZE } + { st r29, r12; ADDI_PTR r29, r29, REGSIZE } + { st r29, r13; ADDI_PTR r29, r29, REGSIZE } + { st r29, r14; ADDI_PTR r29, r29, REGSIZE } + { st r29, r15; ADDI_PTR r29, r29, REGSIZE } + { st r29, r16; ADDI_PTR r29, r29, REGSIZE } + { st r29, r17; ADDI_PTR r29, r29, REGSIZE } + { st r29, r18; ADDI_PTR r29, r29, REGSIZE } + { st r29, r19; ADDI_PTR r29, r29, REGSIZE } + { st r29, r20; ADDI_PTR r29, r29, REGSIZE } + { st r29, r21; ADDI_PTR r29, r29, REGSIZE } + { st r29, r22; ADDI_PTR r29, r29, REGSIZE } + { st r29, r23; ADDI_PTR r29, r29, REGSIZE } + { st r29, r24; ADDI_PTR r29, r29, REGSIZE } .hidden __tls_get_addr_slow jal __tls_get_addr_slow ADDI_PTR r29, sp, (2 * REGSIZE) - { LD r1, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r2, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r3, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r4, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r5, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r6, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r7, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r8, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r9, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r10, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r11, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r12, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r13, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r14, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r15, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r16, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r17, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r18, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r19, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r20, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r21, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r22, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r23, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r24, r29; ADDLI_PTR sp, sp, (26 * REGSIZE) } + { ld r1, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r2, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r3, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r4, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r5, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r6, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r7, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r8, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r9, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r10, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r11, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r12, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r13, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r14, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r15, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r16, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r17, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r18, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r19, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r20, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r21, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r22, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r23, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r24, r29; ADDLI_PTR sp, sp, (26 * REGSIZE) } cfi_def_cfa_offset (0) - LD lr, sp + ld lr, sp jrp lr END (__tls_get_addr) diff --git a/sysdeps/tile/_mcount.S b/sysdeps/tile/_mcount.S index c350084630..d6ecb9304a 100644 --- a/sysdeps/tile/_mcount.S +++ b/sysdeps/tile/_mcount.S @@ -33,27 +33,27 @@ .text ENTRY(__mcount) { - ST sp, lr + st sp, lr ADDI_PTR r29, sp, - (12 * REGSIZE) } cfi_offset (lr, 0) { ADDI_PTR sp, sp, - (13 * REGSIZE) - ST r29, sp + st r29, sp ADDI_PTR r29, r29, REGSIZE } cfi_def_cfa_offset (13 * REGSIZE) - { ST r29, r0; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r1; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r2; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r3; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r4; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r5; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r6; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r7; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r8; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r9; ADDI_PTR r29, r29, REGSIZE } - { ST r29, r10; ADDI_PTR r29, r29, REGSIZE; move r0, r10 } + { st r29, r0; ADDI_PTR r29, r29, REGSIZE } + { st r29, r1; ADDI_PTR r29, r29, REGSIZE } + { st r29, r2; ADDI_PTR r29, r29, REGSIZE } + { st r29, r3; ADDI_PTR r29, r29, REGSIZE } + { st r29, r4; ADDI_PTR r29, r29, REGSIZE } + { st r29, r5; ADDI_PTR r29, r29, REGSIZE } + { st r29, r6; ADDI_PTR r29, r29, REGSIZE } + { st r29, r7; ADDI_PTR r29, r29, REGSIZE } + { st r29, r8; ADDI_PTR r29, r29, REGSIZE } + { st r29, r9; ADDI_PTR r29, r29, REGSIZE } + { st r29, r10; ADDI_PTR r29, r29, REGSIZE; move r0, r10 } { move r1, lr jal __mcount_internal @@ -61,20 +61,20 @@ ENTRY(__mcount) { ADDI_PTR r29, sp, (2 * REGSIZE) } - { LD r0, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r1, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r2, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r3, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r4, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r5, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r6, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r7, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r8, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r9, r29; ADDI_PTR r29, r29, REGSIZE } - { LD r10, r29; ADDI_PTR sp, sp, (13 * REGSIZE) } + { ld r0, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r1, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r2, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r3, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r4, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r5, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r6, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r7, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r8, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r9, r29; ADDI_PTR r29, r29, REGSIZE } + { ld r10, r29; ADDI_PTR sp, sp, (13 * REGSIZE) } cfi_def_cfa_offset (0) { - LD lr, sp + ld lr, sp } { move lr, r10 diff --git a/sysdeps/tile/crti.S b/sysdeps/tile/crti.S index 1d714ab483..08b9779b77 100644 --- a/sysdeps/tile/crti.S +++ b/sysdeps/tile/crti.S @@ -63,10 +63,10 @@ _init: { move r29, sp ADDI_PTR r28, sp, -REGSIZE - ST sp, lr + st sp, lr } ADDI_PTR sp, sp, -(2 * REGSIZE) - ST r28, r29 + st r28, r29 #if PREINIT_FUNCTION_WEAK lnk r2 0: @@ -82,7 +82,7 @@ _init: ADD_PTR r0, r0, r1 ADD_PTR r0, r0, r2 LD_PTR r0, r0 - BEQZ r0, .Lno_weak_fn + beqz r0, .Lno_weak_fn jalr r0 #elif !defined(NO_PLT_PCREL) /* Since we are calling from the start of the object to the PLT, @@ -107,7 +107,7 @@ _fini: { move r29, sp ADDI_PTR r28, sp, -REGSIZE - ST sp, lr + st sp, lr } ADDI_PTR sp, sp, -(2 * REGSIZE) - ST r28, r29 + st r28, r29 diff --git a/sysdeps/tile/crtn.S b/sysdeps/tile/crtn.S index 53c6e40d06..d45bfad8c1 100644 --- a/sysdeps/tile/crtn.S +++ b/sysdeps/tile/crtn.S @@ -42,7 +42,7 @@ ADDI_PTR r29, sp, (2 * REGSIZE) { ADDI_PTR sp, sp, (2 * REGSIZE) - LD lr, r29 + ld lr, r29 } jrp lr @@ -50,6 +50,6 @@ ADDI_PTR r29, sp, (2 * REGSIZE) { ADDI_PTR sp, sp, (2 * REGSIZE) - LD lr, r29 + ld lr, r29 } jrp lr diff --git a/sysdeps/tile/dl-start.S b/sysdeps/tile/dl-start.S index 1782c9cd00..94deab33a0 100644 --- a/sysdeps/tile/dl-start.S +++ b/sysdeps/tile/dl-start.S @@ -43,7 +43,7 @@ ENTRY (_start) /* Save zero for caller sp in our 'caller' save area, and make sure lr has a zero value, to limit backtraces. */ move lr, zero - ST r4, zero + st r4, zero } { move r0, r52 @@ -56,8 +56,8 @@ ENTRY (_start) in which case we have to adjust the argument vector. */ lnk r51; .Llink: pic_addr r4, _dl_skip_args - LD4U r4, r4 - BEQZT r4, .Lno_skip + ld4u r4, r4 + beqzt r4, .Lno_skip /* Load the argc word at the initial sp and adjust it. We basically jump "sp" up over the first few argv entries diff --git a/sysdeps/tile/dl-trampoline.S b/sysdeps/tile/dl-trampoline.S index fd7d63d76b..0d19512d5f 100644 --- a/sysdeps/tile/dl-trampoline.S +++ b/sysdeps/tile/dl-trampoline.S @@ -73,8 +73,8 @@ f(r20); f(r21); f(r22); f(r23); \ f(r24); f(r25) -#define SAVE(REG) { ST r27, REG; ADDI_PTR r27, r27, REGSIZE } -#define RESTORE(REG) { LD REG, r27; ADDI_PTR r27, r27, REGSIZE } +#define SAVE(REG) { st r27, REG; ADDI_PTR r27, r27, REGSIZE } +#define RESTORE(REG) { ld REG, r27; ADDI_PTR r27, r27, REGSIZE } .macro dl_resolve, name, profile, framesize .text @@ -86,7 +86,7 @@ \name: cfi_startproc { - ST sp, lr + st sp, lr move r26, sp } { @@ -95,24 +95,24 @@ } cfi_def_cfa_offset (\framesize) { - ST r27, r26 + st r27, r26 ADDI_PTR r27, r27, FRAME_REGS - FRAME_SP } FOR_EACH_REG(SAVE) { - ST r27, lr + st r27, lr ADDLI_PTR r27, sp, FRAME_TPNT } cfi_offset (lr, FRAME_LR - \framesize) .if \profile { move r0, r28 /* tpnt value */ - ST r27, r28 + st r27, r28 ADDI_PTR r27, r27, FRAME_INDEX - FRAME_TPNT } { move r1, r29 /* PLT index */ - ST r27, r29 + st r27, r29 } { move r2, lr /* retaddr */ @@ -124,7 +124,7 @@ } ADDLI_PTR r28, sp, FRAME_STACKFRAME LD_PTR r28, r28 - BGTZ r28, 1f + bgtz r28, 1f .else { move r0, r28 /* tpnt value 1 */ @@ -141,12 +141,12 @@ FOR_EACH_REG(RESTORE) .if \profile ADDLI_PTR r28, sp, FRAME_STACKFRAME - LD r28, r28 - BGTZ r28, 1f + ld r28, r28 + bgtz r28, 1f .endif { /* Restore original user return address. */ - LD lr, r27 + ld lr, r27 /* Pop off our stack frame. */ ADDLI_PTR sp, sp, \framesize } @@ -162,11 +162,11 @@ } FOR_EACH_REG(SAVE) { - LD r0, r28 + ld r0, r28 ADDI_PTR r28, r28, FRAME_INDEX - FRAME_TPNT } { - LD r1, r28 + ld r1, r28 ADDLI_PTR r2, sp, FRAME_REGS } { @@ -179,7 +179,7 @@ } FOR_EACH_REG(RESTORE) { - LD lr, lr + ld lr, lr ADDLI_PTR sp, sp, \framesize } jrp lr diff --git a/sysdeps/tile/setjmp.S b/sysdeps/tile/setjmp.S index 0321c10b43..534d57b747 100644 --- a/sysdeps/tile/setjmp.S +++ b/sysdeps/tile/setjmp.S @@ -36,11 +36,11 @@ ENTRY(__sigsetjmp) 1: move r2, r0 -#define SAVE(r) { ST r2, r ; ADDI_PTR r2, r2, REGSIZE } +#define SAVE(r) { st r2, r ; ADDI_PTR r2, r2, REGSIZE } FOR_EACH_CALLEE_SAVED_REG(SAVE) mfspr r3, INTERRUPT_CRITICAL_SECTION - ST r2, r3 + st r2, r3 j plt(__sigjmp_save) jrp lr /* Keep the backtracer happy. */ END(__sigsetjmp) diff --git a/sysdeps/tile/start.S b/sysdeps/tile/start.S index da3ba9c013..7cdabed49e 100644 --- a/sysdeps/tile/start.S +++ b/sysdeps/tile/start.S @@ -109,11 +109,11 @@ _start: /* Zero out callee space for return address. Unnecessary but free. This is just paranoia to help backtracing not go awry. */ - ST sp, zero + st sp, zero } { /* Zero out our frame pointer for __libc_start_main. */ - ST r12, zero + st r12, zero /* Zero out lr to make __libc_start_main the end of backtrace. */ move lr, zero |