⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cpuid.h

📁 威盛 wince5.0 bsp 包 for x86 系统, 支持 VT8601 等北桥
💻 H
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//

#ifndef _CPUID_H
#define _CPUID_H

#include <pkfuncs.h>

// CPUID bit-field for 32-bit processor signature
typedef union _CPUID {
    DWORD Register;                     // Whole register access
    struct {
        unsigned int Stepping : 4;      // Stepping ID
        unsigned int Model : 4;         // Model number
        unsigned int Family : 4;        // Family code
        unsigned int Type : 2;          // Processor Type
        unsigned int Reserved : 2;      // Reserved field
        unsigned int ExtModel : 4;      // Extended model
        unsigned int ExtFamily : 8;     // Extended family
    } Field;                            // Bit-field access                        
} CPUID;

// Processor signature structure
typedef struct _CPUSIG {
    CPUID CpuId;
    WCHAR ProcessorName[32];
    DWORD InstructionSet;
} CPUSIG;

// AMD processor signature table
CPUSIG AMDTable[] = {
    {0x0400, L"Am486 or Am5x86", 0},
    {0x0500, L"AMD-K5 Model 0", PROCESSOR_FLOATINGPOINT}, 
    {0x0510, L"AMD-K5 Model 1", PROCESSOR_FLOATINGPOINT},
    {0x0520, L"AMD-K5 Model 2", PROCESSOR_FLOATINGPOINT},
    {0x0530, L"AMD-K5 Model 3", PROCESSOR_FLOATINGPOINT},
    {0x0560, L"AMD-K6 Model 6", PROCESSOR_FLOATINGPOINT},
    {0x0570, L"AMD-K6 Model 7", PROCESSOR_FLOATINGPOINT},
    {0x0580, L"AMD-K6-2 Model 8", PROCESSOR_FLOATINGPOINT},
    {0x0590, L"AMD-K6-III Model 8", PROCESSOR_FLOATINGPOINT},
    {0x0610, L"AMD Athlon Model 1", PROCESSOR_FLOATINGPOINT},
    {0x0620, L"AMD Athlon Model 2", PROCESSOR_FLOATINGPOINT},
    {0x0630, L"AMD Duron Model 3", PROCESSOR_FLOATINGPOINT},
    {0x0640, L"AMD Athlon Model 4", PROCESSOR_FLOATINGPOINT},
    {0x0660, L"AMD Athlon Model 6", PROCESSOR_FLOATINGPOINT},
    {0x0670, L"AMD Duron Model 7", PROCESSOR_FLOATINGPOINT}   
};

#define AMD_ENTRIES (sizeof(AMDTable) / sizeof(CPUSIG))
#define AMD_MASK 0x0FF0
#define AMD_VENDOR (L"AuthenticAMD")
#define AMD_NAME (L"AMD Inc.")

// Intel processor signature table
CPUSIG IntelTable[] = {
    {0x0440, L"Intel486 SL", 0},
    {0x0470, L"IntelDX2", PROCESSOR_FLOATINGPOINT},
    {0x0480, L"IntelDX4", PROCESSOR_FLOATINGPOINT},
    {0x1480, L"IntelDX4", PROCESSOR_FLOATINGPOINT},
    {0x0510, L"Pentium", PROCESSOR_FLOATINGPOINT},
    {0x0520, L"Pentium", PROCESSOR_FLOATINGPOINT},
    {0x1510, L"Pentium OverDrive", PROCESSOR_FLOATINGPOINT},
    {0x1520, L"Pentium OverDrive", PROCESSOR_FLOATINGPOINT},
    {0x1530, L"Pentium OverDrive", PROCESSOR_FLOATINGPOINT},
    {0x0540, L"Pentium with MMX", PROCESSOR_FLOATINGPOINT},
    {0x1540, L"Pentium OverDrive with MMX", PROCESSOR_FLOATINGPOINT},
    {0x0610, L"Pentium Pro", PROCESSOR_FLOATINGPOINT},
    {0x0630, L"Pentium II Model 3", PROCESSOR_FLOATINGPOINT},
    {0x1630, L"Pentium II OverDrive", PROCESSOR_FLOATINGPOINT},
    {0x0650, L"Pentium II Model 5", PROCESSOR_FLOATINGPOINT},
    {0x0660, L"Celeron II Model 6", PROCESSOR_FLOATINGPOINT},
    {0x0670, L"Pentium III Model 7", PROCESSOR_FLOATINGPOINT},
    {0x0680, L"Pentium III Model 8", PROCESSOR_FLOATINGPOINT},
    {0x06A0, L"Pentium III Xeon Model A", PROCESSOR_FLOATINGPOINT},
    {0x06B0, L"Pentium III Xeon Model B", PROCESSOR_FLOATINGPOINT},
    {0x0F00, L"Pentium 4", PROCESSOR_FLOATINGPOINT},
    {0x0F10, L"Pentium 4", PROCESSOR_FLOATINGPOINT}
};

#define INTEL_ENTRIES (sizeof(IntelTable) / sizeof(CPUSIG))
#define INTEL_MASK 0x3FF0
#define INTEL_VENDOR (L"GenuineIntel")
#define INTEL_NAME (L"Intel Corp.")

// NSC Geode processor signature table
CPUSIG GeodeTable[] = {
    {0x0540, L"Geode GXm", PROCESSOR_FLOATINGPOINT}   
};

#define GEODE_ENTRIES (sizeof(GeodeTable) / sizeof(CPUSIG))
#define GEODE_MASK 0x0FF0
#define GEODE_VENDOR (L"Geode by AMD")
#define GEODE_NAME AMD_NAME

// VIA/Centaur C3 processor signature table
CPUSIG VIATable[] = {
    {0x0670, L"VIA C3", PROCESSOR_FLOATINGPOINT}   
};

#define VIA_ENTRIES (sizeof(VIATable) / sizeof(CPUSIG))
#define VIA_MASK 0x0FF0
#define VIA_VENDOR (L"CentaurHauls")
#define VIA_NAME (L"VIA Technologies, Inc.")

#endif // _CPUID_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -