diff options
author | Branislav Rankov <branislav.rankov@arm.com> | 2020-02-06 18:34:01 +0000 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2020-02-18 16:46:59 +0000 |
commit | 02cfc9cc9a06eca291d4c4b15887381bf4e88c4b (patch) | |
tree | 8cb108f73c0864e365af77051b0a36bdbe7d4ed3 /string/include | |
parent | 1dfd7b85de70c8fa8c26316b2b67a6d6b3f638fd (diff) | |
download | arm-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.h | 1 |
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); |