UEFITool/common/fit.h
Nikolaj Schlej 407e558b60 NE_aplha5
Added FIT detection, parsing and UI, finally
2015-07-07 15:57:41 +02:00

66 lines
1.7 KiB
C

/* fit.h
Copyright (c) 2015, Nikolaj Schlej. All rights reserved.
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,
WITHWARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
*/
#ifndef __FIT_H__
#define __FIT_H__
#include <QByteArray>
#include "basetypes.h"
// Make sure we use right packing rules
#pragma pack(push,1)
// Memory address of a pointer to FIT, 40h back from the end of flash chip
#define FIT_POINTER_OFFSET 0x40
// Entry types
#define FIT_TYPE_HEADER 0x00
#define FIT_TYPE_MICROCODE 0x01
#define FIT_TYPE_BIOS_AC_MODULE 0x02
#define FIT_TYPE_BIOS_INIT_MODULE 0x07
#define FIT_TYPE_TPM_POLICY 0x08
#define FIT_TYPE_BIOS_POLICY_DATA 0x09
#define FIT_TYPE_TXT_CONF_POLICY 0x0A
#define FIT_TYPE_AC_KEY_MANIFEST 0x0B
#define FIT_TYPE_AC_BOOT_POLICY 0x0C
#define FIT_TYPE_EMPTY 0x7F
#define FIT_HEADER_VERSION 0x0100
#define FIT_MICROCODE_VERSION 0x0100
const QByteArray FIT_SIGNATURE
("\x5F\x46\x49\x54\x5F\x20\x20\x20", 8);
typedef struct _FIT_ENTRY {
UINT64 Address;
UINT32 Size;
UINT16 Version;
UINT8 Type;
UINT8 Checksum;
} FIT_ENTRY;
typedef struct _INTEL_MICROCODE_HEADER {
UINT32 Version;
UINT32 Revision;
UINT32 Date;
UINT32 CpuSignature;
UINT32 Checksum;
UINT32 LoaderRevision;
UINT32 CpuFlags;
UINT32 DataSize;
UINT32 TotalSize;
UINT8 Reserved[12];
} INTEL_MICROCODE_HEADER;
#pragma pack(pop)
#endif