MemMap.c revision 4fd606d1f5abe38e1f42c38de1d2e895166bd0f4
199767f8919635c4928607450d9e0abb932109ceToomas Soome/** @file
199767f8919635c4928607450d9e0abb932109ceToomas Soome Main file for Mode shell Debug1 function.
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.<BR>
199767f8919635c4928607450d9e0abb932109ceToomas Soome This program and the acModeanying materials
199767f8919635c4928607450d9e0abb932109ceToomas Soome are licensed and made available under the terms and conditions of the BSD License
199767f8919635c4928607450d9e0abb932109ceToomas Soome which acModeanies this distribution. The full text of the license may be found at
199767f8919635c4928607450d9e0abb932109ceToomas Soome http://opensource.org/licenses/bsd-license.php
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
199767f8919635c4928607450d9e0abb932109ceToomas Soome WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome**/
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiReservedMemoryType[] = L"Reserved";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiLoaderCode[] = L"LoaderCode";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiLoaderData[] = L"LoaderData";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiBootServicesCode[] = L"BS_Code";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiBootServicesData[] = L"BS_Data";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiRuntimeServicesCode[] = L"RT_Code";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiRuntimeServicesData[] = L"RT_Data";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiConventionalMemory[] = L"Available";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiUnusableMemory[] = L"Unusable";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiACPIReclaimMemory[] = L"ACPIRec";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiACPIMemoryNVS[] = L"ACPI_NVS";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiMemoryMappedIO[] = L"MMIO";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiMemoryMappedIOPortSpace[] = L"MMIOPort";
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSTATIC CONST CHAR16 NameEfiPalCode[] = L"PalCode";
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome#include "UefiShellDebug1CommandsLib.h"
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome/**
199767f8919635c4928607450d9e0abb932109ceToomas Soome Function for 'memmap' command.
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome @param[in] ImageHandle Handle to the Image (NULL if Internal).
199767f8919635c4928607450d9e0abb932109ceToomas Soome @param[in] SystemTable Pointer to the System Table (NULL if Internal).
199767f8919635c4928607450d9e0abb932109ceToomas Soome**/
199767f8919635c4928607450d9e0abb932109ceToomas SoomeSHELL_STATUS
199767f8919635c4928607450d9e0abb932109ceToomas SoomeEFIAPI
199767f8919635c4928607450d9e0abb932109ceToomas SoomeShellCommandRunMemMap (
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_HANDLE ImageHandle,
199767f8919635c4928607450d9e0abb932109ceToomas Soome IN EFI_SYSTEM_TABLE *SystemTable
199767f8919635c4928607450d9e0abb932109ceToomas Soome )
199767f8919635c4928607450d9e0abb932109ceToomas Soome{
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_STATUS Status;
199767f8919635c4928607450d9e0abb932109ceToomas Soome LIST_ENTRY *Package;
199767f8919635c4928607450d9e0abb932109ceToomas Soome CHAR16 *ProblemParam;
199767f8919635c4928607450d9e0abb932109ceToomas Soome SHELL_STATUS ShellStatus;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINTN Size;
199767f8919635c4928607450d9e0abb932109ceToomas Soome EFI_MEMORY_DESCRIPTOR *Buffer;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINTN MapKey;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINTN ItemSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT32 Version;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT8 *Walker;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 ReservedPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 LoadCodePages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 LoadDataPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 BSCodePages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 BSDataPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 RTDataPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 RTCodePages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 AvailPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 TotalPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 ReservedPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 LoadCodePagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 LoadDataPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 BSCodePagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 BSDataPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 RTDataPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 RTCodePagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 AvailPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 TotalPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 AcpiReclaimPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 AcpiNvsPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 MmioSpacePages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 AcpiReclaimPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 AcpiNvsPagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome UINT64 MmioSpacePagesSize;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BOOLEAN Sfo;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiReclaimPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiNvsPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MmioSpacePages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome ReservedPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadCodePages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadDataPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSCodePages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSDataPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTDataPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTCodePages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome AvailPages = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome Size = 0;
199767f8919635c4928607450d9e0abb932109ceToomas Soome Buffer = NULL;
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellStatus = SHELL_SUCCESS;
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = EFI_SUCCESS;
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome //
199767f8919635c4928607450d9e0abb932109ceToomas Soome // initialize the shell lib (we must be in non-auto-init...)
199767f8919635c4928607450d9e0abb932109ceToomas Soome //
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = ShellInitialize();
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT_EFI_ERROR(Status);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = CommandInit();
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT_EFI_ERROR(Status);
199767f8919635c4928607450d9e0abb932109ceToomas Soome
199767f8919635c4928607450d9e0abb932109ceToomas Soome //
199767f8919635c4928607450d9e0abb932109ceToomas Soome // parse the command line
199767f8919635c4928607450d9e0abb932109ceToomas Soome //
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = ShellCommandLineParse (SfoParamList, &Package, &ProblemParam, TRUE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome if (EFI_ERROR(Status)) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, ProblemParam);
199767f8919635c4928607450d9e0abb932109ceToomas Soome FreePool(ProblemParam);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellStatus = SHELL_INVALID_PARAMETER;
199767f8919635c4928607450d9e0abb932109ceToomas Soome } else {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT(FALSE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome }
199767f8919635c4928607450d9e0abb932109ceToomas Soome } else {
199767f8919635c4928607450d9e0abb932109ceToomas Soome if (ShellCommandLineGetCount(Package) > 1) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellStatus = SHELL_INVALID_PARAMETER;
199767f8919635c4928607450d9e0abb932109ceToomas Soome } else {
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);
199767f8919635c4928607450d9e0abb932109ceToomas Soome if (Status == EFI_BUFFER_TOO_SMALL){
199767f8919635c4928607450d9e0abb932109ceToomas Soome Size += SIZE_1KB;
199767f8919635c4928607450d9e0abb932109ceToomas Soome Buffer = AllocateZeroPool(Size);
199767f8919635c4928607450d9e0abb932109ceToomas Soome Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);
199767f8919635c4928607450d9e0abb932109ceToomas Soome }
199767f8919635c4928607450d9e0abb932109ceToomas Soome if (EFI_ERROR(Status)) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_GET_FAILED), gShellDebug1HiiHandle, Status);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellStatus = SHELL_ACCESS_DENIED;
199767f8919635c4928607450d9e0abb932109ceToomas Soome } else {
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT(Version == EFI_MEMORY_DESCRIPTOR_VERSION);
199767f8919635c4928607450d9e0abb932109ceToomas Soome Sfo = ShellCommandLineGetFlag(Package, L"-sfo");
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_HEAD), gShellDebug1HiiHandle);
199767f8919635c4928607450d9e0abb932109ceToomas Soome for (Walker = (UINT8*)Buffer; Walker < (((UINT8*)Buffer)+Size) && Walker != NULL; Walker += ItemSize){
199767f8919635c4928607450d9e0abb932109ceToomas Soome switch (((EFI_MEMORY_DESCRIPTOR*)Walker)->Type) {
199767f8919635c4928607450d9e0abb932109ceToomas Soome // replaced ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages) with 0000
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiReservedMemoryType:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiReservedMemoryType, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome ReservedPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiLoaderCode:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiLoaderCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiLoaderData:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiLoaderData, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiBootServicesCode:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiBootServicesCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiBootServicesData:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiBootServicesData, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiRuntimeServicesCode:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiRuntimeServicesCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiRuntimeServicesData:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiRuntimeServicesData, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiConventionalMemory:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiConventionalMemory, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AvailPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiUnusableMemory:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiUnusableMemory, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiACPIReclaimMemory:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiACPIReclaimMemory, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiReclaimPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiACPIMemoryNVS:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiACPIMemoryNVS, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiNvsPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiMemoryMappedIO:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiMemoryMappedIO, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome MmioSpacePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiMemoryMappedIOPortSpace:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiMemoryMappedIOPortSpace, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome case EfiPalCode:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiPalCode, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart, ((EFI_MEMORY_DESCRIPTOR*)Walker)->PhysicalStart+MultU64x64(SIZE_4KB,((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages)-1, ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages, ((EFI_MEMORY_DESCRIPTOR*)Walker)->Attribute);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;
199767f8919635c4928607450d9e0abb932109ceToomas Soome break;
199767f8919635c4928607450d9e0abb932109ceToomas Soome default:
199767f8919635c4928607450d9e0abb932109ceToomas Soome ASSERT(FALSE);
199767f8919635c4928607450d9e0abb932109ceToomas Soome }
199767f8919635c4928607450d9e0abb932109ceToomas Soome }
199767f8919635c4928607450d9e0abb932109ceToomas Soome //
199767f8919635c4928607450d9e0abb932109ceToomas Soome // print the summary
199767f8919635c4928607450d9e0abb932109ceToomas Soome //
199767f8919635c4928607450d9e0abb932109ceToomas Soome ReservedPagesSize = MultU64x64(SIZE_4KB,ReservedPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadCodePagesSize = MultU64x64(SIZE_4KB,LoadCodePages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome LoadDataPagesSize = MultU64x64(SIZE_4KB,LoadDataPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSCodePagesSize = MultU64x64(SIZE_4KB,BSCodePages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome BSDataPagesSize = MultU64x64(SIZE_4KB,BSDataPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTDataPagesSize = MultU64x64(SIZE_4KB,RTDataPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome RTCodePagesSize = MultU64x64(SIZE_4KB,RTCodePages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AvailPagesSize = MultU64x64(SIZE_4KB,AvailPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome TotalPagesSize = MultU64x64(SIZE_4KB,TotalPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiReclaimPagesSize = MultU64x64(SIZE_4KB,AcpiReclaimPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome AcpiNvsPagesSize = MultU64x64(SIZE_4KB,AcpiNvsPages);
199767f8919635c4928607450d9e0abb932109ceToomas Soome MmioSpacePagesSize = MultU64x64(SIZE_4KB,MmioSpacePages);
if (!Sfo) {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_SUMM), gShellDebug1HiiHandle,
ReservedPages, ReservedPagesSize,
LoadCodePages, LoadCodePagesSize,
LoadDataPages, LoadDataPagesSize,
BSCodePages, BSCodePagesSize,
BSDataPages, BSDataPagesSize,
RTCodePages, RTCodePagesSize,
RTDataPages, RTDataPagesSize,
AcpiReclaimPages, AcpiReclaimPagesSize,
AcpiNvsPages, AcpiNvsPagesSize,
MmioSpacePages, MmioSpacePagesSize,
AvailPages, AvailPagesSize,
DivU64x32(MultU64x64(SIZE_4KB,TotalPages), SIZE_1MB), TotalPagesSize
);
} else {
ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_SUMM_SFO), gShellDebug1HiiHandle,
TotalPagesSize,
MultU64x64(SIZE_4KB,ReservedPages),
BSCodePagesSize,
BSDataPagesSize,
RTCodePagesSize,
RTDataPagesSize,
LoadCodePagesSize,
LoadDataPagesSize,
AvailPages, AvailPagesSize
);
}
}
}
ShellCommandLineFreeVarList (Package);
}
if (Buffer != NULL) {
FreePool(Buffer);
}
return (ShellStatus);
}