| Address | Name | Description |
|---|---|---|
| ReadUnaligned64 | ||
| CompareGuidValue | ||
| PlatformSlotDataInit | ||
| UbaDebugAssert | ||
| SlotDataAccessor1 | ||
| SlotDataAccessor2 | ||
| SlotDataUpdateEntryPoint | ||
| Local | GUIDs | |
| UBA | Debug Protocol GUID used by assertion handler. | |
| EFI_GUID | gUbaDebugProtocolGuid = | |
| UBA | Slot Data Update Protocol GUID. | |
| EFI_GUID | gUbaSlotDataUpdateProtocolGuid = | |
| Platform | Slot Config GUID 1 (maps to 40-byte PSLT). | |
| EFI_GUID | gSlotConfigGuid40 = | |
| Platform | Slot Config GUID 2 (maps to 32-byte PSLT). | |
| EFI_GUID | gSlotConfigGuid32 = | |
| HOB | List GUID (defined in MdePkg). | |
| gEfiHobListGuid | = {0x7739F24C, 0x93D7, 0x11D4, {0x9A, 0x3A, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0x4D}} | |
| EFI_GUID | gEfiHobListGuid = | |
| Global | Variables | |
| EFI_SYSTEM_TABLE | *gSystemTable = NULL; | |
| Cached | UBA debug protocol pointer (for ASSERT output). | |
| VOID | *gUbaDebugProtocol = NULL; | |
| Cached | HOB list pointer. | |
| VOID | *gHobList = NULL; | |
| Static | data: Platform Slot Table (PSLT) entries | |
| PSLT | entry 1 (40 bytes): Dual-slot configuration. | |
| SlotIdentifier | = 0x4B0 -> SlotDataAccessor1 | |
| SlotIdentifier2 | = 0x4B4 -> SlotDataAccessor2 | |
| GLOBAL_REMOVE_IF_UNREFERENCED | UINT64 mSlotConfig40[] = { | |
| PSLT | entry 2 (32 bytes): Single-slot configuration. | |
| GLOBAL_REMOVE_IF_UNREFERENCED | UINT64 mSlotConfig32[] = { | |
| Function | Prototypes (forward declarations) | |
| VOID | *LocateDebugProtocol (VOID); | |
| Slot | Data Accessor Functions (referenced by PSLT entries) | |
| Helper | Functions | |
| UBA | Debug Protocol Support | |
| Raise | TPL to HIGH_LEVEL to serialize access during protocol lookup. | |
| OldTpl | = gBootServices->RaiseTPL (TPL_HIGH_LEVEL); | |
| Locate | the UBA debug protocol for assertion output. | |
| Status | = gBootServices->LocateProtocol ( | |
| Call | the assertion function at protocol + 0x08 (index 1). | |
| HOB | List Support | |
| Return | early if there are no configuration table entries. | |
| if | (gSystemTable->NumberOfTableEntries == 0) { | |
| Iterate | through configuration table entries to find gEfiHobListGuid. | |
| for | (Index = 0; Index < gSystemTable->NumberOfTableEntries; Index++) { | |
| Found | the HOB list - cache and return the pointer. | |
| gHobList | = Entry->VendorTable; | |
| HOB | list not found - report error and assert. | |
| DEBUG | ((DEBUG_ERROR, "\nASSERT_EFI_ERROR (Status = %r)\n", EFI_NOT_FOUND)); | |
| Platform | Detection & Slot Data Initialization | |
| Save | current NMI state and select CMOS register 0x4B. | |
| Register | 0x4B holds platform configuration data. | |
| NmiSave | = IoRead8 (0x70); | |
| Handle | special CMOS values: | |
| if | (CmosValue > 3) { | |
| Read | hardware strap from fixed MMIO address. | |
| Bit | 1 selects platform type; OR with 1 for default. | |
| CmosValue | **= (MmioRead32 (0xFDAF0490) & 2) | 1;** |
| Map | CMOS value to platform type flags: | |
| Value | **1 -> Flag | 0x00000004** |
| Other | **-> Flag | 0x00000006** |
| if | ((CmosValue - 1) <= 0xFD) { | |
| Dispatch | to UBA protocol slot data init handler (index 0 = first function pointer). | |
| The | protocol's first function handles platform-specific init dispatch: | |
| Result | = ((UINTN (EFIAPI )(UINTN, CHAR8 , UINTN))( | |
| Entry | Point | |
| Store | global EFI handles. | |
| gImageHandle | = ImageHandle; | |
| Validate | input parameters (uses UBA assert for output). | |
| ASSERT | (ImageHandle != NULL); | |
| Locate | the HOB list from the system table configuration table. | |
| LocateHobList | (); | |
| Perform | platform detection and slot data initialization | |
| via | the UBA framework. This checks CMOS register 0x4B | |
| and | dispatches to the appropriate platform type handler. | |
| PlatformSlotDataInit | (0x80000000, "UBA:SlotDataUpdate-TypeNeonCityEPECB\n"); | |
| Locate | the UBA slot data update protocol. | |
| LocalVariable | = 0; | |
| Register | 32-byte slot configuration (single slot, referenced by gSlotConfigGuid32). | |
| Status | = ((EFI_STATUS (EFIAPI )(VOID , EFI_GUID , VOID , UINTN))( | |
| Register | 40-byte slot configuration (dual slot, referenced by gSlotConfigGuid40). |
Generated by HR650X BIOS Decompilation Project