/** @file
LnvDriverDxe.h -- Header for LnvDriverDxe
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __LNVDRIVERDXE_H__
#define __LNVDRIVERDXE_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
GetDebugLevel(
VOID
);
EFI_STATUS
EFIAPI
_ModuleEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
LnvDriverDxeInitGlobals(
VOID
);
EFI_STATUS
EFIAPI
LnvDriverDxeInit(
VOID
);
EFI_STATUS
EFIAPI
OnReadyToBoot(
VOID
);
EFI_STATUS
EFIAPI
LnvSetupConfigCallback0(
VOID
);
EFI_STATUS
EFIAPI
LnvSetupConfigCallback1(
VOID
);
EFI_STATUS
EFIAPI
OnExitBootServices(
VOID
);
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
DebugAssert(
VOID
);
EFI_STATUS
EFIAPI
InstallProtocolInterface(
VOID
);
EFI_STATUS
EFIAPI
UnicodeSPrint(
VOID
);
EFI_STATUS
EFIAPI
UnicodeVSPrint(
VOID
);
EFI_STATUS
EFIAPI
DsBootCurrentName(
VOID
);
EFI_STATUS
EFIAPI
DebugLogPrint(
VOID
);
EFI_STATUS
EFIAPI
IpmiTransportInit(
VOID
);
EFI_STATUS
EFIAPI
IpmiTransportLocate(
VOID
);
EFI_STATUS
EFIAPI
IpmiSendCommand(
VOID
);
EFI_STATUS
EFIAPI
IpmiTransportSendCommand(
VOID
);
EFI_STATUS
EFIAPI
StrLen(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned16(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
StrnLenS(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrLen(
VOID
);
EFI_STATUS
EFIAPI
CompareGuid(
VOID
);
EFI_STATUS
EFIAPI
AsciiSPrintWithTimestamp(
VOID
);
EFI_STATUS
EFIAPI
AsciiVSPrint(
VOID
);
EFI_STATUS
EFIAPI
AsciiSPrint(
VOID
);
EFI_STATUS
EFIAPI
data(
VOID
);
EFI_STATUS
EFIAPI
EFI_HANDLE gImageHandle = NULL;(
VOID
);
EFI_STATUS
EFIAPI
variables for protocol interfaces(
VOID
);
EFI_STATUS
EFIAPI
VOID *gProtocolInterface = NULL; // qword_3C60(
VOID
);
EFI_STATUS
EFIAPI
STATIC UINT64 gBootServicesPtr = 0; // qword_3C70(
VOID
);
EFI_STATUS
EFIAPI
STATIC UINT64 gSystemTablePtr = 0; // qword_3C80(
VOID
);
EFI_STATUS
EFIAPI
STATIC VOID *gIpmiTransportProtocol = NULL; // qword_3C90(
VOID
);
EFI_STATUS
EFIAPI
//(
VOID
);
EFI_STATUS
EFIAPI
definitions (from .rdata section)(
VOID
);
EFI_STATUS
EFIAPI
gLnvDriverDxeProtocolGuid = { 0x9894A3A0, 0x440C, 0x4A8C, { 0x8F, 0x55, 0x35, 0x6E, 0x5F, 0x2E, 0xCE, 0x71 } };(
VOID
);
EFI_STATUS
EFIAPI
declarations of local helper functions(
VOID
);
EFI_STATUS
EFIAPI
UINTN(
VOID
);
EFI_STATUS
EFIAPI
// ============================================================================(
VOID
);
EFI_STATUS
EFIAPI
LnvDriverDxeInitGlobals(
VOID
);
EFI_STATUS
EFIAPI
the HOB list(
VOID
);
EFI_STATUS
EFIAPI
();(
VOID
);
EFI_STATUS
EFIAPI
or install the IPMI transport protocol(
VOID
);
EFI_STATUS
EFIAPI
= gBS->LocateProtocol ((
VOID
);
EFI_STATUS
EFIAPI
not found; register callback for when it becomes available(
VOID
);
EFI_STATUS
EFIAPI
(&gLnvDriverDxeProtocolGuid);(
VOID
);
EFI_STATUS
EFIAPI
LnvDriverDxeInit(
VOID
);
EFI_STATUS
EFIAPI
ReadyToBoot event(
VOID
);
EFI_STATUS
EFIAPI
= gBS->CreateEventEx ((
VOID
);
EFI_STATUS
EFIAPI
ExitBootServices event(
VOID
);
EFI_STATUS
EFIAPI
periodic timer event for configuration callback (index 0)(
VOID
);
EFI_STATUS
EFIAPI
= gBS->CreateEvent ((
VOID
);
EFI_STATUS
EFIAPI
periodic timer event for configuration callback (index 1)(
VOID
);
EFI_STATUS
EFIAPI
initial LnvSetup configuration(
VOID
);
EFI_STATUS
EFIAPI
= 0;(
VOID
);
EFI_STATUS
EFIAPI
OnReadyToBoot(
VOID
);
EFI_STATUS
EFIAPI
LnvSetupConfigCallback0(
VOID
);
EFI_STATUS
EFIAPI
LnvSetupConfigCallback1(
VOID
);
EFI_STATUS
EFIAPI
OnExitBootServices(
VOID
);
EFI_STATUS
EFIAPI
final configuration(
VOID
);
EFI_STATUS
EFIAPI
(Event, Context);(
VOID
);
EFI_STATUS
EFIAPI
GetProtocolInterface(
VOID
);
EFI_STATUS
EFIAPI
a small page to test memory availability(
VOID
);
EFI_STATUS
EFIAPI
= EFI_SIZE_TO_PAGES (31);(
VOID
);
EFI_STATUS
EFIAPI
DebugPrint(
VOID
);
EFI_STATUS
EFIAPI
if the debug level is enabled(
VOID
);
EFI_STATUS
EFIAPI
= GetDebugLevel ();(
VOID
);
EFI_STATUS
EFIAPI
the protocol's debug print function (at offset +16)(
VOID
);
EFI_STATUS
EFIAPI
(VaListMarker);(
VOID
);
EFI_STATUS
EFIAPI
DebugAssert(
VOID
);
EFI_STATUS
EFIAPI
the protocol's assert function (at offset +8)(
VOID
);
EFI_STATUS
EFIAPI
GetHobList(
VOID
);
EFI_STATUS
EFIAPI
the number of configuration table entries(
VOID
);
EFI_STATUS
EFIAPI
= gST->NumberOfTableEntries;(
VOID
);
EFI_STATUS
EFIAPI
for the HOB list GUID in the configuration table(
VOID
);
EFI_STATUS
EFIAPI
(Index = 0; Index < Count; Index++) {(
VOID
);
EFI_STATUS
EFIAPI
the HOB list was found(
VOID
);
EFI_STATUS
EFIAPI
(gHobList == 0) {(
VOID
);
EFI_STATUS
EFIAPI
InstallProtocolInterface(
VOID
);
EFI_STATUS
EFIAPI
IntToString(
VOID
);
EFI_STATUS
EFIAPI
hex(
VOID
);
EFI_STATUS
EFIAPI
StrToInt32(
VOID
);
EFI_STATUS
EFIAPI
leading whitespace (space = 0x20, tab = 0x09)(
VOID
);
EFI_STATUS
EFIAPI
(*Str == 0x20 || *Str == 0x09) {(
VOID
);
EFI_STATUS
EFIAPI
for sign(
VOID
);
EFI_STATUS
EFIAPI
(*Str == '-') {(
VOID
);
EFI_STATUS
EFIAPI
digits(
VOID
);
EFI_STATUS
EFIAPI
(TRUE) {(
VOID
);
EFI_STATUS
EFIAPI
StatusToString(
VOID
);
EFI_STATUS
EFIAPI
(Index >= 3) {(
VOID
);
EFI_STATUS
EFIAPI
(Index > 2) {(
VOID
);
EFI_STATUS
EFIAPI
EFI errors(
VOID
);
EFI_STATUS
EFIAPI
(Index > 0x1E) {(
VOID
);
EFI_STATUS
EFIAPI
codes(
VOID
);
EFI_STATUS
EFIAPI
((Status & 0x2000000000000000ULL) == 0) {(
VOID
);
EFI_STATUS
EFIAPI
UnicodeSPrint(
VOID
);
EFI_STATUS
EFIAPI
UnicodeVSPrint(
VOID
);
EFI_STATUS
EFIAPI
follows the standard UEFI VSPrint pattern.(
VOID
);
EFI_STATUS
EFIAPI
MdePkg/Library/BasePrintLib/PrintLibInternal.c for reference.(
VOID
);
EFI_STATUS
EFIAPI
format string character by character(
VOID
);
EFI_STATUS
EFIAPI
= Format;(
VOID
);
EFI_STATUS
EFIAPI
character, copy to output(
VOID
);
EFI_STATUS
EFIAPI
percent(
VOID
);
EFI_STATUS
EFIAPI
format specifier(
VOID
);
EFI_STATUS
EFIAPI
Width = 0;(
VOID
);
EFI_STATUS
EFIAPI
numeric width(
VOID
);
EFI_STATUS
EFIAPI
CHAR16 *ParseEnd;(
VOID
);
EFI_STATUS
EFIAPI
format type(
VOID
);
EFI_STATUS
EFIAPI
(*FormatStr) {(
VOID
);
EFI_STATUS
EFIAPI
format: %08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x(
VOID
);
EFI_STATUS
EFIAPI
*Guid;(
VOID
);
EFI_STATUS
EFIAPI
the hex letters(
VOID
);
EFI_STATUS
EFIAPI
(UINTN i = 0; GuidStr[i] != L'\0'; i++) {(
VOID
);
EFI_STATUS
EFIAPI
Status code(
VOID
);
EFI_STATUS
EFIAPI
Status;(
VOID
);
EFI_STATUS
EFIAPI
prefix(
VOID
);
EFI_STATUS
EFIAPI
through to handle d/i/x/X/p(
VOID
);
EFI_STATUS
EFIAPI
to string(
VOID
);
EFI_STATUS
EFIAPI
DigitBuf[32];(
VOID
);
EFI_STATUS
EFIAPI
digits in reverse(
VOID
);
EFI_STATUS
EFIAPI
{(
VOID
);
EFI_STATUS
EFIAPI
padding(
VOID
);
EFI_STATUS
EFIAPI
(DigitCount < Width) {(
VOID
);
EFI_STATUS
EFIAPI
digits in correct order(
VOID
);
EFI_STATUS
EFIAPI
DsBootCurrentName(
VOID
);
EFI_STATUS
EFIAPI
the boot string buffer(
VOID
);
EFI_STATUS
EFIAPI
(BootString, 0, sizeof (BootString));(
VOID
);
EFI_STATUS
EFIAPI
the current boot option index(
VOID
);
EFI_STATUS
EFIAPI
= sizeof (BootCurrent);(
VOID
);
EFI_STATUS
EFIAPI
the BootXXXX variable name(
VOID
);
EFI_STATUS
EFIAPI
(BootOptionName, sizeof (BootOptionName) / sizeof (CHAR16), L"Boot%04X", BootCurrent);(
VOID
);
EFI_STATUS
EFIAPI
the boot option variable data(
VOID
);
EFI_STATUS
EFIAPI
exists; allocate buffer and read it(
VOID
);
EFI_STATUS
EFIAPI
boot option description string starts at offset 6 in the(
VOID
);
EFI_STATUS
EFIAPI
structure(
VOID
);
EFI_STATUS
EFIAPI
= StrLen ((CONST CHAR16 *)((UINTN)VariableData + 6));(
VOID
);
EFI_STATUS
EFIAPI
DebugLogPrint(
VOID
);
EFI_STATUS
EFIAPI
the message into buffer(
VOID
);
EFI_STATUS
EFIAPI
(VaListMarker, Format);(
VOID
);
EFI_STATUS
EFIAPI
if too long(
VOID
);
EFI_STATUS
EFIAPI
(Length > 230) {(
VOID
);
EFI_STATUS
EFIAPI
current time(
VOID
);
EFI_STATUS
EFIAPI
packet with timestamp(
VOID
);
EFI_STATUS
EFIAPI
= AsciiSPrintWithTimestamp ((
VOID
);
EFI_STATUS
EFIAPI
packet via IPMI transport protocol(
VOID
);
EFI_STATUS
EFIAPI
= GetProtocolInterface ();(
VOID
);
EFI_STATUS
EFIAPI
to locate the protocol(
VOID
);
EFI_STATUS
EFIAPI
IpmiTransportInit(
VOID
);
EFI_STATUS
EFIAPI
IpmiTransportLocate(
VOID
);
EFI_STATUS
EFIAPI
IpmiSendCommand(
VOID
);
EFI_STATUS
EFIAPI
IpmiTransportSendCommand helper(
VOID
);
EFI_STATUS
EFIAPI
the protocol's SendCommand function at offset +16(
VOID
);
EFI_STATUS
EFIAPI
EFI_SUCCESS;(
VOID
);
EFI_STATUS
EFIAPI
GetDebugLevel(
VOID
);
EFI_STATUS
EFIAPI
CMOS register 0x4B(
VOID
);
EFI_STATUS
EFIAPI
(0x70, (IoRead8 (0x70) & 0x80) | 0x4B);(
VOID
);
EFI_STATUS
EFIAPI
platform-specific debug register(
VOID
);
EFI_STATUS
EFIAPI
= (MmioRead8 (0xFDAF0490) & 2) | 1;(
VOID
);
EFI_STATUS
EFIAPI
}(
VOID
);
EFI_STATUS
EFIAPI
StrLen(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned16(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
StrnLenS(
VOID
);
EFI_STATUS
EFIAPI
AsciiStrLen(
VOID
);
EFI_STATUS
EFIAPI
CompareGuid(
VOID
);
EFI_STATUS
EFIAPI
AsciiSPrintWithTimestamp(
VOID
);
EFI_STATUS
EFIAPI
SetMem16(
VOID
);
EFI_STATUS
EFIAPI
UInt64ToStringReverse(
VOID
);
EFI_STATUS
EFIAPI
AsciiVSPrint(
VOID
);
EFI_STATUS
EFIAPI
function is the main VSPrint implementation.(
VOID
);
EFI_STATUS
EFIAPI
the full decompiled source, see the IDA output.(
VOID
);
EFI_STATUS
EFIAPI
implementation handles:(
VOID
);
EFI_STATUS
EFIAPI
0;(
VOID
);
EFI_STATUS
EFIAPI
AsciiSPrint(
VOID
);
EFI_STATUS
EFIAPI
SetMem(
VOID
);
EFI_STATUS
EFIAPI
misaligned bytes(
VOID
);
EFI_STATUS
EFIAPI
AlignmentOffset;(
VOID
);
EFI_STATUS
EFIAPI
aligned 32-bit values(
VOID
);
EFI_STATUS
EFIAPI
= Length >> 2;(
VOID
);
EFI_STATUS
EFIAPI
remaining bytes(
VOID
);
EFI_STATUS
EFIAPI
(Length > 0) {(
VOID
);
EFI_STATUS
EFIAPI
CopyMem(
VOID
);
EFI_STATUS
EFIAPI
copy direction based on overlap(
VOID
);
EFI_STATUS
EFIAPI
Reverse = FALSE;(
VOID
);
EFI_STATUS
EFIAPI
+= Length;(
VOID
);
EFI_STATUS
EFIAPI
accelerated copy for aligned buffers >= 8 bytes(
VOID
);
EFI_STATUS
EFIAPI
(Length < 8 || ((UINTN)Src & 7) != ((UINTN)Dst & 7)) {(
VOID
);
EFI_STATUS
EFIAPI
misaligned start(
VOID
);
EFI_STATUS
EFIAPI
(Reverse) {(
VOID
);
EFI_STATUS
EFIAPI
8-byte aligned blocks(
VOID
);
EFI_STATUS
EFIAPI
= Length >> 3;(
VOID
);
EFI_STATUS
EFIAPI
= Length & 7;(
VOID
);
#endif /* __LNVDRIVERDXE_H__ */