#ifndef _X86INFO_H
#define _X86INFO_H

typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;

#define VENDOR_AMD	1
#define VENDOR_CENTAUR 2
#define VENDOR_CYRIX 3
#define VENDOR_INTEL 4
#define VENDOR_NATSEMI 5
#define VENDOR_RISE 6
#define VENDOR_TRANSMETA 7
#define VENDOR_SIS 8

struct cpudata {
	struct cpudata *next;
	unsigned int number;
	unsigned int vendor;
	unsigned int efamily;
	unsigned int family;
	unsigned int model;
	unsigned int emodel;
	unsigned int stepping;
	unsigned int type;
	unsigned int brand;
	unsigned int cachesize_L1_I, cachesize_L1_D;
	unsigned int cachesize_L2;
	unsigned int cachesize_L3;
	unsigned int cachesize_trace;
	unsigned int maxi, maxei, maxei2;
	char name[80];
	unsigned char connector;
	unsigned int flags_ecx;
	unsigned int flags_edx;
	unsigned int eflags_ecx;
	unsigned int eflags_edx;
	unsigned int MHz;
	char * datasheet_url;
	char * errata_url;
};

#define tuple(c) ((c->family<<8)|(c->model<<4)|(c->stepping))
#define etuple(c) ((c->efamily<<8)|(c->model<<4)|(c->stepping))

#define CONN_UNKNOWN		0
#define CONN_SOCKET_3		1
#define CONN_SOCKET_4		2
#define CONN_SOCKET_5		3
#define CONN_SOCKET_7		4
#define CONN_SOCKET_370		5
#define CONN_SOCKET_370_FCPGA	6
#define CONN_SOCKET_5_7		7
#define CONN_SUPER_SOCKET_7	8
#define CONN_SLOT_A		9
#define CONN_SOCKET_A		10
#define CONN_SOCKET_A_SLOT_A	11
#define CONN_SOCKET_A_OR_SLOT_A	12
#define CONN_SOCKET_57B		13
#define CONN_MOBILE_7		14
#define CONN_SOCKET_8		15
#define CONN_SLOT_1		16
#define CONN_SLOT_2		17
#define CONN_SOCKET_423		18
#define CONN_MMC		19
#define CONN_MMC2		20
#define CONN_BGA474		21
#define CONN_BGA		22
#define CONN_SOCKET_754		23
#define CONN_SOCKET_478		24
#define CONN_SOCKET_603		25
#define CONN_MICROFCBGA		26
#define CONN_SOCKET_939		27
#define CONN_SOCKET_940		28
#define CONN_LGA775		29

extern void cpuid (int, unsigned int, unsigned long *, unsigned long *, unsigned long *, unsigned long *);
extern void cpuid_UP (int, unsigned long *, unsigned long *, unsigned long *, unsigned long *);

extern void Identify_AMD (struct cpudata *cpu);
extern void Identify_Cyrix (struct cpudata *cpu);
extern void Identify_IDT (struct cpudata *cpu);
extern void Identify_Intel (struct cpudata *cpu);
extern void Identify_RiSE (struct cpudata *cpu);
extern void Identify_NatSemi (struct cpudata *cpu);
extern void Identify_SiS (struct cpudata *cpu);

extern void display_AMD_info(struct cpudata *cpu);
extern void display_Cyrix_info(struct cpudata *cpu);
extern void display_IDT_info(struct cpudata *cpu);
extern void display_Intel_info(struct cpudata *cpu);
extern void display_NatSemi_info(struct cpudata *cpu);
extern void display_RiSE_info(struct cpudata *cpu);
extern void display_SiS_info(struct cpudata *cpu);

extern void decode_feature_flags (struct cpudata *cpu);
extern void identify (struct cpudata *cpu);
extern void show_info (struct cpudata *cpu);

extern int read_msr(int cpu, unsigned int idx, unsigned long long *val);
extern void binary(unsigned int n, unsigned long value);
extern void binary32(unsigned long value);
extern void binary64(unsigned long long value);
extern void dumpmsr (int cpunum, unsigned int msr, int size);
extern void dumpmsr_bin (int cpunum, unsigned int msr, int size);

extern void dump_mtrrs (struct cpudata *cpu);

extern void estimate_MHz(struct cpudata *cpu);
extern int HaveCPUID(void);
extern void interpret_eblcr(u32 lo);
extern int issmp(int verb);
extern int enumerate_cpus(void);
extern void get_model_name (struct cpudata *cpu);
extern void decode_connector (unsigned int type);
extern void show_benchmarks (void);

extern int show_bench;
extern int show_bios;
extern int show_bluesmoke;
extern int show_bugs;
extern int show_cacheinfo;
extern int show_connector;
extern int show_eblcr;
extern int verbose;
extern int show_microcode;
extern int show_msr;
extern int show_mtrr;
extern int show_pm;
extern int show_registers;
extern int show_urls;

extern unsigned int nrCPUs;

extern int used_UP;
extern int silent;
extern int user_is_root;

#define X86_FEATURE_MTRR	1<<12

#endif /* _X86INFO_H */


syntax highlighted by Code2HTML, v. 0.9.1