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