| /** @file | |
| Definitions for loading microcode on processors. | |
| Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef _CPU_MICROCODE_H_ | |
| #define _CPU_MICROCODE_H_ | |
| #define EFI_MSR_IA32_PLATFORM_ID 0x17 | |
| #define EFI_MSR_IA32_BIOS_UPDT_TRIG 0x79 | |
| #define EFI_MSR_IA32_BIOS_SIGN_ID 0x8b | |
| #define MAX_MICROCODE_DESCRIPTOR_LENGTH 100 | |
| typedef struct { | |
| VOID *MicrocodeData; | |
| UINTN MicrocodeSize; | |
| UINT32 ProcessorId; | |
| BOOLEAN Load; | |
| } MICROCODE_INFO; | |
| // | |
| // Definition for IA32 microcode format | |
| // | |
| typedef struct { | |
| UINT32 HeaderVersion; | |
| UINT32 UpdateRevision; | |
| UINT32 Date; | |
| UINT32 ProcessorId; | |
| UINT32 Checksum; | |
| UINT32 LoaderRevision; | |
| UINT32 ProcessorFlags; | |
| UINT32 DataSize; | |
| UINT32 TotalSize; | |
| UINT8 Reserved[12]; | |
| } EFI_CPU_MICROCODE_HEADER; | |
| typedef struct { | |
| UINT32 ExtendedSignatureCount; | |
| UINT32 ExtendedTableChecksum; | |
| UINT8 Reserved[12]; | |
| } EFI_CPU_MICROCODE_EXTENDED_TABLE_HEADER; | |
| typedef struct { | |
| UINT32 ProcessorSignature; | |
| UINT32 ProcessorFlag; | |
| UINT32 ProcessorChecksum; | |
| } EFI_CPU_MICROCODE_EXTENDED_TABLE; | |
| /** | |
| Detect whether specified processor can find matching microcode patch and load it. | |
| **/ | |
| VOID | |
| MicrocodeDetect ( | |
| VOID | |
| ); | |
| #endif |