/* $Id: x86_cpuinfo.h,v 1.1 2004/05/22 20:59:58 mikpe Exp $
* Copyright (C) 2004 Mikael Pettersson
*/
struct cpuinfo {
unsigned int vendor;
unsigned int signature; /* cpuid[1].eax */
unsigned int features; /* cpuid[1].edx */
};
#define X86_VENDOR_UNKNOWN 0
#define X86_VENDOR_INTEL 1
#define X86_VENDOR_AMD 2
#define X86_VENDOR_CYRIX 3
#define X86_VENDOR_CENTAUR 4
#define X86_FEATURE_TSC 4
#define X86_FEATURE_MSR 5
#define X86_FEATURE_MMX 23
#define cpu_type(cpuinfo) (((cpuinfo)->signature >> 12) & 3)
#define cpu_family(cpuinfo) (((cpuinfo)->signature >> 8) & 0xF)
#define cpu_model(cpuinfo) (((cpuinfo)->signature >> 4) & 0xF)
#define cpu_stepping(cpuinfo) ((cpuinfo)->signature & 0xF)
#define cpu_has(cpuinfo, bit) ((cpuinfo)->features & (1<<(bit)))
extern void identify_cpu(struct cpuinfo*);