]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Core/Dxe/Mem/Page.c
MdeModulePkg: Add Memory Capabilities for MMIO and Reserved Range
[mirror_edk2.git] / MdeModulePkg / Core / Dxe / Mem / Page.c
index f2efaf12787b072b10e273d40e82f38acc42e772..a28552934f6baba5d2402b241c23edfd60e3e917 100644 (file)
@@ -1665,7 +1665,9 @@ CoreGetMemoryMap (
       MemoryMap->PhysicalStart = GcdMapEntry->BaseAddress;\r
       MemoryMap->VirtualStart  = 0;\r
       MemoryMap->NumberOfPages = RShiftU64 ((GcdMapEntry->EndAddress - GcdMapEntry->BaseAddress + 1), EFI_PAGE_SHIFT);\r
-      MemoryMap->Attribute     = GcdMapEntry->Attributes & ~EFI_MEMORY_PORT_IO;\r
+      MemoryMap->Attribute     = (GcdMapEntry->Attributes & ~EFI_MEMORY_PORT_IO) | \r
+                                (GcdMapEntry->Capabilities & (EFI_MEMORY_RP | EFI_MEMORY_WP | EFI_MEMORY_XP | EFI_MEMORY_RO |\r
+                                EFI_MEMORY_UC | EFI_MEMORY_UCE | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB));\r
 \r
       if (GcdMapEntry->GcdMemoryType == EfiGcdMemoryTypeReserved) {\r
         MemoryMap->Type = EfiReservedMemoryType;\r
@@ -1691,7 +1693,9 @@ CoreGetMemoryMap (
       MemoryMap->PhysicalStart = GcdMapEntry->BaseAddress;\r
       MemoryMap->VirtualStart  = 0;\r
       MemoryMap->NumberOfPages = RShiftU64 ((GcdMapEntry->EndAddress - GcdMapEntry->BaseAddress + 1), EFI_PAGE_SHIFT);\r
-      MemoryMap->Attribute     = GcdMapEntry->Attributes | EFI_MEMORY_NV;\r
+      MemoryMap->Attribute     = GcdMapEntry->Attributes | EFI_MEMORY_NV | \r
+                                (GcdMapEntry->Capabilities & (EFI_MEMORY_RP | EFI_MEMORY_WP | EFI_MEMORY_XP | EFI_MEMORY_RO |\r
+                                EFI_MEMORY_UC | EFI_MEMORY_UCE | EFI_MEMORY_WC | EFI_MEMORY_WT | EFI_MEMORY_WB));\r
       MemoryMap->Type          = EfiPersistentMemory;\r
       \r
       //\r