| Address | Name | Description |
|---|---|---|
| ZeroMemAligned64 | ||
| ModuleEntryPoint | ||
| UefiMainEntry | ||
| SmbiosType133RecordInstall | ||
| DebugPrint | ||
| GetPlatformDebugLevel | ||
| DebugAssert | ||
| ReadUnaligned64 | ||
| CompareGuid | ||
| Global | variables | |
| EFI_HANDLE | ImageHandle = NULL; | |
| Zero | 8-byte aligned chunks first. | |
| SetMem32 | ((UINT32 *)Buffer, 0, (UINT32)(Length >> 3)); | |
| Zero | the remaining bytes (0-7). | |
| SetMem8 | ( | |
| Initialize | the DXE global variables (ImageHandle, SystemTable | |
| UefiMainEntry | (ImageHandle, SystemTable); | |
| Locate | the SMBIOS protocol. | |
| Status | = gBS->LocateProtocol ( | |
| Install | a Type 133 SMBIOS record with the communication buffer address. | |
| return | SmbiosType133RecordInstall (SmbiosProtocol); | |
| Get | the HOB list from the system configuration table. | |
| GetHobList | (); | |
| Resolve | HII protocol GUIDs. | |
| Allocate | ACPI NVS memory for BIOS utility communication buffer (16KB). | |
| BufferAddr | = 0xFFFFFFFFULL; | |
| Allocate | the SMBIOS record structure. | |
| SmbiosRecord | = (SMBIOS_STRUCTURE *)AllocateACPINvsBuffer (); | |
| Zero | the record buffer (14 bytes for type 133 header + 2 handle). | |
| ZeroMem14 | ((UINTN)SmbiosRecord); | |
| Fill | in Type 133 SMBIOS record: | |
| Type | = SMBIOS_TYPE_BIOS_UTILITY_COMMUNICATION (133) | |
| Handle | = 0x0C85 (3205) | |
| Buffer | = ACPI NVS physical address | |
| Size | = 0x4000 (16KB) | |
| RecordHeader | = (EFI_SMBIOS_TABLE_HEADER *)SmbiosRecord; | |
| The | record payload contains: | |
| Add | the SMBIOS record. | |
| Status | = SmbiosProtocol->Add ( | |
| Only | attempt to locate protocol if we have a sane number of CPUs. | |
| return | NULL; | |
| Check | the platform debug level via CMOS index 0x4B. | |
| CurrentDebugLevel | = GetPlatformDebugLevel (); | |
| Error | level only: 0x80000004 (EFI_D_ERROR) | |
| AllowedMask | = DEBUG_ERROR; | |
| Allow | all except DEBUG_ERROR when in verbose mode. | |
| AllowedMask | = DEBUG_VERBOSE; | |
| Read | CMOS index 0x4B (debug level register). | |
| DebugRegister | = IoRead8 (CMOS_INDEX_PORT); | |
| Check | extended memory for debug settings on certain platforms. | |
| if | (DebugLevel == 0) { | |
| Check | for gEfiHobListGuid match. | |
| if | (CompareGuid (&gEfiHobListGuid, Guid1)) { | |
| If | we get here, the HOB list was not found. | |
| DEBUG | ((EFI_D_ERROR, "\nASSERT_EFI_ERROR (Status = %r)\n", EFI_NOT_FOUND)); | |
| Compare | the first 8 bytes (Data1 + Data2 + Data3). | |
| if | (ReadUnaligned64 ((UINT64 )Guid1) != ReadUnaligned64 ((UINT64 )Guid2)) { | |
| Compare | last 8 bytes (Data4). | |
| return | ReadUnaligned64 ((UINT64 )Guid1->Data4) == ReadUnaligned64 ((UINT64 )Guid2->Data4); |
Generated by HR650X BIOS Decompilation Project