Newer
Older
AMI-Aptio-BIOS-Reversed / SetupConfigUpdateDxeNeonCityEPRP / SetupConfigUpdateDxeNeonCityEPRP.md
@Ajax Dong Ajax Dong 2 days ago 2 KB Init

SetupConfigUpdateDxeNeonCityEPRP

Function Table

Address Name Description
EfiGetLastErrorCode
DebugPrint
DebugAssert
GuidCompare
ReadUnalignedQword
ModuleEntryPoint
Global data
CMOS debug-level storage (data segment at 0xBC8)
UINT8 gCmosDebugLevel;
EfiGetLastErrorCode // ---------------------------------------------------------------------------
Allocate pool header check - verify pool allocation size <= 0x10
This is a standard UEFI memory allocation guard
PoolSize = (UINT64)gBS->AllocatePool (EfiBootServicesData, 31);
Read CMOS diagnostic register at index 0x4B via RTC ports 0x70/0x71
IoWrite8 **(RTC_INDEX_PORT, IoRead8 (RTC_INDEX_PORT) & 0x80 CMOS_DIAG_ADDR);**
Validate debug level; handle special values
if (DebugLevel > 3) {
Debug level 0: read hardware strap from memory-mapped GPIO
DebugLevel *= ((volatile UINT8 *)(UINTN)0xFDAF0490) & 2 1;**
Determine enabled error masks based on debug level
if ((DebugLevel - 1) <= 0xFD) {
Debug level >= 1: standard masks apply
if (DebugLevel == 1) {
EFI_D_ERROR ** EFI_D_INIT**
EFI_D_ERROR ** EFI_D_INIT broader**
Call the protocol's DebugPrint function if error level matches
if ((EnabledMask & ErrorLevel) != 0) {
Found matching HOB GUID
Hob = *(VOID )((UINT64 )(SystemTable + 112) + 24 Index + 16);*
No match found: ASSERT
DebugPrint (DEBUG_ERROR, L"\nASSERT_EFI_ERROR (Status = %r)\n", EFI_ALREADY_STARTED);
Standard UEFI driver initialization: save ImageHandle and SystemTable
gImageHandle = (UINT64)ImageHandle;
Initialize HOB list
GetHobList ();
Register debug message for this driver
RegistrationHandle = 0;
Locate the SetupConfig protocol
Status = gBS->LocateProtocol (
Register notification callback for SetupConfig updates
The protocol at offset +16 (notify function) is called with:
return ((EFI_STATUS (EFIAPI )(VOID , VOID , VOID , UINTN))(

Generated by HR650X BIOS Decompilation Project