This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] aarch64: add HXT Phecda core memory operation ifuncs


On 06/11/2018 03:16 PM, Hongbo Zhang wrote:
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.

Thank you for the patch. Your contributions are covered by the Linaro copyright assignment, but you have also attributed Minfeng Kang with part of this patch. Can you (or Carlos/Joseph) please clarify the copyright assignment status for Minfeng? I don't have access to the assignment file to confirm myself.

Thanks,
Siddhesh

---
  sysdeps/aarch64/multiarch/memcpy.c             | 2 +-
  sysdeps/aarch64/multiarch/memmove.c            | 2 +-
  sysdeps/aarch64/multiarch/memset.c             | 7 ++++---
  sysdeps/unix/sysv/linux/aarch64/cpu-features.c | 1 +
  sysdeps/unix/sysv/linux/aarch64/cpu-features.h | 3 +++
  5 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/sysdeps/aarch64/multiarch/memcpy.c b/sysdeps/aarch64/multiarch/memcpy.c
index b94c655..4a04a63 100644
--- a/sysdeps/aarch64/multiarch/memcpy.c
+++ b/sysdeps/aarch64/multiarch/memcpy.c
@@ -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
diff --git a/sysdeps/aarch64/multiarch/memmove.c b/sysdeps/aarch64/multiarch/memmove.c
index afd8dd2..e69d816 100644
--- a/sysdeps/aarch64/multiarch/memmove.c
+++ b/sysdeps/aarch64/multiarch/memmove.c
@@ -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)));
diff --git a/sysdeps/aarch64/multiarch/memset.c b/sysdeps/aarch64/multiarch/memset.c
index 6df93d5..d74ed3a 100644
--- a/sysdeps/aarch64/multiarch/memset.c
+++ b/sysdeps/aarch64/multiarch/memset.c
@@ -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);
diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
index 33b87a8..203f839 100644
--- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
+++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.c
@@ -35,6 +35,7 @@ static struct cpu_list cpu_list[] = {
        {"thunderxt88",	 0x430F0A10},
        {"thunderx2t99",   0x431F0AF0},
        {"thunderx2t99p1", 0x420F5160},
+      {"phecda",	 0x680F0000},
        {"generic", 	 0x0}
  };
diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h
index cde655b..eb35adf 100644
--- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h
+++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h
@@ -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;



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]