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

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