/** @file
UbaConfigDatabaseDxe.h -- Header for UbaConfigDatabaseDxe
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __UBACONFIGDATABASEDXE_H__
#define __UBACONFIGDATABASEDXE_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
UbaConfigDatabaseGetInfo(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseSetData(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseGetData(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
AssertPrint(
VOID
);
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
InternalBaseLibIsListValid(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrLen(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrnLenS(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseGetListNode(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseNodeInit(
VOID
);
EFI_STATUS
EFIAPI
CompareGuid(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrCpyS(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrnCpyS(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseDxeEntry(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseInstallDriver(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseLoadFromHob(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseSetDataDispatch(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseGetDataDispatch(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseFindData(
VOID
);
EFI_STATUS
EFIAPI
ModuleEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
UEFI types(
VOID
);
EFI_STATUS
EFIAPI
unsigned long long UINT64;(
VOID
);
EFI_STATUS
EFIAPI
codes(
VOID
);
EFI_STATUS
EFIAPI
structure (16 bytes)(
VOID
);
EFI_STATUS
EFIAPI
struct {(
VOID
);
EFI_STATUS
EFIAPI
(abbreviated for this module)(
VOID
);
EFI_STATUS
EFIAPI
- 0x5F: header, firmware vendor, etc.(
VOID
);
EFI_STATUS
EFIAPI
VOID *RuntimeServices; // 0x68(
VOID
);
EFI_STATUS
EFIAPI
(function table at offset 0x60 from SystemTable)(
VOID
);
EFI_STATUS
EFIAPI
the entries used by this module are defined.(
VOID
);
EFI_STATUS
EFIAPI
- 0x17: RaiseTPL, RestoreTPL, AllocatePages, FreePages(
VOID
);
EFI_STATUS
EFIAPI
UINT64 (*AllocatePool)(UINTN PoolType, UINTN Size, VOID **Buffer); // 0x20 (index 4)(
VOID
);
EFI_STATUS
EFIAPI
char _pad1[0x18]; // 0x30 - 0x47(
VOID
);
EFI_STATUS
EFIAPI
(index 9)(
VOID
);
EFI_STATUS
EFIAPI
- 0x87(
VOID
);
EFI_STATUS
EFIAPI
(index 17)(
VOID
);
EFI_STATUS
EFIAPI
- 0xD7(
VOID
);
EFI_STATUS
EFIAPI
(index 27)(
VOID
);
EFI_STATUS
EFIAPI
- 0xFF(
VOID
);
EFI_STATUS
EFIAPI
(function table at offset 0x68 from SystemTable)(
VOID
);
EFI_STATUS
EFIAPI
- standard UEFI doubly-linked list(
VOID
);
EFI_STATUS
EFIAPI
struct _LIST_ENTRY {(
VOID
);
EFI_STATUS
EFIAPI
- a single configuration data node in the linked list(
VOID
);
EFI_STATUS
EFIAPI
layout:(
VOID
);
EFI_STATUS
EFIAPI
LIST_ENTRY Link; // 0x08(
VOID
);
EFI_STATUS
EFIAPI
EFI_GUID ConfigGuid; // 0x1C(
VOID
);
EFI_STATUS
EFIAPI
UINT32 ConfigDataSize; // 0x3C(
VOID
);
EFI_STATUS
EFIAPI
UINT32 NodeCount; // 0x48(
VOID
);
EFI_STATUS
EFIAPI
- private structure for the config database(
VOID
);
EFI_STATUS
EFIAPI
UINT64 ConfigCount; // 0x10(
VOID
);
EFI_STATUS
EFIAPI
EFI_GUID ConfigGuid; // 0x1C(
VOID
);
EFI_STATUS
EFIAPI
interface starts here(
VOID
);
EFI_STATUS
EFIAPI
EFI_STATUS (*SetData)(VOID *This, EFI_GUID *ConfigGuid, VOID *ConfigData, UINTN ConfigDataSize); // 0x34(
VOID
);
EFI_STATUS
EFIAPI
} UBA_CONFIG_DATABASE_PRIVATE;(
VOID
);
EFI_STATUS
EFIAPI
(Hand-Off Block) structures(
VOID
);
EFI_STATUS
EFIAPI
UINT16 HobLength; // 0x02(
VOID
);
EFI_STATUS
EFIAPI
} EFI_HOB_HEADER; // Total: 8 bytes(
VOID
);
EFI_STATUS
EFIAPI
UINT32 DataCount; // 0x10: number of config entries(
VOID
);
EFI_STATUS
EFIAPI
by per-entry data starting at offset 0x14 (0x14 + 4 = 0x18 if 1st entry)(
VOID
);
EFI_STATUS
EFIAPI
config HOB per-entry structure (36 bytes each)(
VOID
);
EFI_STATUS
EFIAPI
entry has a relative offset to data + data size(
VOID
);
EFI_STATUS
EFIAPI
SYSTEM TABLE globals (assigned by _ModuleEntryPoint)(
VOID
);
EFI_STATUS
EFIAPI
UINTN ImageHandle;(
VOID
);
EFI_STATUS
EFIAPI
globals(
VOID
);
EFI_STATUS
EFIAPI
mImageHandle;(
VOID
);
EFI_STATUS
EFIAPI
for this module(
VOID
);
EFI_STATUS
EFIAPI
*mDebugProtocol; // 0x1F50: cached debug logging protocol(
VOID
);
EFI_STATUS
EFIAPI
EFI_GUID gUbaConfigHobGuid = {0xCC4CC9E4, 0x4E5EF25B, 0x252CFB26, 0x8D8D8D8D}; // 0x1F20 (example - not exact)(
VOID
);
EFI_STATUS
EFIAPI
declarations(
VOID
);
EFI_STATUS
EFIAPI
case: source is before destination and overlaps(
VOID
);
EFI_STATUS
EFIAPI
from end to start (backward copy not shown, IDA optimizes to same)(
VOID
);
EFI_STATUS
EFIAPI
InternalCopyMemBackward(Dst, Src, Count);(
VOID
);
EFI_STATUS
EFIAPI
Count8 = Count >> 3;(
VOID
);
EFI_STATUS
EFIAPI
CMOS status register to determine debug level(
VOID
);
EFI_STATUS
EFIAPI
break;(
VOID
);
EFI_STATUS
EFIAPI
| EFI_D_INFO(
VOID
);
EFI_STATUS
EFIAPI
helper: CR-based node access(
VOID
);
EFI_STATUS
EFIAPI
= CONTAINER_RECORD macro: from a member pointer, get the containing struct(
VOID
);
EFI_STATUS
EFIAPI
linked list entry to point to itself (empty list)(
VOID
);
EFI_STATUS
EFIAPI
for HOB list(
VOID
);
EFI_STATUS
EFIAPI
entry = GUID + Address (3 UINT64s)(
VOID
);
EFI_STATUS
EFIAPI
if debug is available via CMOS diagnostic port(
VOID
);
EFI_STATUS
EFIAPI
overlap(
VOID
);
EFI_STATUS
EFIAPI
(Source > Destination && Source < &Destination[DestMax]) {(
VOID
);
EFI_STATUS
EFIAPI
private structure(
VOID
);
EFI_STATUS
EFIAPI
protocol GUID (0x504C4342 = "BCLP")(
VOID
);
EFI_STATUS
EFIAPI
is the UBA protocol GUID data that identifies this interface(
VOID
);
EFI_STATUS
EFIAPI
initial configuration from HOB(
VOID
);
EFI_STATUS
EFIAPI
= UbaConfigDatabaseLoadFromHob(&Private->ConfigGuid);(
VOID
);
EFI_STATUS
EFIAPI
the protocol interface(
VOID
);
EFI_STATUS
EFIAPI
= NULL;(
VOID
);
EFI_STATUS
EFIAPI
check - will ASSERT if invalid(
VOID
);
EFI_STATUS
EFIAPI
to search for in HOB (target config HOB)(
VOID
);
EFI_STATUS
EFIAPI
the config database with data from HOB(
VOID
);
EFI_STATUS
EFIAPI
= UbaConfigDatabaseNodeInit((
VOID
);
EFI_STATUS
EFIAPI
config GUID data(
VOID
);
EFI_STATUS
EFIAPI
name(
VOID
);
EFI_STATUS
EFIAPI
each config entry in the HOB(
VOID
);
EFI_STATUS
EFIAPI
(Hob->DataCount > 0) {(
VOID
);
EFI_STATUS
EFIAPI
the right pointer from CR macro(
VOID
);
EFI_STATUS
EFIAPI
and initialize a new config node(
VOID
);
EFI_STATUS
EFIAPI
= AllocatePool((UINTN)This, 60);(
VOID
);
EFI_STATUS
EFIAPI
the GUID data(
VOID
);
EFI_STATUS
EFIAPI
the GUID(
VOID
);
EFI_STATUS
EFIAPI
GUID from parameter(
VOID
);
EFI_STATUS
EFIAPI
into linked list(
VOID
);
EFI_STATUS
EFIAPI
counters(
VOID
);
EFI_STATUS
EFIAPI
+ 0x24 from CR macro(
VOID
);
EFI_STATUS
EFIAPI
the linked list looking for a matching GUID(
VOID
);
EFI_STATUS
EFIAPI
(!InternalBaseLibIsListValid(ListHead)) return EFI_NOT_FOUND;(
VOID
);
EFI_STATUS
EFIAPI
a matching node, copy data if buffer is large enough(
VOID
);
EFI_STATUS
EFIAPI
(ConfigDataSize) {(
VOID
);
EFI_STATUS
EFIAPI
the HOB list (for later config loading)(
VOID
);
EFI_STATUS
EFIAPI
the UBA config database protocol(
VOID
);
EFI_STATUS
EFIAPI
UbaConfigDatabaseInstallDriver(ImageHandle, SystemTable);(
VOID
);
#endif /* __UBACONFIGDATABASEDXE_H__ */