All pastes #587163 Raw Edit

Miscellany

public c v1 · immutable
#587163 ·published 2007-06-24 09:57 UTC
rendered paste body
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);}