\r
STATIC\r
EFI_STATUS\r
-MarkMemoryRangeForRuntimeAccess (\r
+MarkIoMemoryRangeForRuntimeAccess (\r
EFI_PHYSICAL_ADDRESS BaseAddress,\r
UINTN Length\r
)\r
{\r
EFI_STATUS Status;\r
+ EFI_GCD_MEMORY_SPACE_DESCRIPTOR GcdDescriptor;\r
\r
//\r
// Mark flash region as runtime memory\r
);\r
\r
Status = gDS->AddMemorySpace (\r
- EfiGcdMemoryTypeSystemMemory,\r
+ EfiGcdMemoryTypeMemoryMappedIo,\r
BaseAddress,\r
Length,\r
EFI_MEMORY_UC | EFI_MEMORY_RUNTIME\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
- Status = gBS->AllocatePages (\r
- AllocateAddress,\r
- EfiRuntimeServicesData,\r
- EFI_SIZE_TO_PAGES (Length),\r
- &BaseAddress\r
+ Status = gDS->AllocateMemorySpace (\r
+ EfiGcdAllocateAddress,\r
+ EfiGcdMemoryTypeMemoryMappedIo,\r
+ 0,\r
+ Length,\r
+ &BaseAddress,\r
+ gImageHandle,\r
+ NULL\r
+ );\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ Status = gDS->GetMemorySpaceDescriptor (BaseAddress, &GcdDescriptor);\r
+ ASSERT_EFI_ERROR (Status);\r
+\r
+ Status = gDS->SetMemorySpaceAttributes (\r
+ BaseAddress,\r
+ Length,\r
+ GcdDescriptor.Attributes | EFI_MEMORY_RUNTIME\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
//\r
InstallProtocolInterfaces (FvbDevice);\r
\r
- MarkMemoryRangeForRuntimeAccess (BaseAddress, Length);\r
+ MarkIoMemoryRangeForRuntimeAccess (BaseAddress, Length);\r
\r
//\r
// Set several PCD values to point to flash\r