Index: src/cpu/amd/model_10xxx/processor_name.c =================================================================== --- src/cpu/amd/model_10xxx/processor_name.c (revision 5692) +++ src/cpu/amd/model_10xxx/processor_name.c (working copy) @@ -23,6 +23,8 @@ * * Revision Guide for AMD Family 10h Processors * Publication # 41322 Revision: 3.17 Issue Date: February 2008 + * modified by Xavi Drudis Ferran (xdrudis@tinet.cat) 2010-08-01 + * from #41322 Revision: 3.74 Issue Date: June 2010 */ #include @@ -45,17 +47,21 @@ char const *value; }; + // nodocs == were in the old sources, but are not in current docs static const struct str_s String1_socket_F[] = { - {0x00, 0x01, 0x00, "Dual-Core AMD Opteron(tm) Processor 83"}, - {0x00, 0x01, 0x01, "Dual-Core AMD Opteron(tm) Processor 23"}, + {0x00, 0x01, 0x00, "Dual-Core AMD Opteron(tm) Processor 83"}, /*nodocs*/ + {0x00, 0x01, 0x01, "Dual-Core AMD Opteron(tm) Processor 23"}, /*nodocs*/ {0x00, 0x03, 0x00, "Quad-Core AMD Opteron(tm) Processor 83"}, {0x00, 0x03, 0x01, "Quad-Core AMD Opteron(tm) Processor 23"}, - {0x00, 0x03, 0x02, "Embedded AMD Opteron(tm) Processor 83"}, - {0x00, 0x03, 0x03, "Embedded AMD Opteron(tm) Processor 23"}, - {0x00, 0x03, 0x04, "Embedded AMD Opteron(tm) Processor 13"}, - {0x00, 0x03, 0x05, "AMD Phenom(tm) FX-"}, - {0x01, 0x01, 0x01, "Embedded AMD Opteron(tm) Processor"}, + {0x00, 0x03, 0x02, "Embedded AMD Opteron(tm) Processor 83"}, /*nodocs*/ + {0x00, 0x03, 0x03, "Embedded AMD Opteron(tm) Processor 23"}, /*nodocs*/ + {0x00, 0x03, 0x04, "Embedded AMD Opteron(tm) Processor 13"}, /*nodocs*/ + {0x00, 0x03, 0x05, "AMD Phenom(tm) FX-"}, /*nodocs*/ + {0x00, 0x05, 0x00, "Six-Core AMD Opteron(tm) Processor 84"}, + {0x00, 0x05, 0x01, "Six-Core AMD Opteron(tm) Processor 24"}, + {0x01, 0x01, 0x01, "Embedded AMD Opteron(tm) Processor"}, /*nodocs*/ + {0x01, 0x03, 0x01, "Embedded AMD Opteron(tm) Processor "}, {0, 0, 0, NULL} }; @@ -63,22 +69,64 @@ {0x00, 0xFF, 0x0A, " SE"}, {0x00, 0xFF, 0x0B, " HE"}, {0x00, 0xFF, 0x0C, " EE"}, - {0x00, 0xFF, 0x0D, " Quad-Core Processor"}, + {0x00, 0xFF, 0x0D, " Quad-Core Processor"}, /*nodocs*/ {0x00, 0xFF, 0x0F, ""}, - {0x01, 0x01, 0x01, "GF HE"}, + {0x00, 0x05, 0x00, " SE"}, + {0x00, 0x05, 0x01, " HE"}, + {0x00, 0x05, 0x02, " EE"}, + + {0x01, 0x03, 0x01, "GF HE"}, + {0x01, 0x03, 0x02, "HF HE"}, + {0x01, 0x03, 0x03, "VS"}, + {0x01, 0x03, 0x04, "QS HE"}, + {0x01, 0x03, 0x05, "NP HE"}, + {0x01, 0x03, 0x06, "KH HE"}, + {0x01, 0x03, 0x07, "KS EE"}, + {0, 0, 0, NULL} }; static const struct str_s String1_socket_AM2[] = { - {0x00, 0x00, 0x00, "AMD Athlon(tm) Processor LE-"}, - {0x00, 0x00, 0x01, "AMD Sempron(tm) Processor LE-"}, - {0x00, 0x01, 0x00, "Dual-Core AMD Opteron(tm) Processor 13"}, - {0x00, 0x01, 0x01, "AMD Athlon(tm)"}, + {0x00, 0x00, 0x02, "AMD Sempron(tm) 1"}, + {0x00, 0x00, 0x03, "AMD Athlon(tm) II 1"}, + {0x00, 0x00, 0x01, "AMD Athlon(tm) "}, + + // duplicated in documentation + {0x00, 0x00, 0x03, "AMD Athlon(tm) II X2 2"}, + + {0x00, 0x00, 0x04, "AMD Athlon(tm) II X2 B"}, + {0x00, 0x00, 0x05, "AMD Athlon(tm) II X2 "}, + {0x00, 0x00, 0x07, "AMD Phenom(tm) II X2 5"}, + {0x00, 0x00, 0x0A, "AMD Phenom(tm) II X2 "}, + {0x00, 0x00, 0x0B, "AMD Phenom(tm) II X2 B"}, + {0x00, 0x00, 0x0C, "AMD Sempron(tm) X2 1"}, {0x00, 0x02, 0x00, "AMD Phenom(tm)"}, + {0x00, 0x02, 0x03, "AMD Phenom(tm) II X3 B"}, + {0x00, 0x02, 0x04, "AMD Phenom(tm) II X3 "}, + {0x00, 0x02, 0x07, "AMD Athlon(tm) II X3 4"}, + {0x00, 0x02, 0x08, "AMD Phenom(tm) II X3 7"}, + {0x00, 0x02, 0x0A, "AMD Athlon(tm) II X3 "}, {0x00, 0x03, 0x00, "Quad-Core AMD Opteron(tm) Processor 13"}, + {0x00, 0x03, 0x02, "AMD Phenom(tm) "}, + {0x00, 0x03, 0x03, "AMD Phenom(tm) II X4 9"}, + {0x00, 0x03, 0x04, "AMD Phenom(tm) II X4 8"}, + {0x00, 0x03, 0x07, "AMD Phenom(tm) II X4 B"}, + {0x00, 0x03, 0x08, "AMD Phenom(tm) II X4 "}, + {0x00, 0x03, 0x0A, "AMD Athlon(tm) II X4 6"}, + {0x00, 0x03, 0x0F, "AMD Athlon(tm) II X4 "}, + {0x00, 0x05, 0x00, "AMD Phenom(tm) II X6 1"}, + {0x01, 0x03, 0x02, "AMD Phenom(tm) II X4 9"}, + {0x01, 0x03, 0x03, "AMD Phenom(tm) II X4 8"}, + + {0x00, 0x00, 0x00, "AMD Athlon(tm) Processor LE-"}, /*nodocs*/ + {0x00, 0x01, 0x00, "Dual-Core AMD Opteron(tm) Processor 13"}, /*nodocs*/ + {0x00, 0x01, 0x01, "AMD Athlon(tm)"}, /*nodocs*/ + {0x00, 0x03, 0x01, "AMD Phenom(tm) FX-"}, - {0x00, 0x03, 0x02, "AMD Phenom(tm)"}, + // in old sources, contrary to current docs + // {0x00, 0x00, 0x01, "AMD Sempron(tm) Processor LE-"}, + {0, 0, 0, NULL} }; @@ -93,33 +141,140 @@ {0x00, 0x00, 0x07, "70"}, {0x00, 0x00, 0x08, "80"}, {0x00, 0x00, 0x09, "90"}, - {0x00, 0x01, 0x00, "00 Dual-Core Processor"}, - {0x00, 0x01, 0x01, "00e Dual-Core Processor"}, - {0x00, 0x01, 0x02, "00B Dual-Core Processor"}, + {0x00, 0x00, 0x0A, " Processor"}, + {0x00, 0x00, 0x0B, "u Processor"}, + + {0x00, 0x01, 0x00, "00 Dual-Core Processor"}, /*nodocs*/ + {0x00, 0x01, 0x01, "00e Dual-Core Processor"}, /*nodocs*/ + {0x00, 0x01, 0x02, "00B Dual-Core Processor"}, /*nodocs*/ {0x00, 0x01, 0x03, "50 Dual-Core Processor"}, - {0x00, 0x01, 0x04, "50e Dual-Core Processor"}, - {0x00, 0x01, 0x05, "50B Dual-Core Processor"}, + {0x00, 0x01, 0x04, "50e Dual-Core Processor"}, /*nodocs*/ + {0x00, 0x01, 0x05, "50B Dual-Core Processor"}, /*nodocs*/ + {0x00, 0x01, 0x06, " Processor"}, + {0x00, 0x01, 0x07, "e Processor"}, + {0x00, 0x01, 0x09, "0 Processor"}, + {0x00, 0x01, 0x0A, "0e Processor"}, + {0x00, 0x01, 0x0B, "u Processor"}, + {0x00, 0x02, 0x00, "00 Triple-Core Processor"}, {0x00, 0x02, 0x01, "00e Triple-Core Processor"}, {0x00, 0x02, 0x02, "00B Triple-Core Processor"}, {0x00, 0x02, 0x03, "50 Triple-Core Processor"}, {0x00, 0x02, 0x04, "50e Triple-Core Processor"}, {0x00, 0x02, 0x05, "50B Triple-Core Processor"}, + {0x00, 0x02, 0x06, " Processor"}, + {0x00, 0x02, 0x07, "e Processor"}, + {0x00, 0x02, 0x09, "0e Processor"}, + {0x00, 0x02, 0x0A, "0 Processor"}, + {0x00, 0x03, 0x00, "00 Quad-Core Processor"}, {0x00, 0x03, 0x01, "00e Quad-Core Processor"}, {0x00, 0x03, 0x02, "00B Quad-Core Processor"}, {0x00, 0x03, 0x03, "50 Quad-Core Processor"}, {0x00, 0x03, 0x04, "50e Quad-Core Processor"}, {0x00, 0x03, 0x05, "50B Quad-Core Processor"}, - {0x00, 0x03, 0x0A, " SE"}, - {0x00, 0x03, 0x0B, " HE"}, - {0x00, 0x03, 0x0C, " EE"}, - {0x00, 0x03, 0x0D, " Quad-Core Processor"}, + {0x00, 0x03, 0x06, " Processor"}, + {0x00, 0x03, 0x07, "e Processor"}, + {0x00, 0x03, 0x09, "0e Processor"}, + {0x00, 0x03, 0x0A, " SE"}, /*nodocs*/ + {0x00, 0x03, 0x0B, " HE"}, /*nodocs*/ + {0x00, 0x03, 0x0C, " EE"}, /*nodocs*/ + {0x00, 0x03, 0x0D, " Quad-Core Processor"}, /*nodocs*/ + {0x00, 0x03, 0x0E, "0 Processor"}, + + {0x00, 0x05, 0x00, "5T Processor"}, + {0x00, 0x05, 0x01, "0T Processor"}, + {0x00, 0xFF, 0x0F, ""}, + + {0x01, 0x03, 0x04, "T Processor"}, + {0, 0, 0, NULL} }; +static const struct str_s String1_S1g[] = { + {0x00, 0x00, 0x00, "AMD Sempron(tm) M1"}, + {0x00, 0x00, 0x01, "AMD V"}, + {0x00, 0x01, 0x00, "AMD Turion(tm) II Ultra Dual-Core Mobile M6"}, + {0x00, 0x01, 0x01, "AMD Turion(tm) II Dual-Core Mobile M5"}, + {0x00, 0x01, 0x02, "AMD Athlon(tm) II Dual-Core M3"}, + {0x00, 0x01, 0x03, "AMD Turion(tm) II P"}, + {0x00, 0x01, 0x04, "AMD Athlon(tm) II P"}, + {0x00, 0x01, 0x05, "AMD Phenom(tm) II X"}, + {0x00, 0x01, 0x06, "AMD Phenom(tm) II N"}, + {0x00, 0x01, 0x07, "AMD Turion(tm) II N"}, + {0x00, 0x01, 0x08, "AMD Athlon(tm) II N"}, + {0x00, 0x02, 0x02, "AMD Phenom(tm) II P"}, + {0x00, 0x02, 0x03, "AMD Phenom(tm) II N"}, + {0x00, 0x03, 0x01, "AMD Phenom(tm) II P"}, + {0x00, 0x03, 0x02, "AMD Phenom(tm) II X"}, + {0x00, 0x03, 0x03, "AMD Phenom(tm) II N"}, + {0, 0, 0, NULL} +}; + +static const struct str_s String2_S1g[] = { + {0x00, 0x00, 0x01, "0 Processor"}, + {0x00, 0x01, 0x02, "0 Dual-Core Processor"}, + {0x00, 0x02, 0x02, "0 Triple-Core Processor"}, + {0x00, 0x03, 0x01, "0 Quad-Core Processor"}, + {0x00, 0xFF, 0x0F, ""}, + {0, 0, 0, NULL} +}; + +static const struct str_s String1_G34r1[] = { + {0x00, 0x07, 0x00, "AMD Opteron(tm) Processor 61"}, + {0x00, 0x0B, 0x00, "AMD Opteron(tm) Processor 61"}, + {0, 0, 0, NULL} +}; + +static const struct str_s String2_G34r1[] = { + {0x00, 0x07, 0x00, " HE"}, + {0x00, 0x07, 0x01, " SE"}, + {0x00, 0x0B, 0x00, " HE"}, + {0x00, 0x0B, 0x01, " SE"}, + {0x00, 0xFF, 0x0F, ""}, + {0, 0, 0, NULL} +}; + +static const struct str_s String1_ASB2[] = { + {0x00, 0x00, 0x01, "AMD Athlon(tm) II Neo K"}, + {0x00, 0x00, 0x02, "AMD V"}, + {0x00, 0x00, 0x03, "AMD Athlon(tm) II Neo R"}, + {0x00, 0x01, 0x01, "AMD Turion(tm) II Neo K"}, + {0x00, 0x01, 0x02, "AMD Athlon(tm) II Neo K"}, + {0x00, 0x01, 0x03, "AMD V"}, + {0x00, 0x01, 0x04, "AMD Turion(tm) II Neo N"}, + {0x00, 0x01, 0x05, "AMD Athlon(tm) II Neo N"}, + {0, 0, 0, NULL} +}; + +static const struct str_s String2_ASB2[] = { + {0x00, 0x00, 0x01, "5 Processor"}, + {0x00, 0x00, 0x02, "L Processor"}, + {0x00, 0x01, 0x01, "5 Dual-Core Processor"}, + {0x00, 0x01, 0x02, "L Dual-Core Processor"}, + {0x00, 0xFF, 0x0F, ""}, + {0, 0, 0, NULL} +}; + +static const struct str_s String1_C32r1[] = { + {0x00, 0x03, 0x00, "AMD Opteron(tm) Processor 41"}, + {0x00, 0x05, 0x00, "AMD Opteron(tm) Processor 41"}, + {0, 0, 0, NULL} +}; + +static const struct str_s String2_C32r1[] = { + {0x00, 0x03, 0x00, " HE"}, + {0x00, 0x03, 0x01, " EE"}, + {0x00, 0x05, 0x00, " HE"}, + {0x00, 0x05, 0x01, " EE"}, + {0x00, 0xFF, 0x0F, ""}, + {0, 0, 0, NULL} +}; + + + const char const *unknown = "AMD Processor model unknown"; const char const *unknown2 = " type unknown"; const char const *sample = "AMD Engineering Sample"; @@ -183,6 +338,27 @@ str = String1_socket_AM2; str2 = String2_socket_AM2; break; + case 2: + Model--; + str = String1_S1g; + str2 = String2_S1g; + break; + case 3: + Model--; + str = String1_G34r1; + str2 = String2_G34r1; + break; + case 4: + Model--; + str = String1_ASB2; + str2 = String2_ASB2; + break; + case 5: + Model--; + str = String1_C32r1; + str2 = String2_C32r1; + break; + default: goto done; } @@ -215,7 +391,7 @@ /* String 2 */ for(i = 0; str2[i].value; i++) { if ((str2[i].Pg == Pg) && - ((str2[i].NC == NC) || !str2_checkNC) && + ((str2[i].NC == NC) || (str2[i].NC == 0xFF) || !str2_checkNC) && (str2[i].String == String2)) { processor_name_string = str2[i].value; break;