4 Microcode Definitions based on contents of the
5 Intel(R) 64 and IA-32 Architectures Software Developer's Manual
6 Volume 3A, Section 9.11 Microcode Definitions
8 Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
9 SPDX-License-Identifier: BSD-2-Clause-Patent
11 @par Specification Reference:
12 Intel(R) 64 and IA-32 Architectures Software Developer's Manual, Volume 3A,
13 June 2016, Chapter 9 Processor Management and Initialization, Section 9-11.
17 #ifndef __INTEL_MICROCODE_H__
18 #define __INTEL_MICROCODE_H__
21 /// CPU Microcode Date in BCD format
33 /// CPU Microcode Processor Signature format
42 UINT32 ExtendedModel
: 4;
43 UINT32 ExtendedFamily
: 8;
47 } CPU_MICROCODE_PROCESSOR_SIGNATURE
;
52 /// Microcode Update Format definition
56 /// Version number of the update header
60 /// Unique version number for the update, the basis for the update
61 /// signature provided by the processor to indicate the current update
62 /// functioning within the processor. Used by the BIOS to authenticate
63 /// the update and verify that the processor loads successfully. The
64 /// value in this field cannot be used for processor stepping identification
65 /// alone. This is a signed 32-bit number.
67 UINT32 UpdateRevision
;
69 /// Date of the update creation in binary format: mmddyyyy (e.g.
70 /// 07/18/98 is 07181998H).
72 CPU_MICROCODE_DATE Date
;
74 /// Extended family, extended model, type, family, model, and stepping
75 /// of processor that requires this particular update revision (e.g.,
76 /// 00000650H). Each microcode update is designed specifically for a
77 /// given extended family, extended model, type, family, model, and
78 /// stepping of the processor.
79 /// The BIOS uses the processor signature field in conjunction with the
80 /// CPUID instruction to determine whether or not an update is
81 /// appropriate to load on a processor. The information encoded within
82 /// this field exactly corresponds to the bit representations returned by
83 /// the CPUID instruction.
85 CPU_MICROCODE_PROCESSOR_SIGNATURE ProcessorSignature
;
87 /// Checksum of Update Data and Header. Used to verify the integrity of
88 /// the update header and data. Checksum is correct when the
89 /// summation of all the DWORDs (including the extended Processor
90 /// Signature Table) that comprise the microcode update result in
95 /// Version number of the loader program needed to correctly load this
96 /// update. The initial version is 00000001H
98 UINT32 LoaderRevision
;
100 /// Platform type information is encoded in the lower 8 bits of this 4-
101 /// byte field. Each bit represents a particular platform type for a given
102 /// CPUID. The BIOS uses the processor flags field in conjunction with
103 /// the platform Id bits in MSR (17H) to determine whether or not an
104 /// update is appropriate to load on a processor. Multiple bits may be set
105 /// representing support for multiple platform IDs.
107 UINT32 ProcessorFlags
;
109 /// Specifies the size of the encrypted data in bytes, and must be a
110 /// multiple of DWORDs. If this value is 00000000H, then the microcode
111 /// update encrypted data is 2000 bytes (or 500 DWORDs).
115 /// Specifies the total size of the microcode update in bytes. It is the
116 /// summation of the header size, the encrypted data size and the size of
117 /// the optional extended signature table. This value is always a multiple
122 /// Reserved fields for future expansion.
125 } CPU_MICROCODE_HEADER
;
128 /// Extended Signature Table Header Field Definitions
132 /// Specifies the number of extended signature structures (Processor
133 /// Signature[n], processor flags[n] and checksum[n]) that exist in this
136 UINT32 ExtendedSignatureCount
;
138 /// Checksum of update extended processor signature table. Used to
139 /// verify the integrity of the extended processor signature table.
140 /// Checksum is correct when the summation of the DWORDs that
141 /// comprise the extended processor signature table results in
144 UINT32 ExtendedChecksum
;
149 } CPU_MICROCODE_EXTENDED_TABLE_HEADER
;
152 /// Extended Signature Table Field Definitions
156 /// Extended family, extended model, type, family, model, and stepping
157 /// of processor that requires this particular update revision (e.g.,
158 /// 00000650H). Each microcode update is designed specifically for a
159 /// given extended family, extended model, type, family, model, and
160 /// stepping of the processor.
161 /// The BIOS uses the processor signature field in conjunction with the
162 /// CPUID instruction to determine whether or not an update is
163 /// appropriate to load on a processor. The information encoded within
164 /// this field exactly corresponds to the bit representations returned by
165 /// the CPUID instruction.
167 CPU_MICROCODE_PROCESSOR_SIGNATURE ProcessorSignature
;
169 /// Platform type information is encoded in the lower 8 bits of this 4-
170 /// byte field. Each bit represents a particular platform type for a given
171 /// CPUID. The BIOS uses the processor flags field in conjunction with
172 /// the platform Id bits in MSR (17H) to determine whether or not an
173 /// update is appropriate to load on a processor. Multiple bits may be set
174 /// representing support for multiple platform IDs.
176 UINT32 ProcessorFlag
;
178 /// Used by utility software to decompose a microcode update into
179 /// multiple microcode updates where each of the new updates is
180 /// constructed without the optional Extended Processor Signature
182 /// To calculate the Checksum, substitute the Primary Processor
183 /// Signature entry and the Processor Flags entry with the
184 /// corresponding Extended Patch entry. Delete the Extended Processor
185 /// Signature Table entries. The Checksum is correct when the
186 /// summation of all DWORDs that comprise the created Extended
187 /// Processor Patch results in 00000000H.
190 } CPU_MICROCODE_EXTENDED_TABLE
;