From ac924443de91be9a878ec5d3df2f40c644adb816 Mon Sep 17 00:00:00 2001 From: Stefan Lankes Date: Sun, 6 Aug 2017 23:56:14 +0200 Subject: [PATCH] add check if cpuid 0x80000000 & 0x80000001 is available --- librs/src/arch/x86_64/processor.rs | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/librs/src/arch/x86_64/processor.rs b/librs/src/arch/x86_64/processor.rs index 1bca92c26..dab418283 100644 --- a/librs/src/arch/x86_64/processor.rs +++ b/librs/src/arch/x86_64/processor.rs @@ -299,11 +299,20 @@ impl CpuInfo { f1 &= 0 ^ CPU_FEATURE_SEP; } - cpuid = cpuid4(0x80000001u32, 0, 0, 0); - let f3: u32 = cpuid.edx; + cpuid = cpuid4(0x80000000u32, 0, 0, 0); + let extended: u32 = cpuid.eax; - cpuid = cpuid4(0x80000008u32, 0, 0, 0); - let width: u32 = cpuid.eax; + let mut f3: u32 = 0; + if extended >= 0x80000001u32 { + cpuid = cpuid4(0x80000001u32, 0, 0, 0); + f3 = cpuid.edx; + } + + let mut width: u32 = 0; + if extended >= 0x80000008u32 { + cpuid = cpuid4(0x80000008u32, 0, 0, 0); + width = cpuid.eax; + } let mut f4: u32 = 0; /* Additional Intel-defined flags: level 0x00000007 */