aboutsummaryrefslogtreecommitdiff
path: root/ports/sysdeps/arm/memset.S
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2013-03-15 09:31:56 -0700
committerRoland McGrath <roland@hack.frob.com>2013-03-15 09:31:56 -0700
commita7ac752299cb61f3140ab76c6f0a4ed46f52df55 (patch)
tree52798d8cb03569a69f00b7950dfdbf226415ca09 /ports/sysdeps/arm/memset.S
parentef26eece6331a1f6d959818e37c438cc7ce68e53 (diff)
downloadglibc-a7ac752299cb61f3140ab76c6f0a4ed46f52df55.zip
glibc-a7ac752299cb61f3140ab76c6f0a4ed46f52df55.tar.gz
glibc-a7ac752299cb61f3140ab76c6f0a4ed46f52df55.tar.bz2
ARM: sfi_breg assembler macro
Diffstat (limited to 'ports/sysdeps/arm/memset.S')
-rw-r--r--ports/sysdeps/arm/memset.S27
1 files changed, 18 insertions, 9 deletions
diff --git a/ports/sysdeps/arm/memset.S b/ports/sysdeps/arm/memset.S
index 5e055ad..a28cdc6 100644
--- a/ports/sysdeps/arm/memset.S
+++ b/ports/sysdeps/arm/memset.S
@@ -32,7 +32,8 @@ ENTRY(memset)
1:
tst r3, #3 @ aligned yet?
- strbne r1, [r3], #1
+ sfi_breg r3, \
+ strbne r1, [\B], #1
subne r2, r2, #1
bne 1b
@@ -43,25 +44,33 @@ ENTRY(memset)
1:
subs r2, r2, #8
- stmiacs r3!, {r1, ip} @ store up to 32 bytes per loop iteration
+ sfi_breg r3, \
+ stmiacs \B!, {r1, ip} @ store up to 32 bytes per loop iteration
subscs r2, r2, #8
- stmiacs r3!, {r1, ip}
+ sfi_breg r3, \
+ stmiacs \B!, {r1, ip}
subscs r2, r2, #8
- stmiacs r3!, {r1, ip}
+ sfi_breg r3, \
+ stmiacs \B!, {r1, ip}
subscs r2, r2, #8
- stmiacs r3!, {r1, ip}
+ sfi_breg r3, \
+ stmiacs \B!, {r1, ip}
bcs 1b
and r2, r2, #7
2:
subs r2, r2, #1 @ store up to 4 bytes per loop iteration
- strbcs r1, [r3], #1
+ sfi_breg r3, \
+ strbcs r1, [\B], #1
subscs r2, r2, #1
- strbcs r1, [r3], #1
+ sfi_breg r3, \
+ strbcs r1, [\B], #1
subscs r2, r2, #1
- strbcs r1, [r3], #1
+ sfi_breg r3, \
+ strbcs r1, [\B], #1
subscs r2, r2, #1
- strbcs r1, [r3], #1
+ sfi_breg r3, \
+ strbcs r1, [\B], #1
bcs 2b
DO_RET(lr)