aarch64: add HXT Phecda core memory operation ifuncs
Phecda is HXT semiconductor's CPU core, this patch adds memory operation ifuncs for it: sharing the same optimized implementation with Qualcomm's Falkor core. 2018-06-07 Minfeng Kang <minfeng.kang@hxt-semitech.com> Hongbo Zhang <hongbo.zhang@linaro.org> * sysdeps/aarch64/multiarch/memcpy.c (libc_ifunc): reuse __memcpy_falkor for phecda core. * sysdeps/aarch64/multiarch/memmove.c (libc_ifunc): reuse __memmove_falkor for phecda core. * sysdeps/aarch64/multiarch/memset.c (libc_ifunc): reuse __memset_falkor for phecda core. * sysdeps/unix/sysv/linux/aarch64/cpu-features.c: add MIDR entry for phecda core. * sysdeps/unix/sysv/linux/aarch64/cpu-features.h (IS_PHECDA): add macro to identify phecda core.
This commit is contained in:
parent
5aad5f6178
commit
fc2ba8037d
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2018-06-12 Minfeng Kang <minfeng.kang@hxt-semitech.com>
|
||||
Hongbo Zhang <hongbo.zhang@linaro.org>
|
||||
|
||||
* sysdeps/aarch64/multiarch/memcpy.c (libc_ifunc): reuse
|
||||
__memcpy_falkor for phecda core.
|
||||
* sysdeps/aarch64/multiarch/memmove.c (libc_ifunc): reuse
|
||||
__memmove_falkor for phecda core.
|
||||
* sysdeps/aarch64/multiarch/memset.c (libc_ifunc): reuse
|
||||
__memset_falkor for phecda core.
|
||||
* sysdeps/unix/sysv/linux/aarch64/cpu-features.c: add MIDR entry
|
||||
for phecda core.
|
||||
* sysdeps/unix/sysv/linux/aarch64/cpu-features.h (IS_PHECDA): add
|
||||
macro to identify phecda core.
|
||||
|
||||
2018-06-12 Carlos O'Donell <carlos@redhat.com>
|
||||
Andreas Schwab <schwab@suse.de>
|
||||
Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
@ -36,7 +36,7 @@ extern __typeof (__redirect_memcpy) __memcpy_falkor attribute_hidden;
|
||||
libc_ifunc (__libc_memcpy,
|
||||
(IS_THUNDERX (midr)
|
||||
? __memcpy_thunderx
|
||||
: (IS_FALKOR (midr)
|
||||
: (IS_FALKOR (midr) || IS_PHECDA (midr)
|
||||
? __memcpy_falkor
|
||||
: (IS_THUNDERX2 (midr) || IS_THUNDERX2PA (midr)
|
||||
? __memcpy_thunderx2
|
||||
|
@ -35,7 +35,7 @@ extern __typeof (__redirect_memmove) __memmove_falkor attribute_hidden;
|
||||
libc_ifunc (__libc_memmove,
|
||||
(IS_THUNDERX (midr)
|
||||
? __memmove_thunderx
|
||||
: (IS_FALKOR (midr)
|
||||
: (IS_FALKOR (midr) || IS_PHECDA (midr)
|
||||
? __memmove_falkor
|
||||
: __memmove_generic)));
|
||||
|
||||
|
@ -31,9 +31,10 @@ extern __typeof (__redirect_memset) __libc_memset;
|
||||
extern __typeof (__redirect_memset) __memset_falkor attribute_hidden;
|
||||
extern __typeof (__redirect_memset) __memset_generic attribute_hidden;
|
||||
|
||||
libc_ifunc (__libc_memset, (IS_FALKOR (midr) && zva_size == 64
|
||||
? __memset_falkor
|
||||
: __memset_generic));
|
||||
libc_ifunc (__libc_memset,
|
||||
((IS_FALKOR (midr) || IS_PHECDA (midr)) && zva_size == 64
|
||||
? __memset_falkor
|
||||
: __memset_generic));
|
||||
|
||||
# undef memset
|
||||
strong_alias (__libc_memset, memset);
|
||||
|
@ -35,6 +35,7 @@ static struct cpu_list cpu_list[] = {
|
||||
{"thunderxt88", 0x430F0A10},
|
||||
{"thunderx2t99", 0x431F0AF0},
|
||||
{"thunderx2t99p1", 0x420F5160},
|
||||
{"phecda", 0x680F0000},
|
||||
{"generic", 0x0}
|
||||
};
|
||||
|
||||
|
@ -49,6 +49,9 @@
|
||||
#define IS_FALKOR(midr) (MIDR_IMPLEMENTOR(midr) == 'Q' \
|
||||
&& MIDR_PARTNUM(midr) == 0xc00)
|
||||
|
||||
#define IS_PHECDA(midr) (MIDR_IMPLEMENTOR(midr) == 'h' \
|
||||
&& MIDR_PARTNUM(midr) == 0x000)
|
||||
|
||||
struct cpu_features
|
||||
{
|
||||
uint64_t midr_el1;
|
||||
|
Loading…
Reference in New Issue
Block a user