| Address | Name | Description |
|---|---|---|
| ReturnNotFound | ||
| DebugAssert | ||
| DebugPrint | ||
| IsHobListGuid | ||
| ReadUnaligned64 | ||
| SetupConfigUpdateDxeNeonCityEPECBEntryPoint | ||
| These | global variables occupy memory in the .data section at fixed offsets. | |
| They | are accessed directly by the compiled code via RIP-relative addressing. | |
| Address | Name Description | |
| 0xB40 | mDebugProtocolGuid UBA Debug Protocol GUID | |
| 0xB50 | mUbaBoardTypeProtocolGuid UBA Board-Type Protocol GUID | |
| 0xB60 | mEfiHobListGuid EFI HOB List GUID | |
| 0xB68 | mEfiHobListGuidSecondHalf Second 8 bytes of HOB List GUID | |
| 0xB70 | mUbaSetupConfigGuid UBA Setup Config Protocol GUID | |
| 0xB80 | mSetupConfigData UBA_SETUP_CONFIG_DATA structure | |
| 0xBA0 | gBS_global Cached BootServices pointer | |
| 0xBA8 | gImageHandle_global Cached ImageHandle | |
| 0xBB0 | gRT_global Cached RuntimeServices pointer | |
| 0xBB8 | mDebugProtocol Cached Debug Protocol interface | |
| 0xBC0 | mHobList Cached HOB List pointer | |
| 0xBC8 | mCmosDebugLevel Cached CMOS debug level | |
| 0xB98 | gST_global Cached SystemTable pointer | |
| UBA | Debug Protocol GUID | |
| EFI_GUID | mDebugProtocolGuid = UBA_DEBUG_PROTOCOL_GUID; | |
| UBA | Board-Type Protocol GUID for NeonCity EP EC B | |
| EFI_GUID | mUbaBoardTypeProtocolGuid = UBA_BOARD_TYPE_PROTOCOL_GUID; | |
| EFI | HOB List GUID - used to locate the HOB list from the system | |
| configuration | table. The GUID is split into two 64-bit halves for | |
| the | optimized comparison in IsHobListGuid(). | |
| First | 8 bytes: 0x11D493D77739F24C (GUID.Data1 + Data2 + Data3 high) | |
| Second | 8 bytes: 0x4DC13F2700903A9A (GUID.Data3 low + Data4) | |
| EFI_GUID | mEfiHobListGuid = EFI_HOB_LIST_GUID; | |
| UBA | Setup Config Protocol GUID for NeonCity EP EC B | |
| EFI_GUID | mUbaSetupConfigGuid = UBA_SETUP_CONFIG_PROTOCOL_GUID; | |
| Setup | Configuration Data block. | |
| Signature | "PSET" (Platform SETup), Version 1, DataSize 0x48C (1164 bytes). | |
| This | data is provided to the setup engine via the board-type protocol. | |
| UBA_SETUP_CONFIG_DATA | mSetupConfigData = { | |
| Signature | 1, // Version | |
| DataSize | 0x48C // DataSize2 (duplicate) | |
| Cached | UEFI global pointers. | |
| EFI_HANDLE | *gImageHandle_global = NULL; // 0xBA8 | |
| 0xB98 | EFI_BOOT_SERVICES *gBS_global = NULL; // 0xBA0 | |
| 0xBB0 | // | |
| Cached | protocol and data pointers. | |
| VOID | *mDebugProtocol = NULL; // 0xBB8 - Cached Debug Protocol | |
| 0xBC0 | - Cached HOB List | |
| 0xBC8 | - Cached CMOS Debug Level | |
| Function | Implementations | |
| Return | cached value if already resolved. | |
| Protocol | = mDebugProtocol; | |
| Allocate | a small buffer (31 bytes = EfiBootServicesData pool type index) | |
| and | immediately free it. This validates that boot services are operational. | |
| If | the returned pointer value is > 0x10, the environment may not support | |
| protocol | lookup. | |
| PoolSize | = (UINTN)gBS_global->AllocatePool (EfiBootServicesData, 31); | |
| Valid | UEFI environment. Locate the UBA Debug Protocol. | |
| Cache | the result (or NULL if not found). | |
| Call | the assertion handler at protocol offset 0x08. | |
| return | ((UBA_DEBUG_PROTOCOL *)Protocol)->DebugAssert ( | |
| Get | the UBA Debug Protocol interface. | |
| Protocol | = GetDebugProtocol (); | |
| Read | the current CMOS index register, preserving bit 7 (NMI enable). | |
| Select | CMOS register index 0x4B for the debug level. | |
| CmosValue | = IoRead8 (RTC_INDEX_PORT); | |
| Read | the debug level from CMOS data port 0x71. | |
| DebugLevel | = IoRead8 (RTC_DATA_PORT); | |
| Determine | the effective debug level. | |
| if | (DebugLevel > 3) { | |
| Level | > 3 means the raw value is not a simple level encoding. | |
| Use | the cached value. | |
| DebugLevel | = mCmosDebugLevel; | |
| Bit | 1 indicates the board type, and bit 0 is always set. | |
| DebugLevel | **= (MmioRead32 (BOARD_CONFIG_MMIO_ADDR) & 2) | 1;** |
| Calculate | the debug mask from the level. | |
| Level | must be >= 1 and level - 1 <= 0xFD. | |
| if | ((DebugLevel > 0) && ((DebugLevel - 1) <= 0xFD)) { | |
| Map | platform ID to debug filter mask. | |
| Level | **1: mask = 0x80000004 (DEBUG_INIT | DEBUG_INFO)** |
| Level | >1: mask = 0x80000046 (multiple debug flags) | |
| if | (DebugLevel == 1) { | |
| If | the requested ErrorLevel is enabled by the mask, call the | |
| if | ((DebugMask & ErrorLevel) != 0) { | |
| if | (mHobList != NULL) { | |
| Initialize | to NULL. | |
| mHobList | = NULL; | |
| Check | if there are configuration table entries. | |
| TableCount | = gST_global->NumberOfTableEntries; | |
| Get | pointer to the configuration table array. | |
| ConfigTable | = gST_global->ConfigurationTable; | |
| Compare | the current entry's VendorGuid against EFI_HOB_LIST_GUID. | |
| if | (IsHobListGuid (&ConfigTable[Index].VendorGuid)) { | |
| Found | the HOB list. Extract the VendorTable pointer. | |
| mHobList | = ConfigTable[Index].VendorTable; | |
| HOB | list not found. Raise ASSERT_EFI_ERROR. | |
| DebugPrint | (0x80000000, L"\nASSERT_EFI_ERROR (Status = %r)\n", EFI_NOT_FOUND); | |
| If | mHobList is still NULL, raise another assertion. | |
| if | (mHobList == NULL) { | |
| Compare | first 8 bytes of the GUID against the first half of the | |
| cached | EFI_HOB_LIST_GUID. | |
| if | (ReadUnaligned64 (&mEfiHobListGuid) != ReadUnaligned64 (GuidPtr)) { | |
| Compare | second 8 bytes of the GUID (at offset 8). | |
| return | ReadUnaligned64 ((UINT8 *)&mEfiHobListGuid + 8) == | |
| Cache | ImageHandle with assertion check. | |
| gImageHandle_global | = (EFI_HANDLE *)ImageHandle; | |
| Cache | SystemTable with assertion check. | |
| gST_global | = SystemTable; | |
| Cache | BootServices from SystemTable with assertion check. | |
| gBS_global | = SystemTable->BootServices; | |
| Cache | RuntimeServices from SystemTable with assertion check. | |
| gRT_global | = SystemTable->RuntimeServices; | |
| Locate | the HOB list from the system configuration table. | |
| GetHobList | (); | |
| debug banner. | ||
| DebugPrint | (0x80000000, L"UBA:SETUPConfigUpdate-TypeNeonCityEPECB\n"); | |
| Locate | the UBA board-type protocol. | |
| Call | the board-type protocol's RegisterSetupConfig function. | |
| This | registers the setup configuration GUID and data block for | |
| the | NeonCity EP EC B platform. | |
| return | BoardProtocol->RegisterSetupConfig ( |
Generated by HR650X BIOS Decompilation Project