aboutsummaryrefslogtreecommitdiff
path: root/string/include
diff options
context:
space:
mode:
authorBranislav Rankov <branislav.rankov@arm.com>2020-02-06 18:34:01 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2020-02-18 16:46:59 +0000
commit02cfc9cc9a06eca291d4c4b15887381bf4e88c4b (patch)
tree8cb108f73c0864e365af77051b0a36bdbe7d4ed3 /string/include
parent1dfd7b85de70c8fa8c26316b2b67a6d6b3f638fd (diff)
downloadarm-optimized-routines-02cfc9cc9a06eca291d4c4b15887381bf4e88c4b.tar.gz
ARMv8.5 MTE: Add MTE compatible version of strlen.
Reading outside the range of the string is only allowed within 16 byte aligned granules when MTE is enabled. This implementation is based on string/aarch64/strlen.S Merged the page cross code into the main path and optimized it. Modified the zeroones mask to ignore the bytes that are loaded but are not part of the string. Made a special case for when there is 8 bytes or less to check before the alignment boundary.
Diffstat (limited to 'string/include')
-rw-r--r--string/include/stringlib.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/string/include/stringlib.h b/string/include/stringlib.h
index b3b6181..8e8e881 100644
--- a/string/include/stringlib.h
+++ b/string/include/stringlib.h
@@ -26,6 +26,7 @@ char *__strchrnul_aarch64 (const char *, int );
size_t __strlen_aarch64 (const char *);
size_t __strnlen_aarch64 (const char *, size_t);
int __strncmp_aarch64 (const char *, const char *, size_t);
+size_t __strlen_aarch64_mte (const char *);
#if __ARM_NEON
void *__memcpy_aarch64_simd (void *__restrict, const void *__restrict, size_t);
void *__memmove_aarch64_simd (void *, const void *, size_t);