aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAhmed S. Darwish <darwi@linutronix.de>2025-03-24 15:20:33 +0100
committerIngo Molnar <mingo@kernel.org>2025-03-25 09:53:46 +0100
commitf2e2efe9489d883fdaac8b7b46bd669b6214b1cb (patch)
tree2365f9dfa04a2dc0b05a3ed503706ebce328889d
parent3151ec059dd1e71761f3beccc1e5f5c18fac4afa (diff)
downloadtip-f2e2efe9489d883fdaac8b7b46bd669b6214b1cb.tar.gz
tools/x86/kcpuid: Extend CPUID index mask macro
Extend the CPUID index mask macro from 0x80000000 to 0xffff0000. This accommodates the Transmeta (0x80860000) and Centaur (0xc0000000) index ranges which will be later added. This also automatically sets CPUID_FUNCTION_MASK to 0x0000ffff, which is the actual correct value. Use that macro, instead of the 0xffff literal where appropriate. Signed-off-by: Ahmed S. Darwish <darwi@linutronix.de> Signed-off-by: Ingo Molnar <mingo@kernel.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Josh Poimboeuf <jpoimboe@redhat.com> Link: https://lore.kernel.org/r/20250324142042.29010-13-darwi@linutronix.de
-rw-r--r--tools/arch/x86/kcpuid/kcpuid.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/tools/arch/x86/kcpuid/kcpuid.c b/tools/arch/x86/kcpuid/kcpuid.c
index 7790136f04dc9e..1f48de343d4da4 100644
--- a/tools/arch/x86/kcpuid/kcpuid.c
+++ b/tools/arch/x86/kcpuid/kcpuid.c
@@ -71,7 +71,7 @@ enum range_index {
RANGE_EXT = 0x80000000, /* Extended */
};
-#define CPUID_INDEX_MASK 0x80000000
+#define CPUID_INDEX_MASK 0xffff0000
#define CPUID_FUNCTION_MASK (~CPUID_INDEX_MASK)
struct cpuid_range {
@@ -173,7 +173,7 @@ static bool cpuid_store(struct cpuid_range *range, u32 f, int subleaf,
* Cut off vendor-prefix from CPUID function as we're using it as an
* index into ->funcs.
*/
- func = &range->funcs[f & 0xffff];
+ func = &range->funcs[f & CPUID_FUNCTION_MASK];
if (!func->leafs) {
func->leafs = malloc(sizeof(struct subleaf));
@@ -228,7 +228,7 @@ void setup_cpuid_range(struct cpuid_range *range)
cpuid(range->index, max_func, ebx, ecx, edx);
- idx_func = (max_func & 0xffff) + 1;
+ idx_func = (max_func & CPUID_FUNCTION_MASK) + 1;
range->funcs = malloc(sizeof(struct cpuid_func) * idx_func);
if (!range->funcs)
err(EXIT_FAILURE, NULL);
@@ -512,7 +512,7 @@ static inline struct cpuid_func *index_to_func(u32 index)
if (!range)
return NULL;
- func_idx = index & 0xffff;
+ func_idx = index & CPUID_FUNCTION_MASK;
if ((func_idx + 1) > (u32)range->nr)
return NULL;