diff --git a/xtoskrnl/ar/amd64/procsup.cc b/xtoskrnl/ar/amd64/procsup.cc index 16aab6b..cd22542 100644 --- a/xtoskrnl/ar/amd64/procsup.cc +++ b/xtoskrnl/ar/amd64/procsup.cc @@ -77,29 +77,13 @@ AR::ProcSup::IdentifyProcessor(VOID) CpuRegisters.Leaf = CPUID_GET_VENDOR_STRING; AR::CpuFunc::CpuId(&CpuRegisters); - /* Store CPU vendor name in processor control block */ + /* Store CPU vendor in processor control block */ + Prcb->CpuId.Vendor = (CPU_VENDOR)CpuRegisters.Ebx; *(PULONG)&Prcb->CpuId.VendorName[0] = CpuRegisters.Ebx; *(PULONG)&Prcb->CpuId.VendorName[4] = CpuRegisters.Edx; *(PULONG)&Prcb->CpuId.VendorName[8] = CpuRegisters.Ecx; Prcb->CpuId.VendorName[12] = '\0'; - /* Resolve CPU vendor */ - if(RTL::Memory::CompareMemory(Prcb->CpuId.VendorName, "AuthenticAMD", 12) == 12) - { - /* AMD CPU */ - Prcb->CpuId.Vendor = CPU_VENDOR_AMD; - } - else if(RTL::Memory::CompareMemory(Prcb->CpuId.VendorName, "GenuineIntel", 12) == 12) - { - /* Intel CPU */ - Prcb->CpuId.Vendor = CPU_VENDOR_INTEL; - } - else - { - /* Unknown CPU vendor */ - Prcb->CpuId.Vendor = CPU_VENDOR_UNKNOWN; - } - /* Get CPU standard features */ RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS)); CpuRegisters.Leaf = CPUID_GET_STANDARD1_FEATURES; @@ -134,6 +118,11 @@ AR::ProcSup::IdentifyProcessor(VOID) Prcb->CpuId.Model += (CpuSignature.ExtendedModel << 4); } } + else + { + /* Unknown CPU vendor */ + Prcb->CpuId.Vendor = CPU_VENDOR_UNKNOWN; + } /* Identify processor features */ IdentifyProcessorFeatures(); diff --git a/xtoskrnl/ar/i686/procsup.cc b/xtoskrnl/ar/i686/procsup.cc index 4957b83..2f05926 100644 --- a/xtoskrnl/ar/i686/procsup.cc +++ b/xtoskrnl/ar/i686/procsup.cc @@ -70,29 +70,13 @@ AR::ProcSup::IdentifyProcessor(VOID) CpuRegisters.Leaf = CPUID_GET_VENDOR_STRING; AR::CpuFunc::CpuId(&CpuRegisters); - /* Store CPU vendor name in processor control block */ + /* Store CPU vendor in processor control block */ + Prcb->CpuId.Vendor = (CPU_VENDOR)CpuRegisters.Ebx; *(PULONG)&Prcb->CpuId.VendorName[0] = CpuRegisters.Ebx; *(PULONG)&Prcb->CpuId.VendorName[4] = CpuRegisters.Edx; *(PULONG)&Prcb->CpuId.VendorName[8] = CpuRegisters.Ecx; Prcb->CpuId.VendorName[12] = '\0'; - /* Resolve CPU vendor */ - if(RTL::Memory::CompareMemory(Prcb->CpuId.VendorName, "AuthenticAMD", 12) == 12) - { - /* AMD CPU */ - Prcb->CpuId.Vendor = CPU_VENDOR_AMD; - } - else if(RTL::Memory::CompareMemory(Prcb->CpuId.VendorName, "GenuineIntel", 12) == 12) - { - /* Intel CPU */ - Prcb->CpuId.Vendor = CPU_VENDOR_INTEL; - } - else - { - /* Unknown CPU vendor */ - Prcb->CpuId.Vendor = CPU_VENDOR_UNKNOWN; - } - /* Get CPU standard features */ RtlZeroMemory(&CpuRegisters, sizeof(CPUID_REGISTERS)); CpuRegisters.Leaf = CPUID_GET_STANDARD1_FEATURES; @@ -127,6 +111,11 @@ AR::ProcSup::IdentifyProcessor(VOID) Prcb->CpuId.Model += (CpuSignature.ExtendedModel << 4); } } + else + { + /* Unknown CPU vendor */ + Prcb->CpuId.Vendor = CPU_VENDOR_UNKNOWN; + } /* Identify processor features */ IdentifyProcessorFeatures();