Home | History | Annotate | Download | only in Common
      1 /* $NoKeywords */
      2 /**
      3  * @file
      4  *
      5  * MemIscp.h
      6  *
      7  * Contains common Memory Training ISCP-related structures and defines.
      8  *
      9  * @xrefitem bom "File Content Label" "Release Content"
     10  * @e project: FDK
     11  * @e sub-project: UEFI
     12  * @e version: $Revision: 317558 $ @e date: $Date: 2015-04-24 17:20:55 -0700 (Fri, 24 Apr 2015) $
     13  *
     14  */
     15 /*****************************************************************************
     16 *
     17 *  Copyright 2013 - 2016 ADVANCED MICRO DEVICES, INC.  All Rights Reserved.
     18 *
     19 *  This program and the accompanying materials are licensed and made available
     20 *  under the terms and conditions of the BSD License which accompanies this
     21 *  distribution. The full text of the license may be found at
     22 *  http://opensource.org/licenses/bsd-license.php
     23 *
     24 *  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     25 *  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR
     26 *  IMPLIED.
     27 *
     28 ***************************************************************************/
     29 
     30 //#########################################################################
     31 //#########################################################################
     32 //#########################################################################
     33 //        NOTE: This file shared between SCP and UEFI, make sure all     //
     34 //              changes are reflected in both copies.                    //
     35 //#########################################################################
     36 //#########################################################################
     37 //#########################################################################
     38 
     39 #ifndef CPUISCP_H_
     40 #define CPUISCP_H_
     41 
     42 #ifdef __cplusplus
     43   extern "C" {
     44   #endif
     45 
     46 /*----------------------------------------------------------------------------------------
     47  *                             M O D U L E S    U S E D
     48  *----------------------------------------------------------------------------------------
     49  */
     50   #include <ProcessorBind.h>  // Included just so this file can be built into both the RTOS
     51                               // and UEFI without needing separate copies for both build
     52                               // environments.
     53 
     54 
     55 /*----------------------------------------------------------------------------------------
     56  *                  T Y P E D E F S     A N D     S T R U C T U R E S
     57  *----------------------------------------------------------------------------------------
     58  */
     59 
     60   /// Processor ID
     61   typedef struct {
     62     UINT32                   ProcIDMsd;            ///< Processor ID Msd
     63     UINT32                   ProcIDLsd;            ///< Processor ID Lsd
     64   } ISCP_PROC_ID;
     65 
     66   /// Processor Type
     67   typedef enum {
     68     ISCP_CPU_TYPE_OTHER = 1,                       ///< Other
     69     ISCP_CPU_TYPE_UNKNOWN,                         ///< Unknown
     70     ISCP_CPU_TYPE_CENTRAL_PROCESSOR,               ///< Central Processor
     71     ISCP_CPU_TYPE_MATH_COPROCESSOR,                ///< Math Coprocessor
     72     ISCP_CPU_TYPE_DSP_PROCESSOR,                   ///< DSP Processor
     73     ISCP_CPU_TYPE_VIDEO_PROCESSOR                  ///< Video Processor
     74   } ISCP_PROCESSOR_TYPE;
     75 
     76   /// Processor Information - Processor Family.
     77   typedef enum {
     78     ISCP_ProcessorFamilyOther                  = 0x01,  ///< Processor Family - Other
     79     ISCP_ProcessorFamilyUnknown                = 0x02,  ///< Processor Family - Unknown
     80     ISCP_ProcessorFamily8086                   = 0x03,  ///< Processor Family - 8086
     81     ISCP_ProcessorFamily80286                  = 0x04,  ///< Processor Family - 80286
     82     ISCP_ProcessorFamilyIntel386               = 0x05,  ///< Processor Family - Intel 386
     83     ISCP_ProcessorFamilyIntel486               = 0x06,  ///< Processor Family - Intel 486
     84     ISCP_ProcessorFamily8087                   = 0x07,  ///< Processor Family - 8087
     85     ISCP_ProcessorFamily80287                  = 0x08,  ///< Processor Family - 80287
     86     ISCP_ProcessorFamily80387                  = 0x09,  ///< Processor Family - 80387
     87     ISCP_ProcessorFamily80487                  = 0x0A,  ///< Processor Family - 80487
     88     ISCP_ProcessorFamilyPentium                = 0x0B,  ///< Processor Family - Pentium
     89     ISCP_ProcessorFamilyPentiumPro             = 0x0C,  ///< Processor Family - Pentium Pro
     90     ISCP_ProcessorFamilyPentiumII              = 0x0D,  ///< Processor Family - Pentium II
     91     ISCP_ProcessorFamilyPentiumMMX             = 0x0E,  ///< Processor Family - Pentium MMX
     92     ISCP_ProcessorFamilyCeleron                = 0x0F,  ///< Processor Family - Celeron
     93     ISCP_ProcessorFamilyPentiumIIXeon          = 0x10,  ///< Processor Family - Pentium II Xeon
     94     ISCP_ProcessorFamilyPentiumIII             = 0x11,  ///< Processor Family - Pentium III
     95     ISCP_ProcessorFamilyM1                     = 0x12,  ///< Processor Family - M1
     96     ISCP_ProcessorFamilyM2                     = 0x13,  ///< Processor Family - M2
     97     ISCP_ProcessorFamilyIntelCeleronM          = 0x14,  ///< Processor Family - Intel Celeron
     98     ISCP_ProcessorFamilyIntelPentium4Ht        = 0x15,  ///< Processor Family - Intel Pentium 4Ht
     99     ISCP_ProcessorFamilyAmdDuron               = 0x18,  ///< Processor Family - AMD Duron
    100     ISCP_ProcessorFamilyK5                     = 0x19,  ///< Processor Family - K5
    101     ISCP_ProcessorFamilyK6                     = 0x1A,  ///< Processor Family - K6
    102     ISCP_ProcessorFamilyK6_2                   = 0x1B,  ///< Processor Family - K6-2
    103     ISCP_ProcessorFamilyK6_3                   = 0x1C,  ///< Processor Family - K6-3
    104     ISCP_ProcessorFamilyAmdAthlon              = 0x1D,  ///< Processor Family - AMD Athlon
    105     ISCP_ProcessorFamilyAmd29000               = 0x1E,  ///< Processor Family - AMD 29000
    106     ISCP_ProcessorFamilyK6_2Plus               = 0x1F,  ///< Processor Family - K6-2 Plus
    107     ISCP_ProcessorFamilyPowerPC                = 0x20,  ///< Processor Family - Power PC
    108     ISCP_ProcessorFamilyPowerPC601             = 0x21,  ///< Processor Family - Power PC 601
    109     ISCP_ProcessorFamilyPowerPC603             = 0x22,  ///< Processor Family - Power PC 603
    110     ISCP_ProcessorFamilyPowerPC603Plus         = 0x23,  ///< Processor Family - Power PC 603 Plus
    111     ISCP_ProcessorFamilyPowerPC604             = 0x24,  ///< Processor Family - Power PC 604
    112     ISCP_ProcessorFamilyPowerPC620             = 0x25,  ///< Processor Family - Power PC 620
    113     ISCP_ProcessorFamilyPowerPCx704            = 0x26,  ///< Processor Family - Power PC x704
    114     ISCP_ProcessorFamilyPowerPC750             = 0x27,  ///< Processor Family - Power PC 750
    115     ISCP_ProcessorFamilyIntelCoreDuo           = 0x28,  ///< Processor Family - Intel Core Duo
    116     ISCP_ProcessorFamilyIntelCoreDuoMobile     = 0x29,  ///< Processor Family - Intel core Duo Mobile
    117     ISCP_ProcessorFamilyIntelCoreSoloMobile    = 0x2A,  ///< Processor Family - Intel Core Solo Mobile
    118     ISCP_ProcessorFamilyIntelAtom              = 0x2B,  ///< Processor Family - Intel Atom
    119     ISCP_ProcessorFamilyAlpha                  = 0x30,  ///< Processor Family - Alpha
    120     ISCP_ProcessorFamilyAlpha21064             = 0x31,  ///< Processor Family - Alpha 21064
    121     ISCP_ProcessorFamilyAlpha21066             = 0x32,  ///< Processor Family - Alpha 21166
    122     ISCP_ProcessorFamilyAlpha21164             = 0x33,  ///< Processor Family - Alpha 21164
    123     ISCP_ProcessorFamilyAlpha21164PC           = 0x34,  ///< Processor Family - Alpha 21164PC
    124     ISCP_ProcessorFamilyAlpha21164a            = 0x35,  ///< Processor Family - Alpha 21164a
    125     ISCP_ProcessorFamilyAlpha21264             = 0x36,  ///< Processor Family - Alpha 21264
    126     ISCP_ProcessorFamilyAlpha21364             = 0x37,  ///< Processor Family - Alpha 21364
    127     ISCP_ProcessorFamilyAmdTurionIIUltraDualCoreMobileM    = 0x38,  ///< Processor Family - AMD Turion II Ultra Dual Core Mobile M
    128     ISCP_ProcessorFamilyAmdTurionIIDualCoreMobileM         = 0x39,  ///< Processor Family - AMD Turion II Dual Core Mobile M
    129     ISCP_ProcessorFamilyAmdAthlonIIDualCoreM   = 0x3A,  ///< Processor Family - AMD Athlon II Dual Core M
    130     ISCP_ProcessorFamilyAmdOpteron6100Series   = 0x3B,  ///< Processor Family - AMD Opteron 6100 Series
    131     ISCP_ProcessorFamilyAmdOpteron4100Series   = 0x3C,  ///< Processor Family - AMD Opteron 4100 Series
    132     ISCP_ProcessorFamilyAmdOpteron6200Series   = 0x3D,  ///< Processor Family - AMD Opteron 6200 Series
    133     ISCP_ProcessorFamilyAmdOpteron4200Series   = 0x3E,  ///< Processor Family - AMD Opteron 4200 Series
    134     ISCP_ProcessorFamilyAmdFxSeries            = 0x3F,  ///< Processor Family - AMD FX Series
    135     ISCP_ProcessorFamilyMips                   = 0x40,  ///< Processor Family - MIPs
    136     ISCP_ProcessorFamilyMIPSR4000              = 0x41,  ///< Processor Family - MIPs R4000
    137     ISCP_ProcessorFamilyMIPSR4200              = 0x42,  ///< Processor Family - MIPs R4200
    138     ISCP_ProcessorFamilyMIPSR4400              = 0x43,  ///< Processor Family - MIPs R4400
    139     ISCP_ProcessorFamilyMIPSR4600              = 0x44,  ///< Processor Family - MIPs R4600
    140     ISCP_ProcessorFamilyMIPSR10000             = 0x45,  ///< Processor Family - MIPs R10000
    141     ISCP_ProcessorFamilyAmdCSeries             = 0x46,  ///< Processor Family - AMD C Series
    142     ISCP_ProcessorFamilyAmdESeries             = 0x47,  ///< Processor Family - AMD E Series
    143     ISCP_ProcessorFamilyAmdASeries             = 0x48,  ///< Processor Family - AMD A Series
    144     ISCP_ProcessorFamilyAmdGSeries             = 0x49,  ///< Processor Family - AMD G Series
    145     ISCP_ProcessorFamilyAmdZSeries             = 0x4A,  ///< Processor Family - AMD Z Series
    146     ISCP_ProcessorFamilyAmdRSeries             = 0x4B,  ///< Processor Family - AMD R Series
    147     ISCP_ProcessorFamilyAmdOpteron4300         = 0x4C,  ///< Processor Family - AMD Opteron 4300
    148     ISCP_ProcessorFamilyAmdOpteron6300         = 0x4D,  ///< Processor Family - AMD Opteron 6300
    149     ISCP_ProcessorFamilyAmdOpteron3300         = 0x4E,  ///< Processor Family - AMD Opteron 3300
    150     ISCP_ProcessorFamilyAmdFireProSeries       = 0x4F,  ///< Processor Family - AMD Fire Pro Series
    151     ISCP_ProcessorFamilySparc                  = 0x50,  ///< Processor Family - Sparc
    152     ISCP_ProcessorFamilySuperSparc             = 0x51,  ///< Processor Family - Super Sparc
    153     ISCP_ProcessorFamilymicroSparcII           = 0x52,  ///< Processor Family - Sparc II
    154     ISCP_ProcessorFamilymicroSparcIIep         = 0x53,  ///< Processor Family - Sparc IIep
    155     ISCP_ProcessorFamilyUltraSparc             = 0x54,  ///< Processor Family - Ultra Sparc
    156     ISCP_ProcessorFamilyUltraSparcII           = 0x55,  ///< Processor Family - Ultra Sparc II
    157     ISCP_ProcessorFamilyUltraSparcIii          = 0x56,  ///< Processor Family - Ultra Sparc Iii
    158     ISCP_ProcessorFamilyUltraSparcIII          = 0x57,  ///< Processor Family - Ultra Sparc III
    159     ISCP_ProcessorFamilyUltraSparcIIIi         = 0x58,  ///< Processor Family - Ultra Sparc IIIi
    160     ISCP_ProcessorFamily68040                  = 0x60,  ///< Processor Family - 68040
    161     ISCP_ProcessorFamily68xxx                  = 0x61,  ///< Processor Family - 68xxx
    162     ISCP_ProcessorFamily68000                  = 0x62,  ///< Processor Family - 68000
    163     ISCP_ProcessorFamily68010                  = 0x63,  ///< Processor Family - 68010
    164     ISCP_ProcessorFamily68020                  = 0x64,  ///< Processor Family - 68020
    165     ISCP_ProcessorFamily68030                  = 0x65,  ///< Processor Family - 68030
    166     ISCP_ProcessorFamilyAmdOpteronASeries      = 0x69,  ///< Processor Family - AMD Opteron A Series
    167     ISCP_ProcessorFamilyHobbit                 = 0x70,  ///< Processor Family - Hobbit
    168     ISCP_ProcessorFamilyCrusoeTM5000           = 0x78,  ///< Processor Family - Crusoe TM5000
    169     ISCP_ProcessorFamilyCrusoeTM3000           = 0x79,  ///< Processor Family - Crusoe TM3000
    170     ISCP_ProcessorFamilyEfficeonTM8000         = 0x7A,  ///< Processor Family - Efficeon TM8000
    171     ISCP_ProcessorFamilyWeitek                 = 0x80,  ///< Processor Family - Weitek
    172     ISCP_ProcessorFamilyItanium                = 0x82,  ///< Processor Family - Itanium
    173     ISCP_ProcessorFamilyAmdAthlon64            = 0x83,  ///< Processor Family - AMD Athlon64
    174     ISCP_ProcessorFamilyAmdOpteron             = 0x84,  ///< Processor Family - AMD Opeteron
    175     ISCP_ProcessorFamilyAmdSempron             = 0x85,  ///< Processor Family - AMD Sempron
    176     ISCP_ProcessorFamilyAmdTurion64Mobile      = 0x86,  ///< Processor Family - AMD Turion 64 Modbile
    177     ISCP_ProcessorFamilyDualCoreAmdOpteron     = 0x87,  ///< Processor Family - AMD Dual Core Opteron
    178     ISCP_ProcessorFamilyAmdAthlon64X2DualCore  = 0x88,  ///< Processor Family - AMD Athlon 64 X2 Dual Core
    179     ISCP_ProcessorFamilyAmdTurion64X2Mobile    = 0x89,  ///< Processor Family - AMD Turion 64 X2 Mobile
    180     ISCP_ProcessorFamilyQuadCoreAmdOpteron     = 0x8A,  ///< Processor Family - AMD Quad Core Opteron
    181     ISCP_ProcessorFamilyThirdGenerationAmdOpteron = 0x8B,  ///< Processor Family - AMD 3rd Generation Opteron
    182     ISCP_ProcessorFamilyAmdPhenomFxQuadCore    = 0x8C,  ///< Processor Family - AMD Phenom FX Quad Core
    183     ISCP_ProcessorFamilyAmdPhenomX4QuadCore    = 0x8D,  ///< Processor Family - AMD Phenom X4 Quad Core
    184     ISCP_ProcessorFamilyAmdPhenomX2DualCore    = 0x8E,  ///< Processor Family - AMD Phenom X2 Quad Core
    185     ISCP_ProcessorFamilyAmdAthlonX2DualCore    = 0x8F,  ///< Processor Family - AMD Athlon X2 Dual Core
    186     ISCP_ProcessorFamilyPARISC                 = 0x90,  ///< Processor Family - PARISC
    187     ISCP_ProcessorFamilyPaRisc8500             = 0x91,  ///< Processor Family - PARISC 8500
    188     ISCP_ProcessorFamilyPaRisc8000             = 0x92,  ///< Processor Family - PARISC 8000
    189     ISCP_ProcessorFamilyPaRisc7300LC           = 0x93,  ///< Processor Family - PARISC 7300LC
    190     ISCP_ProcessorFamilyPaRisc7200             = 0x94,  ///< Processor Family - PARISC 7200
    191     ISCP_ProcessorFamilyPaRisc7100LC           = 0x95,  ///< Processor Family - PARISC 7100LC
    192     ISCP_ProcessorFamilyPaRisc7100             = 0x96,  ///< Processor Family - PARISC 7100
    193     ISCP_ProcessorFamilyV30                    = 0xA0,  ///< Processor Family - V30
    194     ISCP_ProcessorFamilyQuadCoreIntelXeon3200Series  = 0xA1,  ///< Processor Family - Intel Quad Core Xeon 3200 Series
    195     ISCP_ProcessorFamilyDualCoreIntelXeon3000Series  = 0xA2,  ///< Processor Family - Intel Dual Core Xeon 3000 Series
    196     ISCP_ProcessorFamilyQuadCoreIntelXeon5300Series  = 0xA3,  ///< Processor Family - Intel Quad Core Xeon 5300 Series
    197     ISCP_ProcessorFamilyDualCoreIntelXeon5100Series  = 0xA4,  ///< Processor Family - Intel Dual Core Xeon 5100 Series
    198     ISCP_ProcessorFamilyDualCoreIntelXeon5000Series  = 0xA5,  ///< Processor Family - Intel Dual Core Xeon 5000 Series
    199     ISCP_ProcessorFamilyDualCoreIntelXeonLV          = 0xA6,  ///< Processor Family - Intel Dual Core Xeon LV
    200     ISCP_ProcessorFamilyDualCoreIntelXeonULV         = 0xA7,  ///< Processor Family - Intel Dual Core Xeon ULV
    201     ISCP_ProcessorFamilyDualCoreIntelXeon7100Series  = 0xA8,  ///< Processor Family - Intel Quad Core Xeon 7100 Series
    202     ISCP_ProcessorFamilyQuadCoreIntelXeon5400Series  = 0xA9,  ///< Processor Family - Intel Quad Core Xeon 5400 Series
    203     ISCP_ProcessorFamilyQuadCoreIntelXeon            = 0xAA,  ///< Processor Family - Intel Quad Core Xeon
    204     ISCP_ProcessorFamilyDualCoreIntelXeon5200Series  = 0xAB,  ///< Processor Family - Intel Dual Core Xeon 5200 Series
    205     ISCP_ProcessorFamilyDualCoreIntelXeon7200Series  = 0xAC,  ///< Processor Family - Intel Dual Core Xeon 7200 Series
    206     ISCP_ProcessorFamilyQuadCoreIntelXeon7300Series  = 0xAD,  ///< Processor Family - Intel Quad Core Xeon 7300 Series
    207     ISCP_ProcessorFamilyQuadCoreIntelXeon7400Series  = 0xAE,  ///< Processor Family - Intel Quad Core Xeon 7400 Series
    208     ISCP_ProcessorFamilyMultiCoreIntelXeon7400Series = 0xAF,  ///< Processor Family - Intel Multi-Core Xeon 7400 Series
    209     ISCP_ProcessorFamilyPentiumIIIXeon               = 0xB0,  ///< Processor Family - Intel Pentium III Xeon
    210     ISCP_ProcessorFamilyPentiumIIISpeedStep          = 0xB1,  ///< Processor Family - Intel Pentium III Speed Step
    211     ISCP_ProcessorFamilyPentium4                     = 0xB2,  ///< Processor Family - Pentium 4
    212     ISCP_ProcessorFamilyIntelXeon                    = 0xB3,  ///< Processor Family - Intel Xeon
    213     ISCP_ProcessorFamilyAS400                        = 0xB4,  ///< Processor Family - AS400
    214     ISCP_ProcessorFamilyIntelXeonMP                  = 0xB5,  ///< Processor Family - Intel Xeon MP
    215     ISCP_ProcessorFamilyAMDAthlonXP                  = 0xB6,  ///< Processor Family - AMD Athlon XP
    216     ISCP_ProcessorFamilyAMDAthlonMP                  = 0xB7,  ///< Processor Family - AMD Athlon MP
    217     ISCP_ProcessorFamilyIntelItanium2                = 0xB8,  ///< Processor Family - Intel Itanum2
    218     ISCP_ProcessorFamilyIntelPentiumM                = 0xB9,  ///< Processor Family - Intel Pentium M
    219     ISCP_ProcessorFamilyIntelCeleronD                = 0xBA,  ///< Processor Family - Intel Celeron D
    220     ISCP_ProcessorFamilyIntelPentiumD                = 0xBB,  ///< Processor Family - Intel Pentium D
    221     ISCP_ProcessorFamilyIntelPentiumEx               = 0xBC,  ///< Processor Family - Intel pentium Ex
    222     ISCP_ProcessorFamilyIntelCoreSolo                = 0xBD,  ///< Processor Family - Intel Core Solo
    223     ISCP_ProcessorFamilyReserved                     = 0xBE,  ///< Processor Family - Reserved
    224     ISCP_ProcessorFamilyIntelCore2                   = 0xBF,  ///< Processor Family - Intel Core 2
    225     ISCP_ProcessorFamilyIntelCore2Solo               = 0xC0,  ///< Processor Family - Intel Core 2 Solo
    226     ISCP_ProcessorFamilyIntelCore2Extreme            = 0xC1,  ///< Processor Family - Intel Core 2 Extreme
    227     ISCP_ProcessorFamilyIntelCore2Quad               = 0xC2,  ///< Processor Family - Intel Core 2 Quad
    228     ISCP_ProcessorFamilyIntelCore2ExtremeMobile      = 0xC3,  ///< Processor Family - Intel Core 2 Extremem Mobile
    229     ISCP_ProcessorFamilyIntelCore2DuoMobile          = 0xC4,  ///< Processor Family - Intel core 2 Duo Mobile
    230     ISCP_ProcessorFamilyIntelCore2SoloMobile         = 0xC5,  ///< Processor Family - Intel Core 2 Solo Mobile
    231     ISCP_ProcessorFamilyIntelCoreI7                  = 0xC6,  ///< Processor Family - Intel Core I7
    232     ISCP_ProcessorFamilyDualCoreIntelCeleron         = 0xC7,  ///< Processor Family - Intel Dual Core Celeron
    233     ISCP_ProcessorFamilyIBM390                       = 0xC8,  ///< Processor Family - IBM 390
    234     ISCP_ProcessorFamilyG4                           = 0xC9,  ///< Processor Family - G4
    235     ISCP_ProcessorFamilyG5                           = 0xCA,  ///< Processor Family - G5
    236     ISCP_ProcessorFamilyG6                           = 0xCB,  ///< Processor Family - G6
    237     ISCP_ProcessorFamilyzArchitecture                = 0xCC,  ///< Processor Family - zArchitecture
    238     ISCP_ProcessorFamilyIntelCoreI5                  = 0xCD,  ///< Processor Family - Intel Core I5
    239     ISCP_ProcessorFamilyIntelCoreI3                  = 0xCE,  ///< Processor Family - Intel Core I3
    240     ISCP_ProcessorFamilyViaC7M                       = 0xD2,  ///< Processor Family - Via C7M
    241     ISCP_ProcessorFamilyViaC7D                       = 0xD3,  ///< Processor Family - Via C7D
    242     ISCP_ProcessorFamilyViaC7                        = 0xD4,  ///< Processor Family - Via C7
    243     ISCP_ProcessorFamilyViaEden                      = 0xD5,  ///< Processor Family - Via Eden
    244     ISCP_ProcessorFamilyMultiCoreIntelXeon           = 0xD6,  ///< Processor Family - Intel Multi-core Xeon
    245     ISCP_ProcessorFamilyDualCoreIntelXeon3Series     = 0xD7,  ///< Processor Family - Intel Dual-core Xeon 3-Series
    246     ISCP_ProcessorFamilyQuadCoreIntelXeon3Series     = 0xD8,  ///< Processor Family - Intel Quad-core Xeon 3-Series
    247     ISCP_ProcessorFamilyViaNano                      = 0xD9,  ///< Processor Family - Via Nano
    248     ISCP_ProcessorFamilyDualCoreIntelXeon5Series     = 0xDA,  ///< Processor Family - Intel Dual-core Xeon 5-Series
    249     ISCP_ProcessorFamilyQuadCoreIntelXeon5Series     = 0xDB,  ///< Processor Family - Intel Quad-core Xeon 5-Series
    250     ISCP_ProcessorFamilyDualCoreIntelXeon7Series     = 0xDD,  ///< Processor Family - Intel Dual-core Xeon 7-Series
    251     ISCP_ProcessorFamilyQuadCoreIntelXeon7Series     = 0xDE,  ///< Processor Family - Intel Quad-core Xeon 7-Series
    252     ISCP_ProcessorFamilyMultiCoreIntelXeon7Series    = 0xDF,  ///< Processor Family - Intel Multi-core Xeon 7-Series
    253     ISCP_ProcessorFamilyMultiCoreIntelXeon3400Series = 0xE0,  ///< Processor Family - Intel Multi-core Xeon 3400-Series
    254     ISCP_ProcessorFamilyAmdOpteron3000Series         = 0xE4,  ///< Processor Family - AMD Opteron 3000 Series
    255     ISCP_ProcessorFamilyAmdSempronII                 = 0xE5,  ///< Processor Family - AMD Sempron II
    256     ISCP_ProcessorFamilyEmbeddedAmdOpteronQuadCore   = 0xE6,  ///< Processor Family - AMD Embedded Opteron Quad Core
    257     ISCP_ProcessorFamilyAmdPhenomTripleCore          = 0xE7,  ///< Processor Family - AMD Phonon Triple Core
    258     ISCP_ProcessorFamilyAmdTurionUltraDualCoreMobile = 0xE8,  ///< Processor Family - AMD Turion Ultra Dual Core Mobile
    259     ISCP_ProcessorFamilyAmdTurionDualCoreMobile      = 0xE9,  ///< Processor Family - AMD Turion Dual Core Mobile
    260     ISCP_ProcessorFamilyAmdAthlonDualCore            = 0xEA,  ///< Processor Family - AMD Turion Dual Core Mobile
    261     ISCP_ProcessorFamilyAmdSempronSI                 = 0xEB,  ///< Processor Family - AMD Sempron SI
    262     ISCP_ProcessorFamilyAmdPhenomII                  = 0xEC,  ///< Processor Family - AMD Phenon II
    263     ISCP_ProcessorFamilyAmdAthlonII                  = 0xED,  ///< Processor Family - AMD Athlon II
    264     ISCP_ProcessorFamilySixCoreAmdOpteron            = 0xEE,  ///< Processor Family - AMD 6-Core Opteron
    265     ISCP_ProcessorFamilyAmdSempronM                  = 0xEF,  ///< Processor Family - AMD Sempon M
    266     ISCP_ProcessorFamilyi860                         = 0xFA,  ///< Processor Family - i860
    267     ISCP_ProcessorFamilyi960                         = 0xFB,  ///< Processor Family - i960
    268     ISCP_ProcessorFamilyIndicatorFamily2             = 0xFE,  ///< Processor Family - Indicator Family 2
    269     ISCP_ProcessorFamilyReserved1                    = 0xFF   ///< Processor Family - Reserved
    270   } ISCP_PROCESSOR_FAMILY_DATA;
    271 
    272   /// Processor Information2 - Processor Family2.
    273   typedef enum {
    274     ISCP_ProcessorFamilySH3                   = 0x0104,  ///< ProcessorFamily - SH3
    275     ISCP_ProcessorFamilySH4                   = 0x0105,  ///< ProcessorFamily - SH4
    276     ISCP_ProcessorFamilyARM                   = 0x0118,  ///< ProcessorFamily - ARM
    277     ISCP_ProcessorFamilyStrongARM             = 0x0119,  ///< ProcessorFamily - Strong ARM
    278     ISCP_ProcessorFamily6x86                  = 0x012C,  ///< ProcessorFamily - x86
    279     ISCP_ProcessorFamilyMediaGX               = 0x012D,  ///< ProcessorFamily - Media GX
    280     ISCP_ProcessorFamilyMII                   = 0x012E,  ///< ProcessorFamily - MII
    281     ISCP_ProcessorFamilyWinChip               = 0x0140,  ///< ProcessorFamily - WinChip
    282     ISCP_ProcessorFamilyDSP                   = 0x015E,  ///< ProcessorFamily - DSP
    283     ISCP_ProcessorFamilyVideoProcessor        = 0x01F4   ///< ProcessorFamily - Video Processor
    284   } ISCP_PROCESSOR_FAMILY2_DATA;
    285 
    286   /// Processor Information - Processor Upgrade.
    287   typedef enum {
    288     ISCP_ProcessorUpgradeOther         = 0x01,          ///< Processor Upgrade - Other
    289     ISCP_ProcessorUpgradeUnknown       = 0x02,          ///< Processor Upgrade - Unknown
    290     ISCP_ProcessorUpgradeDaughterBoard = 0x03,          ///< Processor Upgrade - Daughter Board
    291     ISCP_ProcessorUpgradeZIFSocket     = 0x04,          ///< Processor Upgrade - ZIF Socket
    292     ISCP_ProcessorUpgradePiggyBack     = 0x05,          ///< Processor Upgrade - Piggyback
    293     ISCP_ProcessorUpgradeNone          = 0x06,          ///< Processor Upgrade - None
    294     ISCP_ProcessorUpgradeLIFSocket     = 0x07,          ///< Processor Upgrade - LIF Socket
    295     ISCP_ProcessorUpgradeSlot1         = 0x08,          ///< Processor Upgrade - Slot 1
    296     ISCP_ProcessorUpgradeSlot2         = 0x09,          ///< Processor Upgrade - Slot 2
    297     ISCP_ProcessorUpgrade370PinSocket  = 0x0A,          ///< Processor Upgrade - 370 Pin Socket
    298     ISCP_ProcessorUpgradeSlotA         = 0x0B,          ///< Processor Upgrade - Slot A
    299     ISCP_ProcessorUpgradeSlotM         = 0x0C,          ///< Processor Upgrade - Slot M
    300     ISCP_ProcessorUpgradeSocket423     = 0x0D,          ///< Processor Upgrade - Socket 423
    301     ISCP_ProcessorUpgradeSocketA       = 0x0E,          ///< Processor Upgrade - Socket A
    302     ISCP_ProcessorUpgradeSocket478     = 0x0F,          ///< Processor Upgrade - Socket 478
    303     ISCP_ProcessorUpgradeSocket754     = 0x10,          ///< Processor Upgrade - Socket 754
    304     ISCP_ProcessorUpgradeSocket940     = 0x11,          ///< Processor Upgrade - Socket 940
    305     ISCP_ProcessorUpgradeSocket939     = 0x12,          ///< Processor Upgrade - Socket 939
    306     ISCP_ProcessorUpgradeSocketmPGA604 = 0x13,          ///< Processor Upgrade - PGA 604
    307     ISCP_ProcessorUpgradeSocketLGA771  = 0x14,          ///< Processor Upgrade - LGA 771
    308     ISCP_ProcessorUpgradeSocketLGA775  = 0x15,          ///< Processor Upgrade - LGA 775
    309     ISCP_ProcessorUpgradeSocketS1      = 0x16,          ///< Processor Upgrade - S1
    310     ISCP_ProcessorUpgradeAM2           = 0x17,          ///< Processor Upgrade - AM2
    311     ISCP_ProcessorUpgradeF1207         = 0x18,          ///< Processor Upgrade - F1207
    312     ISCP_ProcessorSocketLGA1366        = 0x19,          ///< Processor Upgrade - LGA 1366
    313     ISCP_ProcessorUpgradeSocketG34     = 0x1A,          ///< Processor Upgrade - G34
    314     ISCP_ProcessorUpgradeSocketAM3     = 0x1B,          ///< Processor Upgrade - AM3
    315     ISCP_ProcessorUpgradeSocketC32     = 0x1C,          ///< Processor Upgrade - C32
    316     ISCP_ProcessorUpgradeSocketLGA1156 = 0x1D,          ///< Processor Upgrade - LGA 1156
    317     ISCP_ProcessorUpgradeSocketLGA1567 = 0x1E,          ///< Processor Upgrade - LGA 1567
    318     ISCP_ProcessorUpgradeSocketPGA988A = 0x1F,          ///< Processor Upgrade - PGA 988A
    319     ISCP_ProcessorUpgradeSocketBGA1288 = 0x20,          ///< Processor Upgrade - PGA 1288
    320     ISCP_ProcessorUpgradeSocketrPGA988B = 0x21,         ///< Processor Upgrade - PGA 988B
    321     ISCP_ProcessorUpgradeSocketBGA1023 = 0x22,          ///< Processor Upgrade - BGA 1023
    322     ISCP_ProcessorUpgradeSocketBGA1224 = 0x23,          ///< Processor Upgrade - BGA 1224
    323     ISCP_ProcessorUpgradeSocketLGA1155 = 0x24,          ///< Processor Upgrade - LGA 1155
    324     ISCP_ProcessorUpgradeSocketLGA1356 = 0x25,          ///< Processor Upgrade - LGA 1356
    325     ISCP_ProcessorUpgradeSocketLGA2011 = 0x26,          ///< Processor Upgrade - LGA 2011
    326     ISCP_ProcessorUpgradeSocketFS1     = 0x27,          ///< Processor Upgrade - FS1
    327     ISCP_ProcessorUpgradeSocketFS2     = 0x28,          ///< Processor Upgrade - FS2
    328     ISCP_ProcessorUpgradeSocketFM1     = 0x29,          ///< Processor Upgrade - FM1
    329     ISCP_ProcessorUpgradeSocketFM2     = 0x2A,          ///< Processor Upgrade - FM2
    330     ISCP_ProcessorUpgradeSocketLGA2011_3 = 0x2B,        ///< Processor Upgrade - LGA 2011-3
    331     ISCP_ProcessorUpgradeSocketLGA1356_3 = 0x2C         ///< Processor Upgrade - LGA 1356-3
    332   } ISCP_PROCESSOR_UPGRADE;
    333 
    334   /// CPU Information - Characteristics.
    335   typedef struct {
    336     UINT16  Reserved0                 :1;          ///< CPU Information - Reserved
    337     UINT16  Unknown                   :1;          ///< CPU Information - Unknown
    338     UINT16  Capable64Bit              :1;          ///< CPU Information - Capable 64-Bit
    339     UINT16  MultiCore                 :1;          ///< CPU Information - Multi-core
    340     UINT16  HardwareThread            :1;          ///< CPU Information - Hardware Thread
    341     UINT16  ExecuteProtection         :1;          ///< CPU Information - Execute Protection
    342     UINT16  EnhancedVirtualization    :1;          ///< CPU Information - Enhanced Virtualization
    343     UINT16  PowerPerformanceControl   :1;          ///< CPU Information - Power Performance Control
    344     UINT16  Reserved8_15              :8;          ///< CPU Information - Reserved
    345   } ISCP_PROCESSOR_CHARACTERISTICS;
    346 
    347   /// CPU Information - CPU Status.
    348   typedef enum {
    349     ISCP_CPU_STATUS_UNKNOWN = 0,                     ///< CPU Status - Unknown
    350     ISCP_CPU_STATUS_ENABLED,                         ///< CPU Status - Enabled
    351     ISCP_CPU_STATUS_DISABLED_BY_USER,                ///< CPU Status - Disabled by user
    352     ISCP_CPU_STATUS_DISABLED_BY_BIOS,                ///< CPU Status - Disabled by BIOS
    353     ISCP_CPU_STATUS_IDLE,                            ///< CPU Status - Idle
    354     ISCP_CPU_STATUS_RESERVED_5,                      ///< CPU Status - Reserved
    355     ISCP_CPU_STATUS_RESERVED_6,                      ///< CPU Status - Reserved
    356     ISCP_CPU_STATUS_OTHER                            ///< CPU Status - Other
    357   } ISCP_CPU_STATUS;
    358 
    359 
    360   /// CPU Information - Status.
    361   typedef struct {
    362     UINT16  CpuStatus                 :3;            ///< CPU Status
    363     UINT16  Reserved3_5               :3;            ///< Reserved Bits[5:3]
    364     UINT16  CpuSocketPopulated        :1;            ///< CPU Socket Populated
    365     UINT16  Reserved7_15              :9;            ///< Reserved Bits[15:9]
    366   } PROCESSOR_STATUS;
    367 
    368   /// Cache Information - Operation Mode.
    369   typedef enum {
    370     ISCP_CACHE_OPERATION_MODE_WRITE_THROUGH = 0,          ///< Cache Operation Mode Write Through
    371     ISCP_CACHE_OPERATION_MODE_WRITE_BACK,                 ///< Cache Operation Mode Write Back
    372     ISCP_CACHE_OPERATION_MODE_VARIES_WITH_MEMORY_ADDRESS, ///< Cache Operation Mode Varies with Memory Address
    373     ISCP_CACHE_OPERATION_MODE_UNKNOWN,                    ///< Cache Operation Mode Unknown
    374   } ISCP_CACHE_OPERATION_MODE;
    375 
    376   /// Cache Information - Location.
    377   typedef enum {
    378     ISCP_CACHE_LOCATION_INTERNAL = 0,               ///< Cache Location Internal
    379     ISCP_CACHE_LOCATION_EXTERNAL,                   ///< Cache Location External
    380     ISCP_CACHE_LOCATION_RESERVED,                   ///< Cache Location Reserved
    381     ISCP_CACHE_LOCATION_UNKNOWN,                    ///< Cache Location Unknown
    382   } ISCP_CACHE_LOCATION;
    383 
    384   /// Cache Information - Level.
    385   typedef enum {
    386     ISCP_CACHE_LEVEL_1 = 0,                         ///< Cache Level 1
    387     ISCP_CACHE_LEVEL_2,                             ///< Cache Level 2
    388     ISCP_CACHE_LEVEL_3,                             ///< Cache Level 3
    389     ISCP_CACHE_LEVEL_4,                             ///< Cache Level 4
    390   } ISCP_CACHE_LEVEL;
    391 
    392   /// Cache Information - Configuration.
    393   typedef struct {
    394     UINT16  CacheLevel                :3;            ///< Cache Level
    395     UINT16  CacheSocketd              :1;            ///< Cache Socket ID
    396     UINT16  Reserved_4                :1;            ///< Cache Reserved
    397     UINT16  Location                  :2;            ///< Cache Location
    398     UINT16  EnabledDisabled           :1;            ///< Cache Enabled / Disabled
    399     UINT16  OperationMode             :2;            ///< Operation Mode
    400     UINT16  Reserved10_15             :6;            ///< Cache Reserved
    401   } ISCP_CACHE_CONFIGURATION;
    402 
    403   /// Cache Information - SRAM Type.
    404   typedef struct {
    405     UINT16  Other                :1;                 ///< SRAM Type - Other
    406     UINT16  Unknown              :1;                 ///< SRAM Type - Unknown
    407     UINT16  NonBurst             :1;                 ///< SRAM Type - NonBurst
    408     UINT16  Burst                :1;                 ///< SRAM Type - Burst
    409     UINT16  PipelineBurst        :1;                 ///< SRAM Type - Pipeline Burst
    410     UINT16  Synchronous          :1;                 ///< SRAM Type - Synchronous
    411     UINT16  Asynchronous         :1;                 ///< SRAM Type - Asynchronous
    412     UINT16  Reserved7_15         :9;                 ///< SRAM Type - Reserved
    413   } ISCP_CACHE_SRAM_TYPE;
    414 
    415   /// Cache Information - Error Correction Type.
    416   typedef enum {
    417     ISCP_ECC_TYPE_OTHER = 1,                         ///< ECC Type - Other
    418     ISCP_ECC_TYPE_UNKNOWN,                           ///< ECC Type - Unknown
    419     ISCP_ECC_TYPE_NONE,                              ///< ECC Type - None
    420     ISCP_ECC_TYPE_PARITY,                            ///< ECC Type - Parity
    421     ISCP_ECC_TYPE_SINGLE_BIT,                        ///< ECC Type - Single-Bit
    422     ISCP_ECC_TYPE_MULTI_BIT                          ///< ECC Type - Multi-Bit
    423   } ISCP_CACHE_ECC_TYPE;
    424 
    425   /// Cache Information - System Cache Type.
    426   typedef enum {
    427     ISCP_SYSTEM_CACHE_TYPE_OTHER  = 1,               ///< System Cache Type - Other
    428     ISCP_SYSTEM_CACHE_TYPE_UNKNOWN,                  ///< System Cache Type - Unknown
    429     ISCP_SYSTEM_CACHE_TYPE_INSTRUCTION,              ///< System Cache Type - Instruction
    430     ISCP_SYSTEM_CACHE_TYPE_DATA,                     ///< System Cache Type - Data
    431     ISCP_SYSTEM_CACHE_TYPE_UNIFIED                   ///< System Cache Type - Unified
    432   } ISCP_SYSTEM_CACHE_TYPE;
    433 
    434   /// Cache Information - Associativity.
    435   typedef enum {
    436     ISCP_CACHE_ASSOCIATIVITY_OTHER = 1,                 ///< Cache Associativity - Other
    437     ISCP_CACHE_ASSOCIATIVITY_UNKNOWN,                   ///< Cache Associativity - Unknown
    438     ISCP_CACHE_ASSOCIATIVITY_DIRECT_MAPPED,             ///< Cache Associativity - Direct Mapped
    439     ISCP_CACHE_ASSOCIATIVITY_2_WAY_SET_ASSOCIATIVE,     ///< Cache Associativity - 2-way Set Assciative
    440     ISCP_CACHE_ASSOCIATIVITY_4_WAY_SET_ASSOCIATIVE,     ///< Cache Associativity - 4-way Set Assciative
    441     ISCP_CACHE_ASSOCIATIVITY_FULLY_ASSOCIATIVE,         ///< Cache Associativity - Fully Assciative
    442     ISCP_CACHE_ASSOCIATIVITY_8_WAY_SET_ASSOCIATIVE,     ///< Cache Associativity - 8-way Set Assciative
    443     ISCP_CACHE_ASSOCIATIVITY_16_WAY_SET_ASSOCIATIVE,    ///< Cache Associativity - 16-way Set Assciative
    444     ISCP_CACHE_ASSOCIATIVITY_12_WAY_SET_ASSOCIATIVE,    ///< Cache Associativity - 12-way Set Assciative
    445     ISCP_CACHE_ASSOCIATIVITY_24_WAY_SET_ASSOCIATIVE,    ///< Cache Associativity - 24-way Set Assciative
    446     ISCP_CACHE_ASSOCIATIVITY_32_WAY_SET_ASSOCIATIVE,    ///< Cache Associativity - 32-way Set Assciative
    447     ISCP_CACHE_ASSOCIATIVITY_48_WAY_SET_ASSOCIATIVE,    ///< Cache Associativity - 48-way Set Assciative
    448     ISCP_CACHE_ASSOCIATIVITY_64_WAY_SET_ASSOCIATIVE,    ///< Cache Associativity - 64-way Set Assciative
    449     ISCP_CACHE_ASSOCIATIVITY_20_WAY_SET_ASSOCIATIVE     ///< Cache Associativity - 20-way Set Assciative
    450   } ISCP_CACHE_ASSOCIATIVITY;
    451 
    452   /// DMI TYPE 4 - CPU Information
    453   typedef struct {
    454     UINT16                    T4ProcType;               ///< Processor Type
    455     UINT16                    T4ProcFamily;             ///< Processor Family
    456     ISCP_PROC_ID              T4ProcId;                 ///< Processor Id
    457     UINT16                    T4Voltage;                ///< Processor Voltage
    458     UINT16                    T4ExternalClock;          ///< Processor External Clock
    459     UINT16                    T4MaxSpeed;               ///< Processor Maximum Speed
    460     UINT16                    T4CurrentSpeed;           ///< Processor Current Speed
    461     UINT16                    T4Status;                 ///< Processor Status
    462     UINT16                    T4ProcUpgrade;            ///< Processor Upgrade
    463     UINT16                    T4CoreCount;              ///< Processor Core Count
    464     UINT16                    T4CoreEnabled;            ///< Processor Core Enabled
    465     UINT16                    T4ThreadCount;            ///< Processor Thread Count
    466     UINT16                    T4ProcCharacteristics;    ///< Processor Characteristics
    467     UINT16                    T4ProcFamily2;            ///< Processor Family 2
    468     UINT16                    T4CoreCount2;             ///< Processor Core Count 2
    469     UINT16                    T4CoreEnabled2;           ///< Processor Core Enabled 2
    470     UINT16                    T4ThreadCount2;           ///< Processor Thread Count 2
    471     UINT8                     T4SerialNumber[8];        ///< Processor Serial Number
    472   } ISCP_TYPE4_SMBIOS_INFO;
    473 
    474   /// DMI Type 7 - Cache Information
    475   typedef struct {
    476     UINT16                    T7CacheCfg;               ///< Cache Configuration
    477     UINT16                    T7MaxCacheSize;           ///< Maximum Cache Size
    478     UINT16                    T7InstallSize;            ///< Cache Install Size
    479     UINT16                    T7SupportedSramType;      ///< Supported SRAM Type
    480     UINT16                    T7CurrentSramType;        ///< Current SRAM Type
    481     UINT16                    T7CacheSpeed;             ///< Cache Speed in nanoseconds
    482     UINT16                    T7ErrorCorrectionType;    ///< Cache Error Correction Type
    483     UINT16                    T7SystemCacheType;        ///< System Cache Type
    484     UINT16                    T7Associativity;          ///< Cache Associativity
    485   } ISCP_TYPE7_SMBIOS_INFO;
    486 
    487   #ifdef __cplusplus
    488   }
    489 #endif
    490 
    491 
    492 #endif /* CPUISCP_H_ */
    493