Enable the EXCAVATOR kernels on AMD PRO A12-9800

This commit is contained in:
Martin Köhler 2017-02-07 09:52:02 +01:00
parent 60eea75409
commit d711588cf2
1 changed files with 109 additions and 98 deletions

View File

@ -1250,64 +1250,70 @@ int get_cpuname(void){
} }
if (vendor == VENDOR_AMD){ if (vendor == VENDOR_AMD){
switch (family) { /* fprintf(stderr, "Family: %x exfamily: %x model: %x exmodel: %x\n", family, exfamily, model, exmodel ); */
case 0x4: switch (family) {
return CPUTYPE_AMD5X86; case 0x4:
case 0x5: return CPUTYPE_AMD5X86;
return CPUTYPE_AMDK6; case 0x5:
case 0x6: return CPUTYPE_AMDK6;
return CPUTYPE_ATHLON; case 0x6:
case 0xf: return CPUTYPE_ATHLON;
switch (exfamily) { case 0xf:
case 0: switch (exfamily) {
case 2: case 0:
return CPUTYPE_OPTERON; case 2:
case 1: return CPUTYPE_OPTERON;
case 3: case 1:
case 10: case 3:
return CPUTYPE_BARCELONA; case 10:
case 6: return CPUTYPE_BARCELONA;
switch (model) { case 6:
case 1: switch (model) {
//AMD Bulldozer Opteron 6200 / Opteron 4200 / AMD FX-Series case 1:
if(support_avx()) //AMD Bulldozer Opteron 6200 / Opteron 4200 / AMD FX-Series
return CPUTYPE_BULLDOZER; if(support_avx())
else return CPUTYPE_BULLDOZER;
return CPUTYPE_BARCELONA; //OS don't support AVX. else
case 2: //AMD Piledriver return CPUTYPE_BARCELONA; //OS don't support AVX.
case 3: //AMD Richland case 2: //AMD Piledriver
if(support_avx()) case 3: //AMD Richland
return CPUTYPE_PILEDRIVER; if(support_avx())
else return CPUTYPE_PILEDRIVER;
return CPUTYPE_BARCELONA; //OS don't support AVX. else
case 0: return CPUTYPE_BARCELONA; //OS don't support AVX.
switch(exmodel){ case 5: // EXCAVATOR
case 1: //AMD Trinity if(support_avx())
if(support_avx()) return CPUTYPE_EXCAVATOR;
return CPUTYPE_PILEDRIVER; else
else return CPUTYPE_BARCELONA; //OS don't support AVX.
return CPUTYPE_BARCELONA; //OS don't support AVX. case 0:
case 3: switch(exmodel){
if(support_avx()) case 1: //AMD Trinity
return CPUTYPE_STEAMROLLER; if(support_avx())
else return CPUTYPE_PILEDRIVER;
return CPUTYPE_BARCELONA; //OS don't support AVX. else
return CPUTYPE_BARCELONA; //OS don't support AVX.
case 3:
if(support_avx())
return CPUTYPE_STEAMROLLER;
else
return CPUTYPE_BARCELONA; //OS don't support AVX.
case 6: case 6:
if(support_avx()) if(support_avx())
return CPUTYPE_EXCAVATOR; return CPUTYPE_EXCAVATOR;
else else
return CPUTYPE_BARCELONA; //OS don't support AVX. return CPUTYPE_BARCELONA; //OS don't support AVX.
} }
break; break;
} }
break; break;
case 5: case 5:
return CPUTYPE_BOBCAT; return CPUTYPE_BOBCAT;
}
break;
} }
break; return CPUTYPE_AMD_UNKNOWN;
}
return CPUTYPE_AMD_UNKNOWN;
} }
if (vendor == VENDOR_CYRIX){ if (vendor == VENDOR_CYRIX){
@ -1767,52 +1773,57 @@ int get_coretype(void){
} }
if (vendor == VENDOR_AMD){ if (vendor == VENDOR_AMD){
if (family <= 0x5) return CORE_80486; if (family <= 0x5) return CORE_80486;
if (family <= 0xe) return CORE_ATHLON; if (family <= 0xe) return CORE_ATHLON;
if (family == 0xf){ if (family == 0xf){
if ((exfamily == 0) || (exfamily == 2)) return CORE_OPTERON; if ((exfamily == 0) || (exfamily == 2)) return CORE_OPTERON;
else if (exfamily == 5) return CORE_BOBCAT; else if (exfamily == 5) return CORE_BOBCAT;
else if (exfamily == 6) { else if (exfamily == 6) {
switch (model) { switch (model) {
case 1: case 1:
//AMD Bulldozer Opteron 6200 / Opteron 4200 / AMD FX-Series //AMD Bulldozer Opteron 6200 / Opteron 4200 / AMD FX-Series
if(support_avx()) if(support_avx())
return CORE_BULLDOZER; return CORE_BULLDOZER;
else else
return CORE_BARCELONA; //OS don't support AVX. return CORE_BARCELONA; //OS don't support AVX.
case 2: //AMD Piledriver case 2: //AMD Piledriver
case 3: //AMD Richland case 3: //AMD Richland
if(support_avx()) if(support_avx())
return CORE_PILEDRIVER; return CORE_PILEDRIVER;
else else
return CORE_BARCELONA; //OS don't support AVX. return CORE_BARCELONA; //OS don't support AVX.
case 5:
case 0: if(support_avx())
switch(exmodel){ return CORE_EXCAVATOR;
case 1: //AMD Trinity else
if(support_avx()) return CORE_BARCELONA; //OS don't support AVX.
return CORE_PILEDRIVER;
else
return CORE_BARCELONA; //OS don't support AVX.
case 3: case 0:
if(support_avx()) switch(exmodel){
return CORE_STEAMROLLER; case 1: //AMD Trinity
else if(support_avx())
return CORE_BARCELONA; //OS don't support AVX. return CORE_PILEDRIVER;
else
return CORE_BARCELONA; //OS don't support AVX.
case 6: case 3:
if(support_avx()) if(support_avx())
return CORE_EXCAVATOR; return CORE_STEAMROLLER;
else else
return CORE_BARCELONA; //OS don't support AVX. return CORE_BARCELONA; //OS don't support AVX.
}
break; case 6:
} if(support_avx())
return CORE_EXCAVATOR;
else
return CORE_BARCELONA; //OS don't support AVX.
}
break;
}
}else return CORE_BARCELONA; }else return CORE_BARCELONA;
} }
} }
if (vendor == VENDOR_CENTAUR) { if (vendor == VENDOR_CENTAUR) {