/** @file
LnvDxeStatusCode.h -- Header for LnvDxeStatusCode
Copyright (c) HR650X BIOS Decompilation Project
**/
#ifndef __LNVDXESTATUSCODE_H__
#define __LNVDXESTATUSCODE_H__
#include "../uefi_headers/Uefi.h"
//
// Function Prototypes
//
EFI_STATUS
EFIAPI
ReportStatusCodeFiltered(
VOID
);
EFI_STATUS
EFIAPI
DebugAssertViaProtocol(
VOID
);
EFI_STATUS
EFIAPI
ReadUnaligned64(
VOID
);
EFI_STATUS
EFIAPI
IsHobListGuid(
VOID
);
EFI_STATUS
EFIAPI
LocateRuntimeStatusCodeProtocol(
VOID
);
EFI_STATUS
EFIAPI
OnExitBootServicesClearBs(
VOID
);
EFI_STATUS
EFIAPI
OnExitBootServicesConvertLenovo(
VOID
);
EFI_STATUS
EFIAPI
RuntimeProtocolNotifyNop(
VOID
);
EFI_STATUS
EFIAPI
OnExitBootServicesConvertReg(
VOID
);
EFI_STATUS
EFIAPI
OnExitBootServicesConvertRuntime(
VOID
);
EFI_STATUS
EFIAPI
OnVirtualAddressChange(
VOID
);
EFI_STATUS
EFIAPI
DriverSetupInit(
VOID
);
EFI_STATUS
EFIAPI
LnvDxeStatusCodeEntryPoint(
VOID
);
EFI_STATUS
EFIAPI
Lenovo Status Code Protocol (0x3000):(
VOID
);
EFI_STATUS
EFIAPI
(0x3010) from MdeModulePkg.(
VOID
);
EFI_STATUS
EFIAPI
(0x3020) from MdePkg.(
VOID
);
EFI_STATUS
EFIAPI
(0x3030).(
VOID
);
EFI_STATUS
EFIAPI
(0x3040).(
VOID
);
EFI_STATUS
EFIAPI
custom protocol vtable layout(
VOID
);
EFI_STATUS
EFIAPI
+0x00(
VOID
);
EFI_STATUS
EFIAPI
+0x08(
VOID
);
EFI_STATUS
EFIAPI
variables(
VOID
);
EFI_STATUS
EFIAPI
EFI_SYSTEM_TABLE *gSystemTable_ = NULL; // 0x3050(
VOID
);
EFI_STATUS
EFIAPI
EFI_RUNTIME_SERVICES *gRuntimeServices_ = NULL; // 0x3068(
VOID
);
EFI_STATUS
EFIAPI
VOID *gRegClearBs_ = NULL; // 0x3080(
VOID
);
EFI_STATUS
EFIAPI
VOID *gLenovoProtocol_ = NULL; // 0x3090(
VOID
);
EFI_STATUS
EFIAPI
BOOLEAN gRuntimeInitDone_ = FALSE; // 0x30A0(
VOID
);
EFI_STATUS
EFIAPI
VOID *gRegVirtAddrChange_ = NULL; // 0x30B8(
VOID
);
EFI_STATUS
EFIAPI
VOID *gRuntimeServicesReg_ = NULL; // 0x30D0(
VOID
);
EFI_STATUS
EFIAPI
//(
VOID
);
EFI_STATUS
EFIAPI
constants in .data section(
VOID
);
EFI_STATUS
EFIAPI
CONST GUID mStatusCodeProtocolGuid = LENOVO_STATUS_CODE_PROTOCOL_GUID;(
VOID
);
EFI_STATUS
EFIAPI
debug register definitions(
VOID
);
EFI_STATUS
EFIAPI
code severity masks(
VOID
);
EFI_STATUS
EFIAPI
declarations(
VOID
);
/// read a UINT64 from memory
EFI_STATUS
EFIAPI
(0x179C)(
VOID
);
/// compare a HOB UUID to gEfiHobListGuid
EFI_STATUS
EFIAPI
(0x172C)(
VOID
);
/// find the HOB list in the
EFI_STATUS
EFIAPI
(0x159C)(
VOID
);
EFI_STATUS
EFIAPI
configuration table(
VOID
);
EFI_STATUS
EFIAPI
table entry: GUID (16 bytes) + VendorTable (8 bytes) = 24 bytes.(
VOID
);
EFI_STATUS
EFIAPI
(IsHobListGuid ((EFI_GUID *)(&EntryPtr[Index * 3]))) {(
VOID
);
EFI_STATUS
EFIAPI
((
VOID
);
/// locate the custom Lenovo protocol
EFI_STATUS
EFIAPI
(0x1420)(
VOID
);
EFI_STATUS
EFIAPI
= gBootServicesBs_->AllocatePool (EfiBootServicesData, 31, &Pool);(
VOID
);
/// CMOS-gated status code report
EFI_STATUS
EFIAPI
(0x14A8)(
VOID
);
EFI_STATUS
EFIAPI
debug level from CMOS register 0x4B.(
VOID
);
EFI_STATUS
EFIAPI
NMI bit (0x80) in the index byte.(
VOID
);
EFI_STATUS
EFIAPI
= (UINT8)(IoRead8 (CMOS_PORT_INDEX) & CMOS_NMI_MASK) | CMOS_DEBUG_REG;(
VOID
);
EFI_STATUS
EFIAPI
severity filter mask from the debug level.(
VOID
);
EFI_STATUS
EFIAPI
0 -> silent (all filtered)(
VOID
);
EFI_STATUS
EFIAPI
1 -> errors only (0xC0000000)(
VOID
);
EFI_STATUS
EFIAPI
2 -> + warnings (0x80000000)(
VOID
);
EFI_STATUS
EFIAPI
3 -> all severities(
VOID
);
EFI_STATUS
EFIAPI
= REPORT_SEVERITY_ERROR;(
VOID
);
/// forward ASSERT via the Lenovo protocol
EFI_STATUS
EFIAPI
(0x1528)(
VOID
);
EFI_STATUS
EFIAPI
(0x168C)(
VOID
);
EFI_STATUS
EFIAPI
callbacks(
VOID
);
/// clear the boot-services pointer on ExitBootServices.
EFI_STATUS
EFIAPI
(0x1568)(
VOID
);
EFI_STATUS
EFIAPI
EFIAPI(
VOID
);
/// convert the Lenovo protocol pointer on ExitBS.
EFI_STATUS
EFIAPI
(0x1574)(
VOID
);
/// NOP protocol notification.
EFI_STATUS
EFIAPI
(0x1674)(
VOID
);
/// convert RuntimeServices notification registration.
EFI_STATUS
EFIAPI
(0x1678)(
VOID
);
/// convert runtime protocol ptr on ExitBS/VAC.
EFI_STATUS
EFIAPI
(0x16EC)(
VOID
);
/// re-locate runtime protocol + set init done flag.
EFI_STATUS
EFIAPI
(0x1714)(
VOID
);
/// main initialisation
EFI_STATUS
EFIAPI
(0x10F4)(
VOID
);
EFI_STATUS
EFIAPI
= ImageHandle;(
VOID
);
EFI_STATUS
EFIAPI
();(
VOID
);
EFI_STATUS
EFIAPI
= gBootServicesBs_->RegisterProtocolNotify ((
VOID
);
EFI_STATUS
EFIAPI
(0x10D0)(
VOID
);
#endif /* __LNVDXESTATUSCODE_H__ */