This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[PATCH][AArch64] Fix issue with dst bias in memset
- From: Wilco Dijkstra <Wilco dot Dijkstra at arm dot com>
- To: "newlib at sourceware dot org" <newlib at sourceware dot org>
- Cc: nd <nd at arm dot com>
- Date: Thu, 8 Nov 2018 15:50:42 +0000
- Subject: [PATCH][AArch64] Fix issue with dst bias in memset
This patch fixes an issue in the previous memset loop change. If the
zva size is >= 256 and there are more than 64 bytes left, we could enter
the loop and thus need to rebias dst by 32 as well.
Since no known CPUs use this size this can't be tested natively, so I've
tested it on a simulator initialized with a large zva size.
--
diff --git a/newlib/libc/machine/aarch64/memset.S b/newlib/libc/machine/aarch64/memset.S
index 7c8fe583bf88722d73b90ec470c72b509e5be137..103e3f8bb0f20a5d02578f2379620687eae10a52 100644
--- a/newlib/libc/machine/aarch64/memset.S
+++ b/newlib/libc/machine/aarch64/memset.S
@@ -233,6 +233,7 @@ L(zva_other):
subs count, count, zva_len
b.hs 3b
4: add count, count, zva_len
+ sub dst, dst, 32 /* Bias dst for tail loop. */
b L(tail64)
.size memset, . - memset