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

PciOutOfResourceSetupPage

Function Table

Address Name Description
StrLen
ReadUnaligned64
CompareHobGuid
GetIfrBinaryLength
ReadDebugLevelFromCmos
Global data from .data section
HII Data Blob (from .data)
Contains the HII package list (formset GUID, IFR binary, strings, etc.)
Helper function wrappers (library-level)
Length < _gPcd_FixedAtBuild_PcdMaximumUnicodeStringLength
If Source and Destination overlap with Source > Destination
copy forward. If Destination > Source and they overlap, copy
backward to avoid clobbering.
Dst = (UINT8 *)Destination;
Overlap with Dst > Src copy backward from end
Src += Length;
Align to 8-byte boundary for backward copy
while ((UINTN)Src & 7) {
Copy remaining bytes backward
while (Length > 0) {
Forward copy (no overlap, or safe to copy forward)
AlignmentDelta = (UINTN)Src & 7;
Align both pointers
if (AlignmentDelta != 0) {
Copy 8 bytes at a time
if (Length >= 8) {
Copy remaining bytes
Align + Zero 8 bytes at a time
UINTN AlignedSize = Length & ~7;
HII Form Installation
Check for end-of-IFR marker: opcode 0x7F followed by 0xFF
if (Cursor[0] == 0x7F && Cursor[1] == 0xFF) {
Include the 4-byte EFI_IFR_END_FORM opcode
Get opcode length from bytes [2] (lo) and [3] (hi)
Cursor += 4; // Skip ahead to the content
treat as unsigned
Return pointer to last non-null character
Save current CMOS index, then read index 0x4B
CmosIndex = IoRead8 (0x70);
if (DebugByte == 0) {
Read ACPI/FADT bit to determine behavior
DebugByte **= MmioRead8 (0xFEDAF0490) & 2 1;**
Debug disabled
0x80000004 }
Full debug
to UEFI protocol interfaces and library functions, the remaining
functions (sub_EB4 ExtractConfig, sub_1178 RouteConfig, sub_13F0
fully described in the companion PciOutOfResourceSetupPage.md
The HII Config Access protocol registration flow:

Generated by HR650X BIOS Decompilation Project