diff options
| author | Vinay Verma <vvinay@codeaurora.org> | 2021-08-02 19:18:27 +0530 |
|---|---|---|
| committer | drishal <drishalballaney@gmail.com> | 2022-05-20 13:31:48 +0530 |
| commit | dea9f14da2ec55017911923efec8b06b889be214 (patch) | |
| tree | d2cd1606cf3f5ec41913cd1224a820ba9143b3ee /libc/arch-arm64/dynamic_function_dispatch.cpp | |
| parent | 649a84fac36f0c69adc9a98e0afb12458799e432 (diff) | |
Dynamic handling of memcpy based on BTI supports12.1
CRs-Fixed: 3017053
Change-Id: I80cd3a88efb175ee155c534c3548e70613df5947
Diffstat (limited to 'libc/arch-arm64/dynamic_function_dispatch.cpp')
| -rw-r--r-- | libc/arch-arm64/dynamic_function_dispatch.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libc/arch-arm64/dynamic_function_dispatch.cpp b/libc/arch-arm64/dynamic_function_dispatch.cpp index 83e5ca4da..aa0767c76 100644 --- a/libc/arch-arm64/dynamic_function_dispatch.cpp +++ b/libc/arch-arm64/dynamic_function_dispatch.cpp @@ -41,6 +41,24 @@ DEFINE_IFUNC_FOR(memchr) { } } +typedef void* memcpy_func(void*, const void*, size_t); +DEFINE_IFUNC_FOR(memcpy) { + if (arg->_hwcap2 & HWCAP2_BTI) { + RETURN_FUNC(memcpy_func, memcpy_opt); + } else { + RETURN_FUNC(memcpy_func, memcpy_generic); + } +} + +typedef void* memmove_func(void*, const void*, size_t); +DEFINE_IFUNC_FOR(memmove) { + if (arg->_hwcap2 & HWCAP2_BTI) { + RETURN_FUNC(memmove_func, memmove_opt); + } else { + RETURN_FUNC(memmove_func, memmove_generic); + } +} + typedef int stpcpy_func(char*, const char*); DEFINE_IFUNC_FOR(stpcpy) { if (arg->_hwcap2 & HWCAP2_MTE) { |
