This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[PATCH] Add support for Hygon Dhyana processor
- From: Jinke Fan <fanjinke at hygon dot cn>
- To: <newlib at sourceware dot org>
- Cc: Jinke Fan <fanjinke at hygon dot cn>
- Date: Fri, 17 May 2019 11:29:11 +0800
- Subject: [PATCH] Add support for Hygon Dhyana processor
-Add vendor identification
-Support in get_cpu_cache
Background:
Chengdu Haiguang IC Design Co., Ltd (Hygon) is a Joint Venture
between AMD and Haiguang Information Technology Co.,Ltd., aims at
providing high performance x86 processor for China server market.
Its first generation processor codename is Dhyana, which
originates from AMD technology and shares most of the
architecture with AMD's family 17h, but with different CPU Vendor
ID("HygonGenuine")/Family series number(Family 18h).
Related Hygon kernel patch can be found on:
http://lkml.kernel.org/r/5ce86123a7b9dad925ac583d88d2f921040e859b.1538583282.git.puwen@hygon.cn
Signed-off-by: Jinke Fan <fanjinke@hygon.cn>
---
winsup/cygwin/fhandler_proc.cc | 3 ++-
winsup/cygwin/sysconf.cc | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/winsup/cygwin/fhandler_proc.cc b/winsup/cygwin/fhandler_proc.cc
index a6a0b683c..c461bbc75 100644
--- a/winsup/cygwin/fhandler_proc.cc
+++ b/winsup/cygwin/fhandler_proc.cc
@@ -706,7 +706,8 @@ format_proc_cpuinfo (void *, char *&destbuf)
/* Vendor identification. */
bool is_amd = false, is_intel = false;
- if (!strcmp ((char*)vendor_id, "AuthenticAMD"))
+ if (!strcmp ((char*)vendor_id, "AuthenticAMD")
+ || !strcmp((char*)vendor_id, "HygonGenuine"))
is_amd = true;
else if (!strcmp ((char*)vendor_id, "GenuineIntel"))
is_intel = true;
diff --git a/winsup/cygwin/sysconf.cc b/winsup/cygwin/sysconf.cc
index 216e5142f..3440c09ee 100644
--- a/winsup/cygwin/sysconf.cc
+++ b/winsup/cygwin/sysconf.cc
@@ -486,7 +486,8 @@ get_cpu_cache (int in)
vendor_id[3] = 0;
if (!strcmp ((char*) vendor_id, "GenuineIntel"))
return get_cpu_cache_intel (in, maxf & 0xffff);
- else if (!strcmp ((char*)vendor_id, "AuthenticAMD"))
+ else if (!strcmp ((char*)vendor_id, "AuthenticAMD")
+ || !strcmp((char*)vendor_id, "HygonGenuine"))
{
uint32_t maxe = 0, unused;
cpuid (&maxe, &unused, &unused, &unused, 0x80000000);
--
2.17.1