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

SetupConfigUpdateDxeCLX64L

Function Table

Address Name Description
ReadUnaligned64
CompareGuidPair
DebugAssert
SetupConfigUpdateEntry
Globals // ---------------------------------------------------------------------------
UefiBootServicesTableLib / UefiRuntimeServicesTableLib backing
EFI_HANDLE gImageHandle = NULL;
Module globals
EFI_HANDLE mImageHandle = NULL; ///< Saved image handle
GUID instances
EFI_GUID gSetupConfigUpdateProtocolGuid = SETUP_CONFIG_UPDATE_PROTOCOL_GUID;
Embedded HOB list GUID, split across two QWORD-aligned storage locations
for efficient comparison in CompareGuidPair().
gHobListGuid = {7739F24C-93D7-11D4-9A3A-0090273FC14D}
Stored as two UINT64 values at gHobListGuidLo (0xB40) and
gHobListGuidHi (0xB48) for the inline comparison function to access
without loading the full GUID from .rdata.
STATIC CONST UINT64 gHobListGuidLo = 0x11D493D77739F24CULL; ///< First 8 bytes
Static PSET configuration data header for the CLX64L platform.
The full configuration block (header + payload) occupies 0x48C bytes.
STATIC CONST SETUP_CONFIG_DATA_HEADER mSetupConfigDataHeader = {
Helper functions
Locate the debug assert protocol from Boot Services.
STATIC VOID *mAssertProtocol = NULL;
Call the assert function at the protocol's standard offset.
HOB list locator
Return cached value if already resolved.
if (mHobList != NULL) {
if (gST->NumberOfTableEntries == 0) {
No configuration table entries emit diagnostic and assert.
DEBUG ((DEBUG_SETUP_CONFIG
Fall through to the NULL check below.
Walk the configuration table looking for the HOB list GUID.
Each entry is an EFI_CONFIGURATION_TULE (16-byte GUID + pointer).
ConfigTable = gST->ConfigurationTable;
Compare as two QWORDs (first 8 bytes, then second 8 bytes).
if ((GuidEntry[0] == HobGuidLo) && (GuidEntry[1] == HobGuidHi)) {
VendorTable follows the GUID in the configuration table entry.
Cast through byte pointer arithmetic to avoid strict aliasing.
mHobList = *(VOID )((UINT8 )GuidEntry + 16);*
If the HOB list was not found, emit a diagnostic.
if (mHobList == NULL) {
The HOB list must be non-NULL at this point.
Module entry point
gImageHandle = ImageHandle;
mHobList = GetHobList ();
Locate the configuration receiver protocol.
Status = gBS->LocateProtocol (
Registration (optional)
Protocol not found return the error status.
return Status;
Install the setup config via the receiver protocol.
Function at offset 0x10 in the protocol interface.
VOID *ConfigData, UINTN ConfigDataSize)
Status = ((EFI_STATUS (EFIAPI *)(
offset 0x10 = index 2

Generated by HR650X BIOS Decompilation Project