#include <stdint.h>

typedef struct
{
	unsigned int stepping:4;
	unsigned int model:4;
	unsigned int family:4;
	unsigned int type:2;
	unsigned int u0:2;
	unsigned int emodel:4;
	unsigned int efamily:8;
} cpu_info_t;

typedef struct __attribute__ ((__packed__)) 
{
	unsigned int l;
	unsigned int h;
} cpu_caps_t;

typedef struct __attribute__ ((__packed__))
{
	unsigned int a;
	unsigned int b;
	unsigned int c;
	unsigned int d;
} cpu_psn_t;

#define CAP_FPU 0
#define CAP_VME 1
#define CAP_DE 2
#define CAP_PSE 3
#define CAP_TSC 4
#define CAP_MSR 5
#define CAP_PAE 6
#define CAP_MCE 7
#define CAP_CX8 8
#define CAP_APIC 9
#define CAP_SEP 11
#define CAP_MTRR 12
#define CAP_PGE 13
#define CAP_MCA 14
#define CAP_CMOV 15
#define CAP_PAT 16
#define CAP_PSE36 17
#define CAP_PSN 18
#define CAP_CLFL 19
#define CAP_DTES 21
#define CAP_ACPI 22
#define CAP_MMX 23
#define CAP_FXSR 24
#define CAP_SSE 25
#define CAP_SSE2 26
#define CAP_SS 27
#define CAP_HTT 28
#define CAP_TM1 29
#define CAP_IA64 30
#define CAP_PBE 31
#define CAP_SSE3 32
#define CAP_PCLMUL 33
#define CAP_DTES64 34
#define CAP_MON 35
#define CAP_DSCPL 36
#define CAP_VMX 37
#define CAP_SMX 38
#define CAP_EST 39
#define CAP_TM2 40
#define CAP_SSSE3 41
#define CAP_CID 42
#define CAP_FMA 44
#define CAP_CX16 45
#define CAP_ETPRD 46
#define CAP_PDCM 47
#define CAP_DCA 50
#define CAP_SSE41 51
#define CAP_SSE42 52
#define CAP_X2APIC 53
#define CAP_MOVBE 54
#define CAP_POPCNT 55
#define CAP_AES 57
#define CAP_XSAVE 58
#define CAP_OSXSAVE 59
#define CAP_AVX 60

