コード例 #1
0
ファイル: smbios_getters.c プロジェクト: JayMonkey/chameleon
bool getSMBOemProcessorType(returnType *value)
{
	static bool done = false;		
		
	value->word = simpleGetSMBOemProcessorType();

	if (Platform.CPU.Vendor == CPUID_VENDOR_INTEL) // Intel
	{
		if (!done)
		{
			verbose("CPU is %s, family 0x%x, model 0x%x\n", Platform.CPU.BrandString, Platform.CPU.Family, Platform.CPU.Model);
			done = true;
		}
		
		switch (Platform.CPU.Family) 
		{
			case 0x06:
			{
				switch (Platform.CPU.Model)
				{
					case CPU_MODEL_DOTHAN:				// Intel Pentium M
					case CPU_MODEL_YONAH:				// Intel Mobile Core Solo, Duo
					case CPU_MODEL_MEROM:				// Intel Mobile Core 2 Solo, Duo, Xeon 30xx, Xeon 51xx, Xeon X53xx, Xeon E53xx, Xeon X32xx
					case CPU_MODEL_PENRYN:				// Intel Core 2 Solo, Duo, Quad, Extreme, Xeon X54xx, Xeon X33xx
					case CPU_MODEL_ATOM:				// Intel Atom (45nm)
						return true;

					case CPU_MODEL_NEHALEM:				// Intel Core i7, Xeon W35xx, Xeon X55xx, Xeon E55xx LGA1366 (45nm)
					case CPU_MODEL_WESTMERE:			// Intel Core i7, Xeon X56xx, Xeon E56xx, Xeon W36xx LGA1366 (32nm) 6 Core
					case CPU_MODEL_WESTMERE_EX:			// Intel Xeon E7
					case CPU_MODEL_JAKETOWN:			// Intel Core i7, Xeon E5 LGA2011 (32nm)
						if (strstr(Platform.CPU.BrandString, "Xeon(R)"))
							value->word = 0x0501;			// Xeon 
						else
							value->word = 0x0701;			// Core i7
						return true;

					case CPU_MODEL_FIELDS:				// Intel Core i5, i7, Xeon X34xx LGA1156 (45nm)
						if (strstr(Platform.CPU.BrandString, "Xeon(R)"))
							value->word = 0x0501;// Xeon
						else
							if (strstr(Platform.CPU.BrandString, "Core(TM) i5"))
								value->word = 0x0601;			// Core i5
							else
								value->word = 0x0701;			// Core i7
						return true;

					case CPU_MODEL_DALES:
						if (strstr(Platform.CPU.BrandString, "Core(TM) i5"))
							value->word = 0x0601;			// Core i5
						else
							value->word = 0x0701;			// Core i7
						return true;

					case CPU_MODEL_SANDYBRIDGE:			// Intel Core i3, i5, i7 LGA1155 (32nm)
					case CPU_MODEL_IVYBRIDGE:			// Intel Core i3, i5, i7 LGA1155 (22nm)
					case CPU_MODEL_DALES_32NM:			// Intel Core i3, i5 LGA1156 (32nm)
                    case CPU_MODEL_HASWELL:             // Intel Core i3, i5, i7, Xeon E3 LGA1155 (22nm)
						if (strstr(Platform.CPU.BrandString, "Xeon(R)"))
							value->word = 0x0501;			// Xeon
						else
							if (strstr(Platform.CPU.BrandString, "Core(TM) i3"))
								value->word = 0x0901;			// Core i3
                            else
                                if (strstr(Platform.CPU.BrandString, "Core(TM) i5"))
                                    value->word = 0x0601;		// Core i5
                                else
                                    value->word = 0x0701;		// Core i7
                    return true;
                }
			}
		}
	}
	
	return false;
}
コード例 #2
0
ファイル: smbios_getters.c プロジェクト: svn2github/chameleon
bool getSMBOemProcessorType(returnType *value)
{
	static bool done = false;

	value->word = simpleGetSMBOemProcessorType();

	if (Platform.CPU.Vendor == CPUID_VENDOR_INTEL) { // Intel
		if (!done) {
			//DBG("CPU is %s, family 0x%x, model 0x%x\n", Platform.CPU.BrandString, (uint32_t)Platform.CPU.Family, (uint32_t)Platform.CPU.Model);
			done = true;
		}
		// Bungo: fixes Oem Processor Type - better matching IMHO, needs testing
		switch (Platform.CPU.Family) {
			case 0x0F:
			case 0x06:
			{
				switch (Platform.CPU.Model) {
					case CPU_MODEL_PENTIUM_M:
					case CPU_MODEL_DOTHAN:				// 0x0D - Intel Pentium M model D
					case CPU_MODEL_PRESCOTT:
					case CPU_MODEL_NOCONA:
						if (strstr(Platform.CPU.BrandString, "Xeon")) {
							value->word = 0x402;		// 1026 - Xeon
						}
						return true;

					case CPU_MODEL_PRESLER:
					case CPU_MODEL_CELERON:
					case CPU_MODEL_YONAH:				// 0x0E - Intel Mobile Core Solo, Duo
						value->word = 0x201;			// 513
						return true;

					case CPU_MODEL_MEROM:				// 0x0F - Intel Mobile Core 2 Solo, Duo, Xeon 30xx, Xeon 51xx, Xeon X53xx, Xeon E53xx, Xeon X32xx
					case CPU_MODEL_XEON_MP:				// 0x1D - Six-Core Xeon 7400, "Dunnington", 45nm
					case CPU_MODEL_PENRYN:				// 0x17 - Intel Core 2 Solo, Duo, Quad, Extreme, Xeon X54xx, Xeon X33xx
						if (strstr(Platform.CPU.BrandString, "Xeon")) {
							value->word = 0x402;		// 1026 - Xeon
                            return true;
						}
						if (Platform.CPU.NoCores <= 2) {
							value->word = 0x301;		// 769 - Core 2 Duo , Pentium Dual Core etc.
						} else {
							value->word = 0x402;		// 1026 - Core 2 Quad as Xeon
						}
						return true;

					case CPU_MODEL_LINCROFT:			// 0x27 - Intel Atom, "Lincroft", 45nm
					case CPU_MODEL_ATOM:				// 0x1C - Intel Atom (45nm)
						return true;

					case CPU_MODEL_NEHALEM_EX:			// 0x2E - Nehalem-ex, "Beckton", 45nm
					case CPU_MODEL_NEHALEM:				// 0x1A - Intel Core i7, Xeon W35xx, Xeon X55xx, Xeon E55xx LGA1366 (45nm)
					case CPU_MODEL_FIELDS:				// 0x1E - Intel Core i5, i7, Xeon X34xx LGA1156 (45nm)
					case CPU_MODEL_DALES:					// 0x1F - Intel Core i5, i7 LGA1156 (45nm) (Havendale, Auburndale)
						if (strstr(Platform.CPU.BrandString, "Xeon")) {
							value->word = 0x501;			// 1281 - Lynnfiled Quad-Core Xeon
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) {
							value->word = 0x901;		// 2305 - Core i3
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) {
							value->word = 0x601;			// Core i5
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) {
							value->word = 0x701;			// 1793 - Core i7
							return true;
						}
						if (Platform.CPU.NoCores <= 2) {
							value->word = 0x901;			//  - Pentium Dual Core as Core i3
						}
						return true;

					case CPU_MODEL_DALES_32NM:			// 0x25 - Intel Core i3, i5 LGA1156 (32nm) (Clarkdale, Arrandale)
					case CPU_MODEL_WESTMERE:			// 0x2C - Intel Core i7, Xeon X56xx, Xeon E56xx, Xeon W36xx LGA1366 (32nm) 6 Core
					case CPU_MODEL_WESTMERE_EX:			// 0x2F - Intel Xeon E7
						if (strstr(Platform.CPU.BrandString, "Xeon")) {
							value->word = 0x501;		// 1281 - Xeon
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) {
							value->word = 0x901;		// 2305 - Core i3
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) {
							value->word = 0x602;		// 1538 - Core i5
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) {
							value->word = 0x702;		// 1794 -Core i7
							return true;
						}
						if (Platform.CPU.NoCores <= 2) {
							value->word = 0x901;		//  - Pentium Dual Core as Core i3
						}
						return true;

					case CPU_MODEL_JAKETOWN:			// 0x2D - Intel Core i7, Xeon E5-xxxx LGA2011 (32nm)
					case CPU_MODEL_SANDYBRIDGE:			// 0x2A - Intel Core i3, i5, i7 LGA1155 (32nm)
						if (strstr(Platform.CPU.BrandString, "Xeon")) {
							value->word = 0x501;		// 1281 - Xeon
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) {
							value->word = 0x902;		// 2306 -Core i3
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) {
							value->word = 0x603;		// 1539 - Core i5
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) {
							value->word = 0x703;		// 1795 - Core i7
							return true;
						}
						if (Platform.CPU.NoCores <= 2) {
							value->word = 0x902;		//  - Pentium Dual Core as Core i3
						}
						return true;

					case CPU_MODEL_IVYBRIDGE:			// 0x3A - Intel Core i3, i5, i7 LGA1155 (22nm)
						if (strstr(Platform.CPU.BrandString, "Xeon")) {
							value->word = 0xA01;		// 2561 - Xeon
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) {
							value->word = 0x903;		// 2307 - Core i3 - Apple doesn't use it
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) {
							value->word = 0x604;		// 1540 - Core i5
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) {
							value->word = 0x704;		// 1796 - Core i7
							return true;
						}
						if (Platform.CPU.NoCores <= 2) {
							value->word = 0x903;		//  - Pentium Dual Core as Core i3
						}
						return true;

					case CPU_MODEL_IVYBRIDGE_XEON:		// 0x3E - Mac Pro 6,1
						value->word = 0xA01;		// 2561 - Xeon
						return true;

					case CPU_MODEL_HASWELL:				// 0x3C -
					case CPU_MODEL_HASWELL_SVR:			// 0x3F -
					case CPU_MODEL_HASWELL_ULT:			// 0x45 -
					case CPU_MODEL_CRYSTALWELL:			// 0x46
						if (strstr(Platform.CPU.BrandString, "Xeon")) {
							value->word = 0xA01;		// 2561 - Xeon
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i3")) {
							value->word = 0x904;		// 2308 - Core i3 - Apple doesn't use it - but we yes:-)
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i5")) {
							value->word = 0x605;		// 1541 - Core i5
							return true;
						}
						if (strstr(Platform.CPU.BrandString, "Core(TM) i7")) {
							value->word = 0x705;		// 1797 - Core i7
							return true;
						}
						if (Platform.CPU.NoCores <= 2) {
							value->word = 0x904;		//  - Pentium Dual Core as Core i3
						}
						return true;

					case 0x15:					// EP80579 integrated processor
						value->word = 0x301;			// 769
						return true;

					case 0x13:					// Core i5, Xeon MP, "Havendale", "Auburndale", 45nm
					case 0x19:					// Intel Core i5 650 @3.20 Ghz
						value->word = 0x601;			// 1537 - Core i5
						return true;
					default:
						break; //Unsupported CPU type
				}
			}
			default:
				break;
		}
	}
	
	return false;
}