| Address | Name | Description |
|---|---|---|
| DebugLog | ||
| AssertFatal | ||
| OnExitBootServices | ||
| OnVirtualAddressChange | ||
| FreePoolOrAssert | ||
| CompareGuidPair | ||
| ReadUnaligned64 | ||
| ElogVirtualAddressChangeEvent | ||
| EnumerateRedirectProtocols | ||
| GenericElogWriteEvent | ||
| GenericElogReadEvent | ||
| GenericElogGetStatus | ||
| GenericElogSetStatus | ||
| ElogDriverInit | ||
| GenericElogEntryPoint | ||
| ElogDriverMain | ||
| External | GUID declarations (from .rdata section) | |
| extern | EFI_GUID gEfiGenericElogProtocolGuid; | |
| Globals | // | |
| The | local structure that holds redirect-protocol pointers | |
| and | the function dispatch table. | |
| STATIC | VOID *gElogLocalStructure = NULL; | |
| Debug | / assertion output handle | |
| STATIC | VOID *gDebugOutputHandle = NULL; | |
| HOB | list pointer (discovered during init) | |
| STATIC | VOID *gHobList = NULL; | |
| STATIC | VOID * | |
| This | is a simplified memset(0) for the given buffer. | |
| The | original implementation used 8-byte aligned stores | |
| followed | by a byte-wise tail. | |
| ZeroMem | (Buffer, Length); | |
| Returns | the debug output handle (if available). | |
| STATIC | EFI_STATUS | |
| Read | CMOS offset 0x4B to determine the current debug level. | |
| If | the debug level is <= 3, clamp it. | |
| BiosDebugLevel | = IoRead8 (0x70); | |
| Map | BIOS debug level to EFI debug mask. | |
| UINTN | DebugMask = 0x80000400; // EFI_D_ERROR (default) | |
| EFI_D_INFO | } | |
| STATIC | VOID | |
| Allocate | zeroed pool (originally sub_19B0) | |
| Free | pool with ASSERT (originally sub_19E8) | |
| Create | a notification event and register for protocol callbacks | |
| Discover | HOB list from the System Table (originally sub_1B18) | |
| GUID | comparison helper (originally sub_1BF0) | |
| STATIC | BOOLEAN | |
| Compare | two GUIDs by reading them as 64-bit halves. | |
| EFI_GUID | LocalGuid1; | |
| Read | unaligned UINT64 (originally sub_1C60) | |
| STATIC | UINT64 | |
| Converts | pointers in the gElogLocalStructure for runtime. | |
| Convert | each redirect handle pointer in the array | |
| Count | = (UINT8 )((UINT8 *)gElogLocalStructure + ELOG_STRUCT_REDIR_COUNT_OFFSET); | |
| Convert | the structure's base pointers. | |
| Enumerate | redirect protocols (originally sub_146C) | |
| Locates | all handles that publish gEfiRedirElogProtocolGuid and stores | |
| up | to ELOG_MAX_REDIRECTS of them in gElogLocalStructure. | |
| Reset | the redirect count. | |
| GenericElogWriteEvent | - dispatch to redirect handlers (originally sub_1550) | |
| Maximum | log type check. | |
| if | (LogType >= ELOG_MAX_REDIRECTS) { | |
| GenericElogReadEvent | - dispatch to redirect handlers (originally sub_160C) | |
| GenericElogGetStatus | - dispatch to redirect handlers (originally sub_16B0) | |
| GenericElogSetStatus | - dispatch to redirect handlers (originally sub_1738) | |
| Module | initialization (originally sub_1108) | |
| Saves | ImageHandle / SystemTable / BootServices / RuntimeServices | |
| creates | the exit-boot-services event and the virtual-address-change | |
| Save | globals. | |
| gImageHandle | = ImageHandle; | |
| Save | copies for runtime conversion. | |
| gRuntimeServicesCopy | = gRuntimeServices; | |
| Create | ExitBootServices notification that clears the BS copy. | |
| Create | protocol notification for the GenericElog protocol | |
| which | triggers redirect-protocol enumeration. | |
| Create | VirtualAddressChange notification to convert pointers. | |
| Discover | the HOB list. | |
| return | (EFI_STATUS)GetHobList (); | |
| Module | entry point (originally ModuleEntryPoint at 0x10C4) | |
| See | GenericElogEntryPoint in the header. | |
| Stage | 1: Save globals, create events, discover HOBs. | |
| ElogDriverInit | (ImageHandle, SystemTable); | |
| Stage | 2: Allocate the local structure, set up the protocol dispatch | |
| install | the GenericElog protocol, enumerate redirects, and register | |
| the | virtual-address-change event handler. | |
| Status | = (EFI_STATUS)(UINTN)ElogDriverMain (); | |
| Clean | up resources on failure. | |
| if | (gBootServicesCopy != NULL) { | |
| Driver | main (originally sub_1210) | |
| Allocates | the gElogLocalStructure, fills in the dispatch table | |
| installs | the GenericElog protocol, enumerates redirect handlers | |
| creates | the virtual-address-change event, and registers the | |
| notification | event for the RedirElog protocol. | |
| The | dispatch function pointers are embedded in the local structure. | |
| Allocate | the local structure (0x49 bytes). | |
| gElogLocalStructure | = AllocateZeroedPool (0x49); | |
| Fill | in the dispatch table at the beginning of the structure. | |
| Install | the GenericElog protocol. | |
| Status | = gBootServices->InstallProtocolInterface ( | |
| Enumerate | existing redirect protocols and register for new ones. | |
| Registration | = CreateProtocolNotifyEvent ( | |
| Create | the VirtualAddressChange event. |
Generated by HR650X BIOS Decompilation Project