private string GetHypervisor(CpuIdRegister register) { if (register == null) { return(null); } StringBuilder description = new StringBuilder(); int ebx = register.Result[1]; int ecx = register.Result[2]; int edx = register.Result[3]; Append(description, ebx & 0xFF); Append(description, (ebx >> 8) & 0xFF); Append(description, (ebx >> 16) & 0xFF); Append(description, (ebx >> 24) & 0xFF); Append(description, ecx & 0xFF); Append(description, (ecx >> 8) & 0xFF); Append(description, (ecx >> 16) & 0xFF); Append(description, (ecx >> 24) & 0xFF); Append(description, edx & 0xFF); Append(description, (edx >> 8) & 0xFF); Append(description, (edx >> 16) & 0xFF); Append(description, (edx >> 24) & 0xFF); return(description.ToString()); }
private string GetHypervisor(ICpuIdX86 x86Cpu) { if (!x86Cpu.Features["HYPERVISOR"]) { return(null); } CpuIdRegister hyper = x86Cpu.Registers.GetCpuId(HypervisorFunction, 0); return(GetHypervisor(hyper)); }
private static int GetBrand(AuthenticAmdCpu cpu) { CpuIdRegister feature = cpu.Registers.GetCpuId(GenericIntelCpuBase.FeatureInformationFunction, 0); if (feature == null) { return(0); } int brand = feature.Result[1] & 0xFF; CpuIdRegister extFeature = cpu.Registers.GetCpuId(GenericIntelCpuBase.ExtendedInformationFunction, 0); if (extFeature == null) { return(brand); } return(brand | ((extFeature.Result[1] & 0xFFFF) << 8)); }
public static string GetNptType(AuthenticAmdCpu cpu) { int brand = GetBrand(cpu); int pwrLim = ((brand & 0x1C000) >> 13) | ((brand & 0x400000) >> 22); int bti = (brand & 0x3E0000) >> 17; int nn = ((brand & 0x800000) >> 17) | ((brand & 0x3F00) >> 8); CpuIdRegister pkgReg = cpu.Registers.GetCpuId(GenericIntelCpuBase.ExtendedInformationFunction, 0); int pkgType = (pkgReg.Result[0] & 0x30) >> 4; CpuIdRegister cmpReg = cpu.Registers.GetCpuId(GenericIntelCpuBase.ExtendedLmApicId, 0); int cmpCap = (cmpReg.Result[2] & 0xFF) == 0 ? 0 : 1; switch (pkgType) { case 0x00: return(GetNptTypeS1g1(pwrLim, bti, nn, cmpCap)); // Table 9 case 0x01: return(GetNptTypeFr3F(pwrLim, bti, nn, cmpCap)); // Table 7 case 0x03: return(GetNptTypeAm2Asb1(pwrLim, bti, nn, cmpCap)); // Table 8 } return("AMD Processor model unknown"); }