aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2023-02-06 18:36:45 +0100
committerFelix Held <felix-coreboot@felixheld.de>2023-02-08 15:12:13 +0000
commit180e414a801935b3557c9a932c87e61acf2c697a (patch)
treed602963094e49d8e31e0c702b2ea6465ad37f0ae /src
parent9700fe2f101738689274cd124706677b22b51b3c (diff)
arch/x86/include/cpu: introduce CPUID_FROM_FMS macro
Introduce a macro to get the raw CPUID leaf 1 EAX value from a given set of CPU family, model and stepping. The processor type in bits 12 and 13 is assumed to be always be zero; at least this is the case for all CPUIDs that are currently in the coreboot tree. This can be used to make the device values in the CPU device ID tables easier to read. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: Idab77453712b14983b1d02ca365f7924239fc2bf Reviewed-on: https://review.coreboot.org/c/coreboot/+/72856 Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com> Reviewed-by: Martin Roth <martin.roth@amd.corp-partner.google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86/include/arch/cpu.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/arch/x86/include/arch/cpu.h b/src/arch/x86/include/arch/cpu.h
index e24c4464ee..8bf06e5a42 100644
--- a/src/arch/x86/include/arch/cpu.h
+++ b/src/arch/x86/include/arch/cpu.h
@@ -111,6 +111,16 @@ static inline bool cpu_is_intel(void)
struct device;
+#define CPUID_FROM_FMS(family, model, stepping) ( \
+ /* bits 31..28: reserved, set to 0 */ \
+ ((family) > 0xf ? ((family) - 0xf) & 0xff : 0) << 20 | \
+ ((model) >> 4 & 0xf) << 16 | \
+ /* bits 15..14: reserved, set to 0 */ \
+ /* bits 13..12: processor type, set to 0 */ \
+ ((family) > 0xf ? 0xf : (family) & 0xf) << 8 | \
+ ((model) & 0xf) << 4 | \
+ ((stepping) & 0xf) << 0)
+
#define CPUID_EXACT_MATCH_MASK 0xffffffff
#define CPUID_ALL_STEPPINGS_MASK 0xfffffff0