# SlotDataUpdateDxeNeonCityEPECB

## Function Table

| 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*