#ifndef _MACHINE_CPUID_H_
#define _MACHINE_CPUID_H_
#define CPUID_VID_SIZE 12
#define CPUID_VID_INTEL "GenuineIntel"
#define CPUID_VID_UMC "UMC UMC UMC "
#define CPUID_VID_AMD "AuthenticAMD"
#define CPUID_VID_CYRIX "CyrixInstead"
#define CPUID_VID_NEXTGEN "NexGenDriven"
#define CPUID_FEATURE_FPU 0x00000001
#define CPUID_FEATURE_VME 0x00000002
#define CPUID_FEATURE_IOB 0x00000004
#define CPUID_FEATURE_PSE 0x00000008
#define CPUID_FEATURE_TSC 0x00000010
#define CPUID_FEATURE_MSR 0x00000020
#define CPUID_FEATURE_MCE 0x00000080
#define CPUID_FEATURE_CX8 0x00000100
#define CPUID_FEATURE_APIC 0x00000200
#define CPUID_FEATURE_MTRR 0x00001000
#define CPUID_FEATURE_PGE 0x00002000
#define CPUID_FEATURE_MCA 0x00004000
#define CPUID_FEATURE_CMOV 0x00008000
#define CPUID_TYPE_OEM 0x0
#define CPUID_TYPE_OVERDRIVE 0x1
#define CPUID_TYPE_DUAL 0x2
#define CPUID_TYPE_RESERVED 0x3
#define CPUID_FAMILY_386 0x3
#define CPUID_FAMILY_486 0x4
#define CPUID_FAMILY_P5 0x5
#define CPUID_FAMILY_PPRO 0x6
#define CPUID_MODEL_I386_DX 0x0
#define CPUID_MODEL_I486_DX 0x0
#define CPUID_MODEL_I486_DX_S 0x1
#define CPUID_MODEL_I486_SX 0x2
#define CPUID_MODEL_I486_DX2 0x3
#define CPUID_MODEL_I486_SL 0x4
#define CPUID_MODEL_I486_SX2 0x5
#define CPUID_MODEL_I486_DX2WB 0x7
#define CPUID_MODEL_I486_DX4 0x8
#define CPUID_MODEL_I486_DX4WB 0x9
#define CPUID_MODEL_AM486_DX 0x1
#define CPUID_MODEL_AM486_DX2 0x3
#define CPUID_MODEL_AM486_DX2WB 0x7
#define CPUID_MODEL_AM486_DX4 0x8
#define CPUID_MODEL_AM486_DX4WB 0x9
#define CPUID_MODEL_AM486_5X86 0xE
#define CPUID_MODEL_AM486_5X86WB 0xF
#define CPUID_MODEL_CYRIX5X86 0x9
#define CPUID_MODEL_UMC5SD 0x1
#define CPUID_MODEL_UMC5S 0x2
#define CPUID_MODEL_UMC486_DX2 0x3
#define CPUID_MODEL_UMC486_SX2 0x5
#define CPUID_MODEL_P5A 0x0
#define CPUID_MODEL_P5 0x1
#define CPUID_MODEL_P54 0x2
#define CPUID_MODEL_P24T 0x3
#define CPUID_MODEL_P6 0x1
#define CPUID_MODEL_PII 0x3
#define CPUID_CACHE_SIZE 16
#define CPUID_CACHE_VALID 4
#define CPUID_CACHE_NULL 0x00
#define CPUID_CACHE_ITLB_4K 0x01
#define CPUID_CACHE_ITLB_4M 0x02
#define CPUID_CACHE_DTLB_4K 0x03
#define CPUID_CACHE_DTLB_4M 0x04
#define CPUID_CACHE_ICACHE_8K 0x06
#define CPUID_CACHE_DCACHE_8K 0x0A
#define CPUID_CACHE_UCACHE_128K 0x41
#define CPUID_CACHE_UCACHE_256K 0x42
#define CPUID_CACHE_UCACHE_512K 0x43
#ifndef ASSEMBLER
#include <mach/machine.h>
extern unsigned int cpuid_value;
extern unsigned char cpuid_type;
extern unsigned char cpuid_family;
extern unsigned char cpuid_model;
extern unsigned char cpuid_stepping;
extern unsigned int cpuid_feature;
extern char cpuid_vid[];
extern unsigned char cpuid_cache[];
struct cpuid_product {
unsigned char type;
unsigned char family;
unsigned char model;
unsigned int delay;
unsigned int *frequency;
char *name;
};
struct cpuid_name {
char *name;
struct cpuid_product *product;
unsigned int size;
};
struct cpuid_cache_desc {
unsigned char value;
char *description;
};
extern cpu_type_t cpuid_cputype(int);
extern void cpuid_cpu_display(char *, int);
extern void cpuid_cache_display(char *, int);
#endif
#endif