From: VMware, Inc <> Date: Thu, 27 Oct 2011 18:25:39 +0000 (-0700) Subject: Changes in shared code that don't affect open-vm-tools functionality. X-Git-Tag: 2011.10.26-514583~41 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b3bc87770059ef0979c4f8ac04aed6bd8e8db66b;p=thirdparty%2Fopen-vm-tools.git Changes in shared code that don't affect open-vm-tools functionality. Signed-off-by: Marcelo Vanzin --- diff --git a/open-vm-tools/lib/include/x86cpuid.h b/open-vm-tools/lib/include/x86cpuid.h index 2c32786f9..f87b731ab 100644 --- a/open-vm-tools/lib/include/x86cpuid.h +++ b/open-vm-tools/lib/include/x86cpuid.h @@ -932,7 +932,13 @@ CPUIDCheck(uint32 eaxIn, uint32 eaxInCheck, #define CPUID_MODEL_PIII_0A 10 /* AMD model information */ -#define CPUID_MODEL_BARCELONA_02 0x02 // Barcelona (both Opteron & Phenom kind) +#define CPUID_MODEL_BARCELONA_02 0x02 // Barcelona (Opteron & Phenom) +#define CPUID_MODEL_SHANGHAI_04 0x04 // Shanghai RB +#define CPUID_MODEL_SHANGHAI_05 0x05 // Shanghai BL +#define CPUID_MODEL_SHANGHAI_06 0x06 // Shanghai DA +#define CPUID_MODEL_ISTANBUL_MAGNY_08 0x08 // Istanbul (6 core) & Magny-cours (12) HY +#define CPUID_MODEL_ISTANBUL_MAGNY_09 0x09 // HY - G34 package +#define CPUID_MODEL_PHAROAH_HOUND_0A 0x0A // Pharoah Hound /* VIA model information */ #define CPUID_MODEL_NANO 15 // Isaiah @@ -1088,6 +1094,31 @@ CPUID_UARCH_IS_SANDYBRIDGE(uint32 v) // IN: %eax from CPUID with %eax=1. } +static INLINE Bool +CPUID_UARCH_IS_ATOM(uint32 v) // IN: %eax from CPUID with %eax=1. +{ + /* Assumes the CPU manufacturer is Intel. */ + uint32 effectiveModel = CPUID_EFFECTIVE_MODEL(v); + + return CPUID_FAMILY_IS_P6(v) && + effectiveModel == CPUID_MODEL_ATOM_1C; +} + + +static INLINE Bool +CPUID_MODEL_IS_WESTMERE(uint32 v) // IN: %eax from CPUID with %eax=1. +{ + /* Assumes the CPU manufacturer is Intel. */ + uint32 effectiveModel = CPUID_EFFECTIVE_MODEL(v); + + return CPUID_FAMILY_IS_P6(v) && + (effectiveModel == CPUID_MODEL_NEHALEM_25 || // Clarkdale + effectiveModel == CPUID_MODEL_NEHALEM_2C); // Westmere-EP +} + + + + static INLINE Bool CPUID_FAMILY_IS_K7(uint32 eax) { @@ -1118,6 +1149,12 @@ CPUID_FAMILY_IS_K8L(uint32 eax) CPUID_EFFECTIVE_FAMILY(eax) == CPUID_FAMILY_LLANO; } +static INLINE Bool +CPUID_FAMILY_IS_LLANO(uint32 eax) +{ + return CPUID_EFFECTIVE_FAMILY(eax) == CPUID_FAMILY_LLANO; +} + static INLINE Bool CPUID_FAMILY_IS_K8MOBILE(uint32 eax) { @@ -1160,6 +1197,45 @@ CPUID_MODEL_IS_BARCELONA(uint32 v) // IN: %eax from CPUID with %eax=1. } +static INLINE Bool +CPUID_MODEL_IS_SHANGHAI(uint32 v) // IN: %eax from CPUID with %eax=1. +{ + /* Assumes the CPU manufacturer is AMD. */ + return CPUID_EFFECTIVE_FAMILY(v) == CPUID_FAMILY_K8L && + (CPUID_MODEL_SHANGHAI_04 <= CPUID_EFFECTIVE_MODEL(v) && + CPUID_EFFECTIVE_MODEL(v) <= CPUID_MODEL_SHANGHAI_06); +} + + +static INLINE Bool +CPUID_MODEL_IS_ISTANBUL_MAGNY(uint32 v) // IN: %eax from CPUID with %eax=1. +{ + /* Assumes the CPU manufacturer is AMD. */ + return CPUID_EFFECTIVE_FAMILY(v) == CPUID_FAMILY_K8L && + (CPUID_MODEL_ISTANBUL_MAGNY_08 <= CPUID_EFFECTIVE_MODEL(v) && + CPUID_EFFECTIVE_MODEL(v) <= CPUID_MODEL_ISTANBUL_MAGNY_09); +} + + +static INLINE Bool +CPUID_MODEL_IS_PHAROAH_HOUND(uint32 v) // IN: %eax from CPUID with %eax=1. +{ + /* Assumes the CPU manufacturer is AMD. */ + return CPUID_EFFECTIVE_FAMILY(v) == CPUID_FAMILY_K8L && + CPUID_EFFECTIVE_MODEL(v) == CPUID_MODEL_PHAROAH_HOUND_0A; +} + + +static INLINE Bool +CPUID_MODEL_IS_BULLDOZER(uint32 eax) +{ + /* Bulldozer is models 0x00 - 0x0f of family 0x15. */ + return CPUID_EFFECTIVE_FAMILY(eax) == CPUID_FAMILY_BULLDOZER && + CPUID_EFFECTIVE_MODEL(eax) < 0x10; +} + + + #define CPUID_TYPE_PRIMARY 0 #define CPUID_TYPE_OVERDRIVE 1 #define CPUID_TYPE_SECONDARY 2