diff options
author | Roland McGrath <roland@hack.frob.com> | 2013-03-15 09:31:56 -0700 |
---|---|---|
committer | Roland McGrath <roland@hack.frob.com> | 2013-03-15 09:31:56 -0700 |
commit | a7ac752299cb61f3140ab76c6f0a4ed46f52df55 (patch) | |
tree | 52798d8cb03569a69f00b7950dfdbf226415ca09 /ports/sysdeps/arm/add_n.S | |
parent | ef26eece6331a1f6d959818e37c438cc7ce68e53 (diff) | |
download | glibc-a7ac752299cb61f3140ab76c6f0a4ed46f52df55.tar.gz glibc-a7ac752299cb61f3140ab76c6f0a4ed46f52df55.tar.xz glibc-a7ac752299cb61f3140ab76c6f0a4ed46f52df55.zip |
ARM: sfi_breg assembler macro
Diffstat (limited to 'ports/sysdeps/arm/add_n.S')
-rw-r--r-- | ports/sysdeps/arm/add_n.S | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/ports/sysdeps/arm/add_n.S b/ports/sysdeps/arm/add_n.S index 52927d997d..c6b0147972 100644 --- a/ports/sysdeps/arm/add_n.S +++ b/ports/sysdeps/arm/add_n.S @@ -52,31 +52,40 @@ ENTRY (FUNC) add lr, r1, r3, lsl #2 /* compute end src1 */ beq 1f - ldr r4, [r1], #4 /* do one to make count even */ - ldr r5, [r2], #4 + sfi_breg r1, \ + ldr r4, [\B], #4 /* do one to make count even */ + sfi_breg r2, \ + ldr r5, [\B], #4 OPC r4, r4, r5 teq r1, lr /* end of count? (preserve carry) */ - str r4, [r0], #4 + sfi_breg r0, \ + str r4, [\B], #4 beq 9f 1: tst r3, #2 /* count & 2 == 2? */ beq 2f - ldm r1!, { r4, r5 } /* do two to make count 0 mod 4 */ - ldm r2!, { r6, r7 } + sfi_breg r1, \ + ldm \B!, { r4, r5 } /* do two to make count 0 mod 4 */ + sfi_breg r2, \ + ldm \B!, { r6, r7 } OPC r4, r4, r6 OPC r5, r5, r7 teq r1, lr /* end of count? */ - stm r0!, { r4, r5 } + sfi_breg r0, \ + stm \B!, { r4, r5 } beq 9f 2: - ldm r1!, { r3, r5, r7, r10 } /* do four each loop */ - ldm r2!, { r4, r6, r8, ip } + sfi_breg r1, \ + ldm \B!, { r3, r5, r7, r10 } /* do four each loop */ + sfi_breg r2, \ + ldm \B!, { r4, r6, r8, ip } OPC r3, r3, r4 OPC r5, r5, r6 OPC r7, r7, r8 OPC r10, r10, ip teq r1, lr - stm r0!, { r3, r5, r7, r10 } + sfi_breg r0, \ + stm \B!, { r3, r5, r7, r10 } bne 2b 9: |