メインページ | アルファベット順一覧 | データ構造 | ファイル一覧 | データフィールド | グローバル | 関連ページ

# x86.h

説明を見る。

    00001
    00009 #ifndef DKUTIL_CSTD_X86_H
    00010 #define DKUTIL_CSTD_X86_H
    00011
    00012 #include "os.h"
    00013 #include "define.h"
    00014 #include "stdbool.h"
    00015
    00016 enum edkX86_CPU_type{
    00018     edkcCPU_Legacy=0,
    00019     //intel系
    00020     edkcCPU_MMX=1,
    00021     edkcCPU_MMX2 = 2,
    00022     edkcCPU_SSE=4,
    00023     edkcCPU_SSE2=8,
    00024     //AMD系
    00025     edkcCPU_3DNOW=32,
    00026     edkcCPU_E3DNOW=64,
    00027     edkcCPU_3DNOW_PRO=128,
    00028 };
    00029
    00030 typedef struct dkcstd_CPU_INFO{
    00031     char CPUName[256];
    00032     char CPUType[128];
    00033     unsigned char bFPU;
    00034     unsigned char bTSC;
    00035     unsigned char bCMOV;
    00036     unsigned char bFCMOV;
    00037     unsigned char bCPUID;
    00038     unsigned char bMMX;
    00039     unsigned char bMMX2;
    00040     unsigned char bSSE;
    00041     unsigned char bSSE2;
    00042     unsigned char b3DNOW;
    00043     unsigned char bE3DNOW;
    00044     long TypeID;
    00045     long FamilyID;
    00046     long ModelID;
    00047     long SteppingID;
    00048     long CPUClock;
    00049 }DKCSTD_CPU_INFO;
    00050
    00051 #if 1==DKUTIL_CSTD_MSVC_IASM
    00052
    00053
    00054
    00055
    00056
    00057
    00058
    00060 DKC_EXTERN int WINAPI dkcstd_IsCPUID();
    00061 DKC_EXTERN int WINAPI dkcstd_getCPUID();
    00062
    00064 DKC_EXTERN uint32 WINAPI dkcstd_getX86CPUType();
    00065
    00071
    00072 DKC_EXTERN BOOL WINAPI dkcstd_getX86CPUInfo(DKCSTD_CPU_INFO *dest,int CPUClockCalcTime);
    00073
    00075 DKC_EXTERN uint16 WINAPI dkcstd_getFPUMode();
    00076
    00078 DKC_EXTERN int WINAPI dkcstd_setFPUMode(uint16);
    00079
    00080 DKC_EXTERN void WINAPI dkcstd_getRDTSC(DKC_UINT64_STRUCT *p);
    00081
    00082
    00083 DKC_INLINE DKC_UINT64_STRUCT dkcstd_getRDTSC_Fast()
    00084 {
    00085     DKC_UINT64_STRUCT cy;
    00086     __asm {
    00087     cpuid
    00088     rdtsc
    00089     mov cy.LowPart,  eax
    00090     mov cy.HighPart, edx
    00091     }
    00092     return cy;
    00093 }
    00094
    00095
    00096 #endif
    00097
    00098 #endif //end of include once
    00099