# SlotDataUpdateDxeLightningRidgeEXECB1

## Function Table

| Address | Name | Description |
|---------|------|-------------|
|  | **GetSlotCount** |  |
|  | **UbaDebugPrint** |  |
|  | **UbaDebugAssert** |  |
|  | **IsHobGuidMatch** |  |
|  | **ReadUnaligned64** |  |
|  | **_ModuleEntryPoint** |  |
| GUID | **Definitions (.data at 0xB60-0xBAF)** |  |
| GUID | **Externs (alias of STATIC definitions for any external consumers)** |  |
| Global | **Variables (.data at 0xC08-0xC28)** |  |
| PSLT | **Output Buffers (.data initialized data)** |  |
| Debug | **Strings (.rdata section, read-only)** |  |
| GetSlotCount | **(0x4B0)** |  |
| GetSlotData | **(0x4B4)** |  |
| UbaGetProtocolInterface | **(0x4B8)** |  |
| Raise | **to TPL_HIGH_LEVEL, then restore to sample current TPL level.** |  |
| LocateProtocol | **can only be called safely at TPL_NOTIFY or below.** |  |
| OldTpl | **= gBootServices->RaiseTPL (TPL_HIGH_LEVEL);** |  |
| Registration | **key not used** |  |
| UbaDebugPrint | **(0x538)** |  |
| Read | **CMOS register 0x4B.** |  |
| Preserve | **the NMI enable bit (bit 7) through the index write.** |  |
| NmiSave | **= IoRead8 (CMOS_INDEX_PORT);** |  |
| Translate | **CMOS value into platform type for debug mask selection.** |  |
| if | **(CmosData > 3) {** |  |
| Values | **> 3 are platform type indicators. Use cached type, or** |  |
| derive | **from hardware strap if first access.** |  |
| PlatformType | **= mPlatformType;** |  |
| Read | **hardware strap register from PCH MMIO.** |  |
| Bit | **1 indicates platform variant; OR with 1 ensures non-zero.** |  |
| PlatformType | **= (MmioRead8 (PLATFORM_STRAP_MMIO_ADDR) & 0x02) | 0x01;** |  |
| Values | **0-3 are direct verbosity levels.** |  |
| PlatformType | **= CmosData;** |  |
| Map | **platform type to debug severity mask.** |  |
| Type | **>= 1 produces either DE|DI (type 1) or DE|DV (type 2+).** |  |
| Type | **0 suppresses all output.** |  |
| if | **(PlatformType >= 1) {** |  |
| Forward | **to protocol DebugPrint if severity matches.** |  |
| if | **((DebugMask & DebugLevel) != 0) {** |  |
| UbaDebugAssert | **(0x5C0)** |  |
| GetHobList | **(0x600)** |  |
| If | **HOB list not found, assert with EFI_NOT_FOUND.** |  |
| if | **(mHobList == NULL) {** |  |
| IsHobGuidMatch | **(0x6D8)** |  |
| ReadUnaligned64 | **(0x748)** |  |
| _ModuleEntryPoint | **(0x390)** |  |
| Phase | **1: Cache and validate global service table pointers.** |  |
| while | **the other three use UefiBootServicesTableLib.c.** |  |
| This | **reflects the different library each global comes from.** |  |
| UbaDebugAssert | **(mRuntimeServicesLibPath, 47, mAssertRuntimeServicesStr);** |  |
| Phase | **2: Initialize HOB list from configuration table.** |  |
| Phase | **3: Emit driver identification into debug output.** |  |
| Phase | **4: Locate the UBA CONFIG protocol interface.** |  |
| This | **uses the PROTOCOL GUID AT 0xB70 (E03E0D46-...)** |  |
| which | **is SEPARATE from the DEBUG protocol at 0xB60** |  |
| used | **by UbaGetProtocolInterface/DebugPrint/DebugAssert.** |  |
| The | **config protocol provides GetData at vtable +0x10** |  |
| which | **reads PSLT entries from the UBA configuration store.** |  |
| No | **registration key** |  |
| Phase | **5: Read PSLT entry 1 (slot data) from UBA configuration.** |  |
| 32 | **bytes = PSLT_HEADER** |  |
| Phase | **6: Read PSLT entry 2 (slot config) from UBA configuration.** |  |
| 40 | **bytes = SLOT_CONFIG** |  |

---
*Generated by HR650X BIOS Decompilation Project*