mirror of
https://github.com/torvalds/linux.git
synced 2025-04-11 04:53:02 +00:00

The test for the changeabitily of AC and ID EFLAGS is used to distinguish between i386 and i486 processors (AC) and to test for CPUID instruction support (ID). Skip these tests on x86_64 processors as they always supports CPUID. Also change the return type of has_eflag() to bool. Signed-off-by: Uros Bizjak <ubizjak@gmail.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Acked-by: H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Brian Gerst <brgerst@gmail.com> Cc: Nathan Chancellor <nathan@kernel.org> Cc: Nick Desaulniers <ndesaulniers@google.com> Link: https://lore.kernel.org/r/20250307091022.181136-1-ubizjak@gmail.com
28 lines
615 B
C
28 lines
615 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef BOOT_CPUFLAGS_H
|
|
#define BOOT_CPUFLAGS_H
|
|
|
|
#include <asm/cpufeatures.h>
|
|
#include <asm/processor-flags.h>
|
|
|
|
struct cpu_features {
|
|
int level; /* Family, or 64 for x86-64 */
|
|
int family; /* Family, always */
|
|
int model;
|
|
u32 flags[NCAPINTS];
|
|
};
|
|
|
|
extern struct cpu_features cpu;
|
|
extern u32 cpu_vendor[3];
|
|
|
|
#ifdef CONFIG_X86_32
|
|
bool has_eflag(unsigned long mask);
|
|
#else
|
|
static inline bool has_eflag(unsigned long mask) { return true; }
|
|
#endif
|
|
void get_cpuflags(void);
|
|
void cpuid_count(u32 id, u32 count, u32 *a, u32 *b, u32 *c, u32 *d);
|
|
bool has_cpuflag(int flag);
|
|
|
|
#endif
|