[RFC] Add Hygon Dhyana processor support

Message ID 20190515093457.35348-1-fanjinke51@yeah.net
State New
Headers show
Series
  • [RFC] Add Hygon Dhyana processor support
Related show

Commit Message

Jinke Fan May 15, 2019, 9:34 a.m.
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).

gdb/ChangeLog:
	* go32-nat.c (go32_sysinfo): Add hygon_p.

The results of make check are no degradation:
-- 
2.17.1

Patch

=== binutils Summary ===
 of expected passes            251
 of unresolved testcases       1
 of unsupported tests          1

Please let me know your comments.
Thanks in advance.

Signed-off-by: Jinke Fan <fanjinke51@yeah.net>
---
 gdb/go32-nat.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c
index ea0872363d..a4d1a5c9af 100644
--- a/gdb/go32-nat.c
+++ b/gdb/go32-nat.c
@@ -1162,6 +1162,7 @@  go32_sysinfo (const char *arg, int from_tty)
       unsigned brand_idx;
       int intel_p = strcmp (cpuid_vendor, "GenuineIntel") == 0;
       int amd_p = strcmp (cpuid_vendor, "AuthenticAMD") == 0;
+      int hygon_p = strcmp (cpuid_vendor, "HygonGenuine") == 0;
       unsigned cpu_family, cpu_model;
 
 #if 0
@@ -1261,12 +1262,12 @@  go32_sysinfo (const char *arg, int from_tty)
 	    }
 	}
       xsnprintf (cpu_string, sizeof (cpu_string), "%s%s Model %d Stepping %d",
-	         intel_p ? "Pentium" : (amd_p ? "AMD" : "ix86"),
+	         intel_p ? "Pentium" : (amd_p ? "AMD" : (hygon_p ? "Hygon" : "ix86")),
 	         cpu_brand, cpu_model, cpuid_eax & 0xf);
       printfi_filtered (31, "%s\n", cpu_string);
       if (((cpuid_edx & (6 | (0x0d << 23))) != 0)
 	  || ((cpuid_edx & 1) == 0)
-	  || (amd_p && (cpuid_edx & (3 << 30)) != 0))
+	  || ((amd_p || hygon_p) && (cpuid_edx & (3 << 30)) != 0))
 	{
 	  puts_filtered ("CPU Features...................");
 	  /* We only list features which might be useful in the DPMI
@@ -1285,7 +1286,7 @@  go32_sysinfo (const char *arg, int from_tty)
 	    puts_filtered ("SSE ");
 	  if ((cpuid_edx & (1 << 26)) != 0)
 	    puts_filtered ("SSE2 ");
-	  if (amd_p)
+	  if (amd_p || hygon_p)
 	    {
 	      if ((cpuid_edx & (1 << 31)) != 0)
 		puts_filtered ("3DNow! ");