/** @file
WheaSupport.h -- Header for WheaSupport
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __WHEASUPPORT_H__
#define __WHEASUPPORT_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
_ModuleEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
WheaSupportEntry(
VOID
);
EFI_STATUS
EFIAPI
WheaCreateHestErrorSrcDescriptor(
VOID
);
EFI_STATUS
EFIAPI
WheaGetErstRecordCount(
VOID
);
EFI_STATUS
EFIAPI
WheaSetEinjConfig(
VOID
);
EFI_STATUS
EFIAPI
WheaGetEinjContext(
VOID
);
EFI_STATUS
EFIAPI
WheaGetBertContext(
VOID
);
EFI_STATUS
EFIAPI
WheaSetErstConfig(
VOID
);
EFI_STATUS
EFIAPI
WheaInstallTables(
VOID
);
EFI_STATUS
EFIAPI
WheaReadyToBootNotify(
VOID
);
EFI_STATUS
EFIAPI
WheaDriverInit(
VOID
);
EFI_STATUS
EFIAPI
DebugLibConstructor(
VOID
);
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
DebugAssert(
VOID
);
EFI_STATUS
EFIAPI
EfiGetSystemConfigurationTable(
VOID
);
EFI_STATUS
EFIAPI
RegisterWheaReadyToBoot(
VOID
);
EFI_STATUS
EFIAPI
InitAcpiTableHeader(
VOID
);
EFI_STATUS
EFIAPI
CompareGuid(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
file: 0309_WheaSupport_95b18380d0d5 (from HR650X_3647_AJAX_BIOS)(
VOID
);
EFI_STATUS
EFIAPI
info:(
VOID
);
EFI_STATUS
EFIAPI
DXE driver implements Windows Hardware Error Architecture (WHEA)(
VOID
);
EFI_STATUS
EFIAPI
SMM communication at ReadyToBoot:(
VOID
);
EFI_STATUS
EFIAPI
driver also allocates a shared communication buffer (0xE000 bytes)(
VOID
);
EFI_STATUS
EFIAPI
0x4000 offset for HEST+ERST data, 0x6000 offset for BERT.(
VOID
);
EFI_STATUS
EFIAPI
Variables (from IDA - .data section, imagebase 0x0)(
VOID
);
EFI_STATUS
EFIAPI
globals (set during WheaSupportEntry)(
VOID
);
EFI_STATUS
EFIAPI
EFI_SYSTEM_TABLE *gSystemTable = NULL; // 0x1FE0(
VOID
);
EFI_STATUS
EFIAPI
EFI_RUNTIME_SERVICES *gRuntimeServices = NULL; // 0x1FF8(
VOID
);
EFI_STATUS
EFIAPI
instance allocations (from WheaDriverInit)(
VOID
);
EFI_STATUS
EFIAPI
SMM communication buffer(
VOID
);
EFI_STATUS
EFIAPI
into comm buffer(
VOID
);
EFI_STATUS
EFIAPI
VOID *gHestErstData = NULL; // 0x1F78: at +0x4000(
VOID
);
EFI_STATUS
EFIAPI
UINT32 gSize0x2000 = 0x2000; // 0x1F70(
VOID
);
EFI_STATUS
EFIAPI
CHAR8 gWheaStr[] = "WHEA"; // 0x1F30(
VOID
);
EFI_STATUS
EFIAPI
handles(
VOID
);
EFI_STATUS
EFIAPI
VOID *gDebugPort = NULL; // 0x2000(
VOID
);
EFI_STATUS
EFIAPI
VOID *gDS = NULL; // 0x2008(
VOID
);
EFI_STATUS
EFIAPI
VOID *gHobList = NULL; // 0x2018(
VOID
);
EFI_STATUS
EFIAPI
table for WHEA protocol(
VOID
);
EFI_STATUS
EFIAPI
VOID *gFnGetErst = NULL; // 0x1FA8(
VOID
);
EFI_STATUS
EFIAPI
VOID *gFnGetEinjCtx = NULL; // 0x1FB8(
VOID
);
EFI_STATUS
EFIAPI
VOID *gFnSetErst = NULL; // 0x1FC8(
VOID
);
EFI_STATUS
EFIAPI
(CONTAINING_RECORD) macros(
VOID
);
EFI_STATUS
EFIAPI
WHEA instance uses signature 0x41424344 ("ABCD") at offset -112 bytes(
VOID
);
EFI_STATUS
EFIAPI
the checked field pointer.(
VOID
);
EFI_STATUS
EFIAPI
(0x2A0)(
VOID
);
EFI_STATUS
EFIAPI
with overlap handling.(
VOID
);
EFI_STATUS
EFIAPI
copy for overlapping regions(
VOID
);
EFI_STATUS
EFIAPI
copy in 8-byte chunks(
VOID
);
EFI_STATUS
EFIAPI
(0x2F0)(
VOID
);
EFI_STATUS
EFIAPI
/ WheaSupportEntry / WheaDriverInit(
VOID
);
EFI_STATUS
EFIAPI
(0x358)(
VOID
);
EFI_STATUS
EFIAPI
UEFI boot services / runtime services globals(
VOID
);
EFI_STATUS
EFIAPI
DxeServicesTable, PCI USRA protocol, HOB list, PCD protocol.(
VOID
);
EFI_STATUS
EFIAPI
globals(
VOID
);
EFI_STATUS
EFIAPI
DxeServicesTable(
VOID
);
EFI_STATUS
EFIAPI
PCI USRA protocol (for MM PCI config access)(
VOID
);
EFI_STATUS
EFIAPI
(0x524)(
VOID
);
EFI_STATUS
EFIAPI
a HEST error source descriptor in the HEST table area.(
VOID
);
/// 656 bytes
EFI_STATUS
EFIAPI
= IA-32 Machine Check (standard)(
VOID
);
/// 664 bytes
EFI_STATUS
EFIAPI
= IPMI(
VOID
);
/// 48 bytes (16+32)
EFI_STATUS
EFIAPI
= PCIe Root Port AER(
VOID
);
/// 44 bytes (16+28)
EFI_STATUS
EFIAPI
= PCIe Device AER(
VOID
);
/// 56 bytes (16+40)
EFI_STATUS
EFIAPI
= PCIe Bridge AER(
VOID
);
/// variable
EFI_STATUS
EFIAPI
= Generic Hardware Error Source(
VOID
);
EFI_STATUS
EFIAPI
table ptr(
VOID
);
EFI_STATUS
EFIAPI
end offset(
VOID
);
EFI_STATUS
EFIAPI
9: Generic Hardware Error Source(
VOID
);
EFI_STATUS
EFIAPI
6, 7, 8 (PCIe AER)(
VOID
);
EFI_STATUS
EFIAPI
(0x7DC)(
VOID
);
EFI_STATUS
EFIAPI
(0x7E0)(
VOID
);
EFI_STATUS
EFIAPI
EINJ table error injection entries.(
VOID
);
EFI_STATUS
EFIAPI
offset: -0x70 (112 bytes)(
VOID
);
EFI_STATUS
EFIAPI
EinjContext at Instance+0x68, EinjEntryCount in table(
VOID
);
EFI_STATUS
EFIAPI
table length based on entries(
VOID
);
EFI_STATUS
EFIAPI
(0x8BC)(
VOID
);
EFI_STATUS
EFIAPI
(0x91C)(
VOID
);
EFI_STATUS
EFIAPI
(0x9A8)(
VOID
);
EFI_STATUS
EFIAPI
(0xA5C)(
VOID
);
EFI_STATUS
EFIAPI
HEST, ERST, BERT, EINJ tables via SMM communication protocol.(
VOID
);
EFI_STATUS
EFIAPI
->Communicate() for each table, then frees buffers.(
VOID
);
EFI_STATUS
EFIAPI
installed(
VOID
);
EFI_STATUS
EFIAPI
v15 = 0;(
VOID
);
EFI_STATUS
EFIAPI
installed and free tables(
VOID
);
EFI_STATUS
EFIAPI
(0xBBC)(
VOID
);
EFI_STATUS
EFIAPI
callback: calls WheaInstallTables.(
VOID
);
EFI_STATUS
EFIAPI
EFI_ALREADY_STARTED (0x8000000000000014).(
VOID
);
EFI_STATUS
EFIAPI
(0xC10) - Main init function(
VOID
);
EFI_STATUS
EFIAPI
capture(
VOID
);
EFI_STATUS
EFIAPI
WHEA protocol - if found, skip init (already registered)(
VOID
);
EFI_STATUS
EFIAPI
tables(
VOID
);
EFI_STATUS
EFIAPI
header(
VOID
);
EFI_STATUS
EFIAPI
header (determine entries from HW-reduced flag)(
VOID
);
EFI_STATUS
EFIAPI
SMM communication buffer (0xE000)(
VOID
);
EFI_STATUS
EFIAPI
gHestErstData = (UINT8 *)gCommBuffer + 0x4000;(
VOID
);
EFI_STATUS
EFIAPI
error region(
VOID
);
EFI_STATUS
EFIAPI
table for protocol(
VOID
);
EFI_STATUS
EFIAPI
SMM Communication protocol(
VOID
);
EFI_STATUS
EFIAPI
ReadyToBoot event(
VOID
);
EFI_STATUS
EFIAPI
(0x1068)(
VOID
);
EFI_STATUS
EFIAPI
(0x10E8)(
VOID
);
EFI_STATUS
EFIAPI
(0x1170)(
VOID
);
EFI_STATUS
EFIAPI
UEFI debug library functions used by MDE modules.(
VOID
);
EFI_STATUS
EFIAPI
edk2/MdePkg/Library/UefiDebugLibStdErr/(
VOID
);
EFI_STATUS
EFIAPI
debug level from CMOS reg 0x4B(
VOID
);
EFI_STATUS
EFIAPI
allocation helpers(
VOID
);
EFI_STATUS
EFIAPI
(0x1208)(
VOID
);
EFI_STATUS
EFIAPI
(0x12CC)(
VOID
);
EFI_STATUS
EFIAPI
(0x1354)(
VOID
);
EFI_STATUS
EFIAPI
(0x15D0)(
VOID
);
EFI_STATUS
EFIAPI
(0x13D8)(
VOID
);
EFI_STATUS
EFIAPI
(0x1458)(
VOID
);
EFI_STATUS
EFIAPI
(0x14F8)(
VOID
);
EFI_STATUS
EFIAPI
(0x1568)(
VOID
);
EFI_STATUS
EFIAPI
(0x165C)(
VOID
);
EFI_STATUS
EFIAPI
initial OEM placeholder(
VOID
);
EFI_STATUS
EFIAPI
OEM values from PCD protocol(
VOID
);
EFI_STATUS
EFIAPI
ID(
VOID
);
EFI_STATUS
EFIAPI
Rev(
VOID
);
EFI_STATUS
EFIAPI
Revision(
VOID
);
#endif /* __WHEASUPPORT_H__ */