2001-11-27 00:08:48 +01:00
|
|
|
#ifndef CPUDETECT_H
|
|
|
|
#define CPUDETECT_H
|
2001-10-19 02:40:19 +02:00
|
|
|
|
2001-10-19 15:09:26 +02:00
|
|
|
#define CPUTYPE_I386 3
|
|
|
|
#define CPUTYPE_I486 4
|
|
|
|
#define CPUTYPE_I586 5
|
|
|
|
#define CPUTYPE_I686 6
|
2001-10-19 02:40:19 +02:00
|
|
|
|
2004-10-21 13:55:20 +02:00
|
|
|
#ifdef ARCH_X86_64
|
|
|
|
# define REGa rax
|
|
|
|
# define REGb rbx
|
2006-05-06 03:53:07 +02:00
|
|
|
# define REGBP rbp
|
2004-10-21 13:55:20 +02:00
|
|
|
# define REGSP rsp
|
|
|
|
# define REG_a "rax"
|
|
|
|
# define REG_b "rbx"
|
|
|
|
# define REG_c "rcx"
|
|
|
|
# define REG_d "rdx"
|
|
|
|
# define REG_S "rsi"
|
|
|
|
# define REG_D "rdi"
|
|
|
|
# define REG_SP "rsp"
|
|
|
|
# define REG_BP "rbp"
|
|
|
|
#else
|
|
|
|
# define REGa eax
|
|
|
|
# define REGb ebx
|
2006-05-06 03:53:07 +02:00
|
|
|
# define REGBP ebp
|
2004-10-21 13:55:20 +02:00
|
|
|
# define REGSP esp
|
|
|
|
# define REG_a "eax"
|
|
|
|
# define REG_b "ebx"
|
|
|
|
# define REG_c "ecx"
|
|
|
|
# define REG_d "edx"
|
|
|
|
# define REG_S "esi"
|
|
|
|
# define REG_D "edi"
|
|
|
|
# define REG_SP "esp"
|
|
|
|
# define REG_BP "ebp"
|
|
|
|
#endif
|
|
|
|
|
2001-10-19 02:40:19 +02:00
|
|
|
typedef struct cpucaps_s {
|
|
|
|
int cpuType;
|
2006-05-17 23:10:11 +02:00
|
|
|
int cpuModel;
|
2001-12-09 18:03:04 +01:00
|
|
|
int cpuStepping;
|
2001-10-19 02:40:19 +02:00
|
|
|
int hasMMX;
|
|
|
|
int hasMMX2;
|
|
|
|
int has3DNow;
|
|
|
|
int has3DNowExt;
|
|
|
|
int hasSSE;
|
|
|
|
int hasSSE2;
|
2001-11-27 00:08:48 +01:00
|
|
|
int isX86;
|
2003-01-09 19:39:09 +01:00
|
|
|
unsigned cl_size; /* size of cache line */
|
2003-01-18 20:29:46 +01:00
|
|
|
int hasAltiVec;
|
2003-09-20 01:52:41 +02:00
|
|
|
int hasTSC;
|
2001-10-19 02:40:19 +02:00
|
|
|
} CpuCaps;
|
|
|
|
|
|
|
|
extern CpuCaps gCpuCaps;
|
|
|
|
|
2001-10-20 04:35:31 +02:00
|
|
|
void GetCpuCaps(CpuCaps *caps);
|
2001-10-20 13:16:47 +02:00
|
|
|
|
|
|
|
/* returned value is malloc()'ed so free() it after use */
|
2001-10-20 04:35:31 +02:00
|
|
|
char *GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]);
|
2001-10-19 02:40:19 +02:00
|
|
|
|
2001-11-27 00:08:48 +01:00
|
|
|
#endif /* !CPUDETECT_H */
|
2001-10-20 04:35:31 +02:00
|
|
|
|