Browse Source

Support Zhaoxin/Centaur kh40000 as ZEN

Signed-off-by: JonasZhou <JonasZhou@zhaoxin.com>
tags/v0.3.21
JonasZhou 3 years ago
parent
commit
2d0ad89b0d
2 changed files with 75 additions and 6 deletions
  1. +50
    -4
      cpuid_x86.c
  2. +25
    -2
      driver/others/dynamic.c

+ 50
- 4
cpuid_x86.c View File

@@ -1707,8 +1707,18 @@ int get_cpuname(void){
if (model == 0xf && stepping < 0xe) if (model == 0xf && stepping < 0xe)
return CPUTYPE_NANO; return CPUTYPE_NANO;
return CPUTYPE_NEHALEM; return CPUTYPE_NEHALEM;
case 0x7:
switch (exmodel) {
case 5:
if (support_avx2())
return CPUTYPE_ZEN;
else
return CPUTYPE_DUNNINGTON;
default:
return CPUTYPE_NEHALEM;
}
default: default:
if (family >= 0x7)
if (family >= 0x8)
return CPUTYPE_NEHALEM; return CPUTYPE_NEHALEM;
else else
return CPUTYPE_VIAC3; return CPUTYPE_VIAC3;
@@ -1716,7 +1726,20 @@ int get_cpuname(void){
} }


if (vendor == VENDOR_ZHAOXIN){ if (vendor == VENDOR_ZHAOXIN){
return CPUTYPE_NEHALEM;
switch (family) {
case 0x7:
switch (exmodel) {
case 5:
if (support_avx2())
return CPUTYPE_ZEN;
else
return CPUTYPE_DUNNINGTON;
default:
return CPUTYPE_NEHALEM;
}
default:
return CPUTYPE_NEHALEM;
}
} }


if (vendor == VENDOR_RISE){ if (vendor == VENDOR_RISE){
@@ -2416,8 +2439,18 @@ int get_coretype(void){
if (model == 0xf && stepping < 0xe) if (model == 0xf && stepping < 0xe)
return CORE_NANO; return CORE_NANO;
return CORE_NEHALEM; return CORE_NEHALEM;
case 0x7:
switch (exmodel) {
case 5:
if (support_avx2())
return CORE_ZEN;
else
return CORE_DUNNINGTON;
default:
return CORE_NEHALEM;
}
default: default:
if (family >= 0x7)
if (family >= 0x8)
return CORE_NEHALEM; return CORE_NEHALEM;
else else
return CORE_VIAC3; return CORE_VIAC3;
@@ -2425,7 +2458,20 @@ int get_coretype(void){
} }


if (vendor == VENDOR_ZHAOXIN) { if (vendor == VENDOR_ZHAOXIN) {
return CORE_NEHALEM;
switch (family) {
case 0x7:
switch (exmodel) {
case 5:
if (support_avx2())
return CORE_ZEN;
else
return CORE_DUNNINGTON;
default:
return CORE_NEHALEM;
}
default:
return CORE_NEHALEM;
}
} }


return CORE_UNKNOWN; return CORE_UNKNOWN;


+ 25
- 2
driver/others/dynamic.c View File

@@ -875,14 +875,37 @@ static gotoblas_t *get_coretype(void){
if (model == 0xf && stepping < 0xe) if (model == 0xf && stepping < 0xe)
return &gotoblas_NANO; return &gotoblas_NANO;
return &gotoblas_NEHALEM; return &gotoblas_NEHALEM;
case 0x7:
switch (exmodel) {
case 5:
if (support_avx2())
return &gotoblas_ZEN;
else
return &gotoblas_DUNNINGTON;
default:
return &gotoblas_NEHALEM;
}
default: default:
if (family >= 0x7)
if (family >= 0x8)
return &gotoblas_NEHALEM; return &gotoblas_NEHALEM;
} }
} }


if (vendor == VENDOR_ZHAOXIN) { if (vendor == VENDOR_ZHAOXIN) {
return &gotoblas_NEHALEM;
switch (family) {
case 0x7:
switch (exmodel) {
case 5:
if (support_avx2())
return &gotoblas_ZEN;
else
return &gotoblas_DUNNINGTON;
default:
return &gotoblas_NEHALEM;
}
default:
return &gotoblas_NEHALEM;
}
} }


return NULL; return NULL;


Loading…
Cancel
Save