Пример #1
0
        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());
        }
Пример #2
0
        private string GetHypervisor(ICpuIdX86 x86Cpu)
        {
            if (!x86Cpu.Features["HYPERVISOR"])
            {
                return(null);
            }

            CpuIdRegister hyper = x86Cpu.Registers.GetCpuId(HypervisorFunction, 0);

            return(GetHypervisor(hyper));
        }
Пример #3
0
        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));
        }
Пример #4
0
            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");
            }