X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Futil.h;h=1032520acf2a4f29fd5cd0ce803b715a3aa19746;hb=7bd77c4461410f29819d6eee3d42d2793047ea66;hp=633ccbfcd48db3c336db7fe0ca47df45a3a21661;hpb=e2f48c6667ccc008a4b848b1115a854ca42f2e8b;p=retrobench diff --git a/src/util.h b/src/util.h index 633ccbf..1032520 100644 --- a/src/util.h +++ b/src/util.h @@ -236,4 +236,77 @@ void __inline memset16(void *dest, uint16_t val, int count) } while(0) #endif +struct cpuid_info { + uint32_t maxidx; /* 0: eax */ + char vendor[12]; /* 0: ebx, edx, ecx */ + uint32_t id; /* 1: eax */ + uint32_t rsvd0; /* 1: ebx */ + uint32_t feat; /* 1: edx */ + uint32_t feat2; /* 1: ecx */ +}; + +#define CPUID_STEPPING(id) ((id) & 0xf) +#define CPUID_MODEL(id) (((id) >> 4) & 0xf) +#define CPUID_FAMILY(id) (((id) >> 8) & 0xf) + +#define CPUID_FEAT_FPU 0x00000001 +#define CPUID_FEAT_VME 0x00000002 +#define CPUID_FEAT_DBGEXT 0x00000004 +#define CPUID_FEAT_PSE 0x00000008 +#define CPUID_FEAT_TSC 0x00000010 +#define CPUID_FEAT_MSR 0x00000020 +#define CPUID_FEAT_PAE 0x00000040 +#define CPUID_FEAT_MCE 0x00000080 +#define CPUID_FEAT_CX8 0x00000100 +#define CPUID_FEAT_APIC 0x00000200 +#define CPUID_FEAT_SEP 0x00000800 +#define CPUID_FEAT_MTRR 0x00001000 +#define CPUID_FEAT_PGE 0x00002000 +#define CPUID_FEAT_MCA 0x00004000 +#define CPUID_FEAT_CMOV 0x00008000 +#define CPUID_FEAT_PAT 0x00010000 +#define CPUID_FEAT_PSE36 0x00020000 +#define CPUID_FEAT_PSN 0x00040000 +#define CPUID_FEAT_CLF 0x00080000 +#define CPUID_FEAT_DTES 0x00200000 +#define CPUID_FEAT_ACPI 0x00400000 +#define CPUID_FEAT_MMX 0x00800000 +#define CPUID_FEAT_FXSR 0x01000000 +#define CPUID_FEAT_SSE 0x02000000 +#define CPUID_FEAT_SSE2 0x04000000 +#define CPUID_FEAT_SS 0x08000000 +#define CPUID_FEAT_HTT 0x10000000 +#define CPUID_FEAT_TM1 0x20000000 +#define CPUID_FEAT_IA64 0x40000000 +#define CPUID_FEAT_PBE 0x80000000 + +#define CPUID_FEAT2_SSE3 0x00000001 +#define CPUID_FEAT2_PCLMUL 0x00000002 +#define CPUID_FEAT2_DTES64 0x00000004 +#define CPUID_FEAT2_MONITOR 0x00000008 +#define CPUID_FEAT2_DS_CPL 0x00000010 +#define CPUID_FEAT2_VMX 0x00000020 +#define CPUID_FEAT2_SMX 0x00000040 +#define CPUID_FEAT2_EST 0x00000080 +#define CPUID_FEAT2_TM2 0x00000100 +#define CPUID_FEAT2_SSSE3 0x00000200 +#define CPUID_FEAT2_CID 0x00000400 +#define CPUID_FEAT2_FMA 0x00001000 +#define CPUID_FEAT2_CX16 0x00002000 +#define CPUID_FEAT2_ETPRD 0x00004000 +#define CPUID_FEAT2_PDCM 0x00008000 +#define CPUID_FEAT2_PCIDE 0x00020000 +#define CPUID_FEAT2_DCA 0x00040000 +#define CPUID_FEAT2_SSE41 0x00080000 +#define CPUID_FEAT2_SSE42 0x00100000 +#define CPUID_FEAT2_X2APIC 0x00200000 +#define CPUID_FEAT2_MOVBE 0x00400000 +#define CPUID_FEAT2_POPCNT 0x00800000 +#define CPUID_FEAT2_AES 0x02000000 +#define CPUID_FEAT2_XSAVE 0x04000000 +#define CPUID_FEAT2_OSXSAVE 0x08000000 +#define CPUID_FEAT2_AVX 0x10000000 + +int read_cpuid(struct cpuid_info *info); + #endif /* UTIL_H_ */