void CCpuControl::SetCPUNameIntel() { int S = Stepping,FE = FamilyEx; char *n,*p,*r; n = ""; p = ""; r = ""; SetCoreRevisionIntel(); switch( Family ){ case 0xF: ////////////// // Itanium 2 ////////////// if(FE > 0x01){ n = "Itanium 2 (Madison)"; }else if(FE == 0x01){ n = "Itanium 2 (McKinley)"; }else{ ////////////// // Pentium 4 ////////////// switch( Model ){ case 6: FlagMultiTable = NORTHWOOD; r = "0.065"; if(! strstr(NameString,"Xeon")){ p = "LGA775"; if(Number >= 4){ n = "Pentium XE (Presler)"; }else if(PhysicalCoreNum == 2){ n = "Pentium D (Presler)"; }else{ n = "Pentium 4 (Cedar Mill)"; } }else{ p = "Socket 604"; n = "Xeon (Dempsey)"; } break; case 5: FlagMultiTable = NORTHWOOD; r = "0.09"; p = "LGA775"; n = "Pentium 4 (Tejas)"; break; case 4: case 3: FlagMultiTable = NORTHWOOD; r = "0.09"; if(PlatformID == 2 || PlatformID == 3){ p = "Socket 478"; }else if(PlatformID == 4){ p = "LGA775"; }else{ p = "Socket 478/LGA775"; } if( ! strstr(NameString,"Pentium") && CacheL2 >= 1024 && BrandID != 0xC && (PlatformID <= 0 || BrandID == 0xB || strstr(NameString,"Xeon")) ){// || BrandID <= 0 || if(PhysicalCoreNum == 2){ n = "Xeon (Paxville DP)"; }else if( CacheL2 == 2048 ){ n = "Xeon (Irwindale)"; }else{ n = "Xeon (Nocona)"; } p = "Socket 604"; }else if(BrandID == 0xC || strstr(NameString,"Xeon")){ if(PhysicalCoreNum == 2){ n = "Xeon (Paxville)"; }else if( CacheL3 == 0 ){ n = "Xeon MP (Cranford)"; }else{ n = "Xeon MP (Potomac)"; } p = "Socket 604"; }else if(PhysicalCoreNum == 2 && HyperThreadNum == 2){ n = "Pentium XE (Smithfield)"; FlagHT = TRUE; FlagDualCore = TRUE; }else if(PhysicalCoreNum == 2){ n = "Pentium D (Smithfield)"; FlagHT = FALSE; FlagDualCore = TRUE; }else if( CacheL2 == 2048 && SystemClockOri >= 266.6 ){ n = "Pentium 4 XE (Prescott-2M)"; }else if( CacheL2 == 2048 ){ n = "Pentium 4 HT (Prescott-2M)"; }else if( strstr(NameString,"obile Celeron") && CacheL2 == 256 ){ n = "Mobile Celeron (Prescott-256K)"; }else if( strstr(NameString,"obile Celeron") && CacheL2 == 512 ){ n = "Mobile Celeron (Prescott-512K)"; }else if( strstr(NameString,"Celeron") || CacheL2 == 256 ){ n = "Celeron D (Prescott-256K)"; }else if( strstr(NameString,"obile")){ if( HyperThreadNum >= 2 ){ n = "Mobile Pentium 4 HT (Prescott)"; }else{ n = "Mobile Pentium 4 (Prescott)"; } }else if( HyperThreadNum >= 2 ){ n = "Pentium 4 HT (Prescott)"; }else{ n = "Pentium 4 (Prescott)"; } break; case 2: FlagMultiTable = NORTHWOOD; r = "0.13"; if(PlatformID == 2 || PlatformID == 3){ p = "Socket 478"; }else if(PlatformID == 4){ p = "LGA775"; }else{ p = "Socket 478/LGA775"; } if(BrandID == 0xC){ n = "Xeon MP (Gallatin)"; p = "Socket 603/604"; }else if(BrandID == 0xB){ n = "Xeon (Prestonia)"; p = "Socket 603/604"; }else if(BrandID == 0x9 && CacheL3 == 2048){ n = "Pentium 4 XE (Gallatin)"; }else if( CacheL2 == 256 ){ n = "Mobile Celeron (Northwood-256K)"; p = "Socket 478"; }else if( CacheL2 == 128 && strstr(NameString,"Pentium") ){ n = "Pentium 4 (Northwood-128K)"; }else if( CacheL2 == 128){ n = "Celeron (Northwood-128K)"; }else if( (BrandID == 0xE || BrandID == 0xF) && HyperThreadNum >= 2 ){ n = "Mobile Pentium 4 HT (Northwood)"; FlagClockModulation = TRUE; }else if( (BrandID == 0xE || BrandID == 0xF) && SystemClockOri >= 125.0 ){ n = "Mobile Pentium 4 (Northwood)"; FlagClockModulation = TRUE; }else if( BrandID == 0xE || BrandID == 0xF ){ n = "Mobile Pentium 4-M (Northwood)"; FlagClockModulation = TRUE; }else if( HyperThreadNum >= 2 ){ n = "Pentium 4 HT (Northwood)"; }else{ n = "Pentium 4 (Northwood)"; } break; case 1: case 0: r = "0.18"; FlagMultiTable = WILLAMETTE; if( ( BrandID == 0xB && Model <= 1 && Stepping < 3 ) || BrandID == 0xC ){ n = "Xeon MP (Foster MP)"; p = "Socket 603"; }else if( BrandID == 0xE || BrandID == 0xB ){ n = "Xeon (Foster)"; p = "Socket 603"; }else if( CacheL2 == 128 ){ n = "Celeron (Willamette-128K)"; p = "Socket 478"; }else{ n = "Pentium 4 (Willamette)"; if( Model == 1 ){ p = "Socket 478"; }else{ p = "Socket 423"; } } break; default: n = "Unknown CPU"; break; } break; } break; #ifndef _X86_64 case 0x7: n = "Itanium (Merced)"; break; case 0x6: switch( Model ){ ///////////// // Conroe/Merom ///////////// case 0xF: r = "0.065"; FlagMultiTable = DOTHAN; FlagClockModulation = TRUE; if(PlatformID == 2 || Number == 4 || strstr(NameString, "Xeon")){ n = "Xeon (Woodcrest)"; p = "LGA771"; }else if(SystemClockOri >= 266 && MultiplierOri == 11.0){ n = "Core 2 Extream (Conroe)"; p = "LGA775"; }else if(PhysicalCoreNum == 2){ if(SystemClockOri >= 266){ n = "Core 2 Duo (Conroe)"; p = "LGA775"; }else{ n = "Core 2 Duo (Merom)"; p = "Socket 479"; } }else{ /* temp */ if(PlatformID == 4){ n = "Core 2 Solo (Conroe SC)"; p = "LGA775"; }else{ n = "Core 2 Solo (Merom SC)"; p = "Socket 479"; } } break; ///////////// // Yonah ///////////// case 0xE: r = "0.065"; FlagMultiTable = DOTHAN; FlagClockModulation = TRUE; p = "Socket 479"; if(Number == 4 || strstr(NameString, "Xeon")){ n = "Xeon (Sossaman)"; }else if(CacheL2 == 1024){ n = "Celeron M (Yonah)"; }else if(PhysicalCoreNum == 2){ n = "Core Duo (Yonah DC)"; }else{ n = "Core Solo (Yonah SC)"; } break; ///////////// // Dothan ///////////// case 0xD: case 0xC: r = "0.09"; FlagMultiTable = DOTHAN; p = "Socket 479"; if( CacheL2 == 1024 ){ n = "Celeron M (Dothan-1024K)"; }else{ n = "Pentium M (Dothan)"; FlagClockModulation = TRUE; } break; ///////////// // Tualatin ///////////// case 0xB: r = "0.13"; FlagMultiTable = TUALATIN; if( BrandID == 0x7 ){ n = "Mobile Celeron (Tualatin)"; p = "Mobile Module"; FlagClockModulation = TRUE; }else if( BrandID == 0x6 ){ n = "Mobile Pentium III-M (Tualatin)"; p = "Mobile Module"; FlagClockModulation = TRUE; }else if( BrandID == 0x3 && S >= 1 ){ n = "Celeron (Tualatin)"; p = "Socket 370"; }else if( CacheL2 == 512 ){ n = "Pentium III-S (Tualatin)"; p = "Socket 370"; }else if( BrandID == 0x4 || BrandID == 0x2 ){ n = "Pentium III (Tualatin)"; p = "Socket 370"; }else{ n = "Celeron (Tualatin)"; p = "Socket 370"; } break; ///////////// // Cascades ///////////// case 0xA: r = "0.18"; FlagMultiTable = COPPERMINE; n = "Pentium III Xeon (Cascades)"; break; /////////// // Banias /////////// case 9: r = "0.13"; p = "Socket 479"; FlagMultiTable = BANIAS; if( CacheL2 == 1024 ){ n = "Pentium M (Banias)"; FlagClockModulation = TRUE; }else{ n = "Celeron M (Banias-512K)"; } break; /////////////// // Coppermine /////////////// case 8: r = "0.18"; FlagMultiTable = COPPERMINE; if( BrandID == 0x3 ){ n = "Pentium III Xeon (Cascades)"; }else if( CacheL2 == 256 && PlatformID % 2){ n = "Mobile Pentium III (Coppermine)"; p = "Mobile Module"; }else if( CacheL2 == 256 ){ n = "Pentium III (Coppermine)"; p = "Socket 370"; }else if( CacheL2 <= 128 && PlatformID % 2){ n = "Mobile Celeron (Coppermine-128K)"; p = "Mobile Module"; }else if( CacheL2 <= 128 ){ n = "Celeron (Coppermine-128K)"; p = "Socket 370"; } break; /////////// // Katmai /////////// case 7: r = "0.25"; FlagMultiTable = P6; if( CacheL2 == 1024 ){ n = "Pentium III Xeon (Tanner)"; p = "Slot 2"; }else{ n = "Pentium III (Katmai)"; p = "Slot 1"; FlagHalfSpeedCache = TRUE; } break; ////////////////////// // Dixon & Mendocino ////////////////////// case 6: r = "0.25"; FlagMultiTable = P6; if( (S == 0xA || S == 0xD ) && CacheL2 == 256){ n = "Mobile Pentium II (Dixon)"; p = "Mobile Module"; }else if( (S == 0xA || S == 0xD ) && CacheL2 == 128){ n = "Mobile Celeron (Dixon-128K)"; p = "Mobile Module"; }else{ n = "Celeron (Mendocino)"; p = "Socket 370"; } break; ////////////// // Deschutes ////////////// case 5: r = "0.25"; FlagMultiTable = P6; if( CacheL2 > 512 ){ n = "Pentium II Xeon (Deschutes)"; p = "Slot 2"; }else if( CacheL2 == 512 && Type == 0x1 ){ n = "Pentium II OverDrive"; FlagHalfSpeedCache = TRUE; }else if( CacheL2 == 512 ){ n = "Pentium II (Deschutes)"; p = "Slot 1"; FlagHalfSpeedCache = TRUE; }else if( CacheL2 == 0 ){ n = "Celeron (Covinton)"; p = "Slot 1"; } break; case 4: n = "OverDrive"; break; case 3: FlagMultiTable = P6; if( Type == 0x1 ){ r = "0.25"; n = "Pentium II OverDrive"; }else{ n = "Pentium II (Klamath)"; p = "Slot 1"; r = "0.28"; FlagHalfSpeedCache = TRUE; } break; /////// // P6 /////// case 2: n = "Pentium Pro (P6)"; p = "Socket 8"; FlagMultiTable = P6; r = "0.35"; break; case 1: n = "Pentium Pro (P6)"; p = "Socket 8"; FlagMultiTable = P6; if(S<=2){ r = "0.60"; }else{ r = "0.35"; } break; case 0: n = "Pentium Pro (P6)"; p = "Socket 8"; r = "0.60"; FlagMultiTable = P6; break; } break; //////////// // Pentium //////////// case 5: switch( Model ){ case 8: n = "Pentium MMX (P55)"; r = "0.25"; CacheL1I=16; CacheL1D=16; break; case 7: n = "Pentium (P54C)"; r = "0.35"; CacheL1I=8; CacheL1D=8; break; case 6: n = "Pentium OverDrive"; CacheL1I=8; CacheL1D=8; break; case 5: n = "Pentium OverDrive"; CacheL1I=8; CacheL1D=8; break; case 4: if( Type == 1 ){ n = "Pentium MMX OverDrive"; }else{ n = "Pentium MMX (P55C)"; } r = "0.28"; CacheL1I=16; CacheL1D=16; break; case 3: n = "Pentium OverDrive (P24T)"; r = "0.35"; CacheL1I=8; CacheL1D=8; break; case 2: if( Type == 1){ n = "Pentium OverDrive"; r = "0.35"; }else{ n = "Pentium (P54C)"; r = "0.50/0.35"; } CacheL1I=8; CacheL1D=8; break; case 1: case 0: if( Type == 1 ){ n = "Pentium OverDrive"; }else{ n = "Pentium (P5)"; } r = "0.80"; CacheL1I=8; CacheL1D=8; break; default: n = "Pentium"; break; } break; //////// // 486 //////// case 4: switch( Model ){ case 9: n = "486DX4 WB"; CacheL1U = 8; break; case 8: n = "486DX4"; CacheL1U=8; break; case 7: n = "486DX2 WB"; CacheL1U=8; break; case 5: n = "486SX2"; CacheL1U=8; break; case 4: n = "486SL"; CacheL1U=8; break; case 3: n = "486DX2"; CacheL1U=8; break; case 2: n = "486SX"; CacheL1U=8; break; case 1: case 0: n = "486DX"; CacheL1U=8; break; default: n = "486"; break; } break; case 3: n = "386"; break; #endif // _X86_64 default: n = "Unknown CPU"; break; } strcpy(NameSysInfo,n); strcpy(PlatformName,p); strcpy(ProcessRule,r); }