]> git.proxmox.com Git - mirror_edk2.git/blame - ShellPkg/Library/UefiShellDebug1CommandsLib/MemMap.c
ShellPkg/comp: Use proper parameter names
[mirror_edk2.git] / ShellPkg / Library / UefiShellDebug1CommandsLib / MemMap.c
CommitLineData
5d73d92f 1/** @file\r
2 Main file for Mode shell Debug1 function.\r
3\r
38707d76 4 (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
c011b6c9 5 (C) Copyright 2013-2015 Hewlett-Packard Development Company, L.P.<BR>\r
00ad50fd 6 Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.<BR>\r
d0cec2da 7 This program and the accompanying materials\r
5d73d92f 8 are licensed and made available under the terms and conditions of the BSD License\r
9 which acModeanies this distribution. The full text of the license may be found at\r
10 http://opensource.org/licenses/bsd-license.php\r
11\r
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
73768087
CP
17//\r
18// Need full names for Standard-Format Output\r
19//\r
3737ac2b 20STATIC CONST CHAR16 NameEfiReservedMemoryType[] = L"Reserved";\r
21STATIC CONST CHAR16 NameEfiLoaderCode[] = L"LoaderCode";\r
22STATIC CONST CHAR16 NameEfiLoaderData[] = L"LoaderData";\r
73768087
CP
23STATIC CONST CHAR16 NameEfiBootServicesCode[] = L"BootServiceCode";\r
24STATIC CONST CHAR16 NameEfiBootServicesData[] = L"BootServiceData";\r
25STATIC CONST CHAR16 NameEfiRuntimeServicesCode[] = L"RuntimeCode";\r
26STATIC CONST CHAR16 NameEfiRuntimeServicesData[] = L"RuntimeData";\r
3737ac2b 27STATIC CONST CHAR16 NameEfiConventionalMemory[] = L"Available";\r
6c4542ed 28STATIC CONST CHAR16 NameEfiPersistentMemory[] = L"Persistent";\r
73768087
CP
29STATIC CONST CHAR16 NameEfiUnusableMemory[] = L"UnusableMemory";\r
30STATIC CONST CHAR16 NameEfiACPIReclaimMemory[] = L"ACPIReclaimMemory";\r
31STATIC CONST CHAR16 NameEfiACPIMemoryNVS[] = L"ACPIMemoryNVS";\r
32STATIC CONST CHAR16 NameEfiMemoryMappedIO[] = L"MemoryMappedIO";\r
33STATIC CONST CHAR16 NameEfiMemoryMappedIOPortSpace[] = L"MemoryMappedIOPortSpace";\r
3737ac2b 34STATIC CONST CHAR16 NameEfiPalCode[] = L"PalCode";\r
5d73d92f 35\r
73768087
CP
36//\r
37// Need short names for some memory types\r
38//\r
39STATIC CONST CHAR16 NameEfiBootServicesCodeShort[] = L"BS_Code";\r
40STATIC CONST CHAR16 NameEfiBootServicesDataShort[] = L"BS_Data";\r
41STATIC CONST CHAR16 NameEfiRuntimeServicesCodeShort[] = L"RT_Code";\r
42STATIC CONST CHAR16 NameEfiRuntimeServicesDataShort[] = L"RT_Data";\r
43STATIC CONST CHAR16 NameEfiUnusableMemoryShort[] = L"Unusable";\r
44STATIC CONST CHAR16 NameEfiACPIReclaimMemoryShort[] = L"ACPI_Recl";\r
45STATIC CONST CHAR16 NameEfiACPIMemoryNVSShort[] = L"ACPI_NVS";\r
46STATIC CONST CHAR16 NameEfiMemoryMappedIOShort[] = L"MMIO";\r
47STATIC CONST CHAR16 NameEfiMemoryMappedIOPortSpaceShort[] = L"MMIO_Port";\r
48\r
5d73d92f 49#include "UefiShellDebug1CommandsLib.h"\r
50\r
3737ac2b 51/**\r
52 Function for 'memmap' command.\r
53\r
54 @param[in] ImageHandle Handle to the Image (NULL if Internal).\r
55 @param[in] SystemTable Pointer to the System Table (NULL if Internal).\r
56**/\r
5d73d92f 57SHELL_STATUS\r
58EFIAPI\r
59ShellCommandRunMemMap (\r
60 IN EFI_HANDLE ImageHandle,\r
61 IN EFI_SYSTEM_TABLE *SystemTable\r
62 )\r
63{\r
64 EFI_STATUS Status;\r
65 LIST_ENTRY *Package;\r
66 CHAR16 *ProblemParam;\r
67 SHELL_STATUS ShellStatus;\r
68 UINTN Size;\r
69 EFI_MEMORY_DESCRIPTOR *Buffer;\r
70 UINTN MapKey;\r
71 UINTN ItemSize;\r
72 UINT32 Version;\r
73 UINT8 *Walker;\r
74 UINT64 ReservedPages;\r
75 UINT64 LoadCodePages;\r
76 UINT64 LoadDataPages;\r
77 UINT64 BSCodePages;\r
78 UINT64 BSDataPages;\r
79 UINT64 RTDataPages;\r
80 UINT64 RTCodePages;\r
81 UINT64 AvailPages;\r
82 UINT64 TotalPages;\r
83 UINT64 ReservedPagesSize;\r
84 UINT64 LoadCodePagesSize;\r
85 UINT64 LoadDataPagesSize;\r
86 UINT64 BSCodePagesSize;\r
87 UINT64 BSDataPagesSize;\r
88 UINT64 RTDataPagesSize;\r
89 UINT64 RTCodePagesSize;\r
90 UINT64 AvailPagesSize;\r
91 UINT64 TotalPagesSize;\r
3737ac2b 92 UINT64 AcpiReclaimPages;\r
93 UINT64 AcpiNvsPages;\r
94 UINT64 MmioSpacePages;\r
95 UINT64 AcpiReclaimPagesSize;\r
96 UINT64 AcpiNvsPagesSize;\r
97 UINT64 MmioSpacePagesSize;\r
c12383d5
JC
98 UINT64 MmioPortPages;\r
99 UINT64 MmioPortPagesSize;\r
100 UINT64 UnusableMemoryPages;\r
101 UINT64 UnusableMemoryPagesSize;\r
102 UINT64 PalCodePages;\r
103 UINT64 PalCodePagesSize;\r
38707d76
TS
104 UINT64 PersistentPages;\r
105 UINT64 PersistentPagesSize;\r
5d73d92f 106 BOOLEAN Sfo;\r
107\r
3737ac2b 108 AcpiReclaimPages = 0;\r
109 AcpiNvsPages = 0;\r
110 MmioSpacePages = 0;\r
5d73d92f 111 TotalPages = 0;\r
112 ReservedPages = 0;\r
113 LoadCodePages = 0;\r
114 LoadDataPages = 0;\r
115 BSCodePages = 0;\r
116 BSDataPages = 0;\r
117 RTDataPages = 0;\r
118 RTCodePages = 0;\r
119 AvailPages = 0;\r
c12383d5
JC
120 MmioPortPages = 0;\r
121 UnusableMemoryPages = 0;\r
122 PalCodePages = 0;\r
38707d76 123 PersistentPages = 0;\r
5d73d92f 124 Size = 0;\r
125 Buffer = NULL;\r
126 ShellStatus = SHELL_SUCCESS;\r
127 Status = EFI_SUCCESS;\r
128\r
129 //\r
130 // initialize the shell lib (we must be in non-auto-init...)\r
131 //\r
132 Status = ShellInitialize();\r
133 ASSERT_EFI_ERROR(Status);\r
134\r
135 Status = CommandInit();\r
136 ASSERT_EFI_ERROR(Status);\r
137\r
138 //\r
139 // parse the command line\r
140 //\r
141 Status = ShellCommandLineParse (SfoParamList, &Package, &ProblemParam, TRUE);\r
142 if (EFI_ERROR(Status)) {\r
143 if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {\r
4092a8f6 144 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"memmap", ProblemParam); \r
5d73d92f 145 FreePool(ProblemParam);\r
146 ShellStatus = SHELL_INVALID_PARAMETER;\r
147 } else {\r
148 ASSERT(FALSE);\r
149 }\r
150 } else {\r
151 if (ShellCommandLineGetCount(Package) > 1) {\r
4092a8f6 152 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"memmap"); \r
5d73d92f 153 ShellStatus = SHELL_INVALID_PARAMETER;\r
154 } else {\r
155 Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);\r
156 if (Status == EFI_BUFFER_TOO_SMALL){\r
157 Size += SIZE_1KB;\r
3737ac2b 158 Buffer = AllocateZeroPool(Size);\r
5d73d92f 159 Status = gBS->GetMemoryMap(&Size, Buffer, &MapKey, &ItemSize, &Version);\r
160 }\r
161 if (EFI_ERROR(Status)) {\r
4092a8f6 162 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_GET_FAILED), gShellDebug1HiiHandle, L"memmap"); \r
5d73d92f 163 ShellStatus = SHELL_ACCESS_DENIED;\r
164 } else {\r
165 ASSERT(Version == EFI_MEMORY_DESCRIPTOR_VERSION);\r
73768087 166\r
5d73d92f 167 Sfo = ShellCommandLineGetFlag(Package, L"-sfo");\r
73768087
CP
168 if (!Sfo) {\r
169 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_HEAD), gShellDebug1HiiHandle);\r
170 } else {\r
171 ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_SFO_HEADER), gShellDebug1HiiHandle, L"memmap");\r
172 }\r
173\r
5d73d92f 174 for (Walker = (UINT8*)Buffer; Walker < (((UINT8*)Buffer)+Size) && Walker != NULL; Walker += ItemSize){\r
175 switch (((EFI_MEMORY_DESCRIPTOR*)Walker)->Type) {\r
5d73d92f 176 case EfiReservedMemoryType:\r
3737ac2b 177 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);\r
5d73d92f 178 ReservedPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 179 break;\r
180 case EfiLoaderCode:\r
3737ac2b 181 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);\r
5d73d92f 182 LoadCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
183 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
184 break;\r
185 case EfiLoaderData:\r
3737ac2b 186 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);\r
5d73d92f 187 LoadDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
188 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
189 break;\r
190 case EfiBootServicesCode:\r
73768087 191 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiBootServicesCodeShort: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);\r
5d73d92f 192 BSCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
193 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
194 break;\r
195 case EfiBootServicesData:\r
73768087 196 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiBootServicesDataShort: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);\r
5d73d92f 197 BSDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
198 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
199 break;\r
200 case EfiRuntimeServicesCode:\r
73768087 201 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiRuntimeServicesCodeShort: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);\r
5d73d92f 202 RTCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
203 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
204 break;\r
205 case EfiRuntimeServicesData:\r
73768087 206 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiRuntimeServicesDataShort: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);\r
5d73d92f 207 RTDataPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
208 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
209 break;\r
210 case EfiConventionalMemory:\r
3737ac2b 211 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);\r
6c4542ed
LG
212 AvailPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
213 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
214 break;\r
215 case EfiPersistentMemory:\r
216 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, NameEfiPersistentMemory, ((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);\r
38707d76
TS
217 PersistentPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
218 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 219 break;\r
220 case EfiUnusableMemory:\r
73768087 221 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiUnusableMemoryShort: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);\r
c12383d5 222 UnusableMemoryPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 223 break;\r
224 case EfiACPIReclaimMemory:\r
73768087 225 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiACPIReclaimMemoryShort: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);\r
5d73d92f 226 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
3737ac2b 227 AcpiReclaimPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 228 break;\r
229 case EfiACPIMemoryNVS:\r
73768087 230 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiACPIMemoryNVSShort: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);\r
5d73d92f 231 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
3737ac2b 232 AcpiNvsPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 233 break;\r
234 case EfiMemoryMappedIO:\r
73768087 235 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiMemoryMappedIOShort: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);\r
3737ac2b 236 MmioSpacePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 237 break;\r
238 case EfiMemoryMappedIOPortSpace:\r
73768087 239 ShellPrintHiiEx(-1, -1, NULL, (EFI_STRING_ID)(!Sfo?STRING_TOKEN (STR_MEMMAP_LIST_ITEM):STRING_TOKEN (STR_MEMMAP_LIST_ITEM_SFO)), gShellDebug1HiiHandle, !Sfo?NameEfiMemoryMappedIOPortSpaceShort: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);\r
c12383d5 240 MmioPortPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 241 break;\r
242 case EfiPalCode:\r
3737ac2b 243 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);\r
5d73d92f 244 TotalPages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
c12383d5 245 PalCodePages += ((EFI_MEMORY_DESCRIPTOR*)Walker)->NumberOfPages;\r
5d73d92f 246 break;\r
247 default:\r
248 ASSERT(FALSE);\r
249 }\r
250 }\r
251 //\r
252 // print the summary\r
253 //\r
73768087
CP
254 ReservedPagesSize = MultU64x64(SIZE_4KB,ReservedPages);\r
255 LoadCodePagesSize = MultU64x64(SIZE_4KB,LoadCodePages);\r
256 LoadDataPagesSize = MultU64x64(SIZE_4KB,LoadDataPages);\r
257 BSCodePagesSize = MultU64x64(SIZE_4KB,BSCodePages);\r
258 BSDataPagesSize = MultU64x64(SIZE_4KB,BSDataPages);\r
259 RTDataPagesSize = MultU64x64(SIZE_4KB,RTDataPages);\r
260 RTCodePagesSize = MultU64x64(SIZE_4KB,RTCodePages);\r
261 AvailPagesSize = MultU64x64(SIZE_4KB,AvailPages);\r
262 TotalPagesSize = MultU64x64(SIZE_4KB,TotalPages);\r
263 AcpiReclaimPagesSize = MultU64x64(SIZE_4KB,AcpiReclaimPages);\r
264 AcpiNvsPagesSize = MultU64x64(SIZE_4KB,AcpiNvsPages);\r
265 MmioSpacePagesSize = MultU64x64(SIZE_4KB,MmioSpacePages);\r
266 MmioPortPagesSize = MultU64x64(SIZE_4KB,MmioPortPages);\r
267 PalCodePagesSize = MultU64x64(SIZE_4KB,PalCodePages);\r
38707d76 268 PersistentPagesSize = MultU64x64(SIZE_4KB,PersistentPages);\r
73768087 269 UnusableMemoryPagesSize = MultU64x64(SIZE_4KB,UnusableMemoryPages);\r
5d73d92f 270 if (!Sfo) {\r
271 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_SUMM), gShellDebug1HiiHandle,\r
272 ReservedPages, ReservedPagesSize,\r
273 LoadCodePages, LoadCodePagesSize,\r
274 LoadDataPages, LoadDataPagesSize,\r
275 BSCodePages, BSCodePagesSize,\r
276 BSDataPages, BSDataPagesSize,\r
3737ac2b 277 RTCodePages, RTCodePagesSize,\r
5d73d92f 278 RTDataPages, RTDataPagesSize,\r
3737ac2b 279 AcpiReclaimPages, AcpiReclaimPagesSize,\r
280 AcpiNvsPages, AcpiNvsPagesSize,\r
281 MmioSpacePages, MmioSpacePagesSize,\r
73768087
CP
282 MmioPortPages, MmioPortPagesSize,\r
283 PalCodePages, PalCodePagesSize,\r
5d73d92f 284 AvailPages, AvailPagesSize,\r
38707d76 285 PersistentPages, PersistentPagesSize,\r
5d73d92f 286 DivU64x32(MultU64x64(SIZE_4KB,TotalPages), SIZE_1MB), TotalPagesSize\r
287 );\r
288 } else {\r
73768087 289 ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_MEMMAP_LIST_SUMM_SFO), gShellDebug1HiiHandle,\r
5d73d92f 290 TotalPagesSize,\r
73768087 291 ReservedPagesSize,\r
5d73d92f 292 BSCodePagesSize,\r
293 BSDataPagesSize,\r
294 RTCodePagesSize,\r
295 RTDataPagesSize,\r
296 LoadCodePagesSize,\r
297 LoadDataPagesSize,\r
c12383d5
JC
298 AvailPagesSize,\r
299 MmioSpacePagesSize,\r
300 MmioPortPagesSize,\r
301 UnusableMemoryPagesSize,\r
302 AcpiReclaimPagesSize,\r
303 AcpiNvsPagesSize,\r
38707d76
TS
304 PalCodePagesSize,\r
305 PersistentPagesSize\r
5d73d92f 306 );\r
307 }\r
308 }\r
309 }\r
310 ShellCommandLineFreeVarList (Package);\r
311 }\r
312\r
313 if (Buffer != NULL) {\r
314 FreePool(Buffer);\r
315 }\r
316\r
317 return (ShellStatus);\r
318}\r
319\r