gArmTokenSpaceGuid.PcdNormalFdBaseAddress|0|UINT32|0x0000002B\r
gArmTokenSpaceGuid.PcdNormalFdSize|0|UINT32|0x0000002C\r
\r
+ # System Memory (DRAM): These PCDs define the region of in-built system memory\r
+ # Some platforms can get DRAM extensions, these additional regions will be declared\r
+ # to UEFI by ArmPLatformPlib \r
+ gArmTokenSpaceGuid.PcdSystemMemoryBase|0|UINT32|0x00000029\r
+ gArmTokenSpaceGuid.PcdSystemMemorySize|0|UINT32|0x0000002A\r
+\r
#\r
# ARM MPCore MailBox PCDs\r
#\r
# Stack for CPU Cores in Non Secure Mode
gArmPlatformTokenSpaceGuid.PcdCPUCoresNonSecStackBase|0|UINT32|0x00000008
gArmPlatformTokenSpaceGuid.PcdCPUCoresNonSecStackSize|0|UINT32|0x00000009
+
+ # Size of the region used by UEFI in permanent memory (Reserved 128MB by default)
+ gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x08000000|UINT32|0x00000015
+
+ # Size of the region reserved for fixed address allocations (Reserved 128MB by default)
+ gArmPlatformTokenSpaceGuid.PcdSystemMemoryFixRegionSize|0x08000000|UINT32|0x00000014
gArmTokenSpaceGuid.PcdNormalFdBaseAddress|0x40050000 # Must be equal to gEmbeddedTokenSpaceGuid.PcdFlashFvMainBase\r
gArmTokenSpaceGuid.PcdNormalFdSize|0x00100000 # Must be equal to gEmbeddedTokenSpaceGuid.PcdFlashFvMainSize\r
\r
+ # System Memory (256MB) \r
+ gArmTokenSpaceGuid.PcdSystemMemoryBase|0x70000000\r
+ gArmTokenSpaceGuid.PcdSystemMemorySize|0x10000000\r
+ \r
+ # Size of the region used by UEFI in permanent memory (Reserved 64MB)\r
+ gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000\r
+ \r
gEmbeddedTokenSpaceGuid.PcdTimerPeriod|100000 # expressed in 100ns units, 100,000 x 100 ns = 10,000,000 ns = 10 ms\r
\r
#\r
gArmTokenSpaceGuid.PcdNormalFdBaseAddress|0x40050000 # Must be equal to gEmbeddedTokenSpaceGuid.PcdFlashFvMainBase
gArmTokenSpaceGuid.PcdNormalFdSize|0x00100000 # Must be equal to gEmbeddedTokenSpaceGuid.PcdFlashFvMainSize
+ # System Memory (256MB)
+ gArmTokenSpaceGuid.PcdSystemMemoryBase|0x70000000
+ gArmTokenSpaceGuid.PcdSystemMemorySize|0x10000000
+
+ # Size of the region used by UEFI in permanent memory (Reserved 64MB)
+ gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize|0x04000000
+
gEmbeddedTokenSpaceGuid.PcdTimerPeriod|100000 # expressed in 100ns units, 100,000 x 100 ns = 10,000,000 ns = 10 ms
#
#define DDR_ATTRIBUTES_SECURE_CACHED ARM_MEMORY_REGION_ATTRIBUTE_SECURE_WRITE_BACK\r
#define DDR_ATTRIBUTES_SECURE_UNCACHED ARM_MEMORY_REGION_ATTRIBUTE_SECURE_UNCACHED_UNBUFFERED\r
\r
-/**\r
- Return the information about the memory region in permanent memory used by PEI\r
-\r
- One of the PEI Module must install the permament memory used by PEI. This function returns the\r
- information about this region for your platform to this PEIM module.\r
-\r
- @param[out] PeiMemoryBase Base of the memory region used by PEI core and modules\r
- @param[out] PeiMemorySize Size of the memory region used by PEI core and modules\r
-\r
-**/\r
-VOID ArmPlatformGetPeiMemory (\r
- OUT UINTN* PeiMemoryBase,\r
- OUT UINTN* PeiMemorySize\r
- ) {\r
- ASSERT((PeiMemoryBase != NULL) && (PeiMemorySize != NULL));\r
- \r
- *PeiMemoryBase = ARM_EB_DRAM_BASE + ARM_EB_EFI_FIX_ADDRESS_REGION_SZ;\r
- *PeiMemorySize = ARM_EB_EFI_MEMORY_REGION_SZ;\r
-}\r
-\r
/**\r
Return the Virtual Memory Map of your platform\r
\r
EFI Memory region. This array must be ended by a zero-filled entry\r
\r
**/\r
-VOID ArmPlatformGetEfiMemoryMap (\r
+EFI_STATUS\r
+ArmPlatformGetAdditionalSystemMemory (\r
OUT ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR** EfiMemoryMap\r
) {\r
- EFI_RESOURCE_ATTRIBUTE_TYPE Attributes;\r
- UINT64 MemoryBase;\r
- UINTN Index = 0;\r
- ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR *EfiMemoryTable;\r
-\r
- ASSERT(EfiMemoryMap != NULL);\r
-\r
- EfiMemoryTable = (ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR*)AllocatePages(sizeof(ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR) * 6);\r
-\r
- Attributes =\r
- (\r
- EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
- EFI_RESOURCE_ATTRIBUTE_INITIALIZED |\r
- EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_TESTED\r
- );\r
- MemoryBase = ARM_EB_DRAM_BASE;\r
- \r
- // Memory Reserved for fixed address allocations (such as Exception Vector Table)\r
- EfiMemoryTable[Index].ResourceAttribute = Attributes;\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = ARM_EB_EFI_FIX_ADDRESS_REGION_SZ;\r
- \r
- MemoryBase += ARM_EB_EFI_FIX_ADDRESS_REGION_SZ;\r
-\r
- // Memory declared to PEI as permanent memory for PEI and DXE\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes;\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = ARM_EB_EFI_MEMORY_REGION_SZ;\r
-\r
- MemoryBase += ARM_EB_EFI_MEMORY_REGION_SZ;\r
-\r
- // We must reserve the memory used by the Firmware Volume copied in DRAM at 0x80000000\r
- if (FeaturePcdGet(PcdStandalone) == FALSE) {\r
- // Chunk between the EFI Memory region and the firmware\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes;\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = PcdGet32(PcdNormalFdBaseAddress) - MemoryBase;\r
-\r
- // Chunk reserved by the firmware in DRAM\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes & (~EFI_RESOURCE_ATTRIBUTE_PRESENT);\r
- EfiMemoryTable[Index].PhysicalStart = PcdGet32(PcdNormalFdBaseAddress);\r
- EfiMemoryTable[Index].NumberOfBytes = PcdGet32(PcdNormalFdSize);\r
-\r
- MemoryBase = PcdGet32(PcdNormalFdBaseAddress) + PcdGet32(PcdNormalFdSize);\r
- }\r
- \r
- // We allocate all the remain memory as untested system memory\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes & (~EFI_RESOURCE_ATTRIBUTE_TESTED);\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = ARM_EB_DRAM_SZ - (MemoryBase-ARM_EB_DRAM_BASE);\r
-\r
- EfiMemoryTable[++Index].ResourceAttribute = 0;\r
- EfiMemoryTable[Index].PhysicalStart = 0;\r
- EfiMemoryTable[Index].NumberOfBytes = 0;\r
-\r
- *EfiMemoryMap = EfiMemoryTable;\r
+ return EFI_UNSUPPORTED;\r
}\r
gArmPlatformTokenSpaceGuid.PcdCPUCoresNonSecStackSize|0x00020000 # Stack for each of the 4 CPU cores
gArmPlatformTokenSpaceGuid.PcdPeiServicePtrAddr|0x48020004 # pei services ptr just above stack. Overlapped with the stack of CoreId 1
+
+ # System Memory (1GB)
+ gArmTokenSpaceGuid.PcdSystemMemoryBase|0x60000000
+ gArmTokenSpaceGuid.PcdSystemMemorySize|0x40000000
+
gEmbeddedTokenSpaceGuid.PcdTimerPeriod|100000 # expressed in 100ns units, 100,000 x 100 ns = 10,000,000 ns = 10 ms
#
#define DDR_ATTRIBUTES_SECURE_CACHED ARM_MEMORY_REGION_ATTRIBUTE_SECURE_WRITE_BACK\r
#define DDR_ATTRIBUTES_SECURE_UNCACHED ARM_MEMORY_REGION_ATTRIBUTE_SECURE_UNCACHED_UNBUFFERED\r
\r
-/**\r
- Return the information about the memory region in permanent memory used by PEI\r
-\r
- One of the PEI Module must install the permament memory used by PEI. This function returns the\r
- information about this region for your platform to this PEIM module.\r
-\r
- @param[out] PeiMemoryBase Base of the memory region used by PEI core and modules\r
- @param[out] PeiMemorySize Size of the memory region used by PEI core and modules\r
-\r
-**/\r
-VOID ArmPlatformGetPeiMemory (\r
- OUT UINTN* PeiMemoryBase,\r
- OUT UINTN* PeiMemorySize\r
- ) {\r
- ASSERT((PeiMemoryBase != NULL) && (PeiMemorySize != NULL));\r
- \r
- *PeiMemoryBase = ARM_VE_DRAM_BASE + ARM_VE_EFI_FIX_ADDRESS_REGION_SZ;\r
- *PeiMemorySize = ARM_VE_EFI_MEMORY_REGION_SZ;\r
-}\r
-\r
/**\r
Return the Virtual Memory Map of your platform\r
\r
EFI Memory region. This array must be ended by a zero-filled entry\r
\r
**/\r
-VOID ArmPlatformGetEfiMemoryMap (\r
- OUT ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR** EfiMemoryMap\r
-) {\r
- EFI_RESOURCE_ATTRIBUTE_TYPE Attributes;\r
- UINT64 MemoryBase;\r
- UINTN Index = 0;\r
- ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR *EfiMemoryTable;\r
-\r
- ASSERT(EfiMemoryMap != NULL);\r
-\r
- EfiMemoryTable = (ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR*)AllocatePages(sizeof(ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR) * 6);\r
-\r
- Attributes =\r
- (\r
- EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
- EFI_RESOURCE_ATTRIBUTE_INITIALIZED |\r
- EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE |\r
- EFI_RESOURCE_ATTRIBUTE_TESTED\r
- );\r
- MemoryBase = ARM_VE_DRAM_BASE;\r
- \r
- // Memory Reserved for fixed address allocations (such as Exception Vector Table)\r
- EfiMemoryTable[Index].ResourceAttribute = Attributes;\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = ARM_VE_EFI_FIX_ADDRESS_REGION_SZ;\r
- \r
- MemoryBase += ARM_VE_EFI_FIX_ADDRESS_REGION_SZ;\r
-\r
- // Memory declared to PEI as permanent memory for PEI and DXE\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes;\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = ARM_VE_EFI_MEMORY_REGION_SZ;\r
-\r
- MemoryBase += ARM_VE_EFI_MEMORY_REGION_SZ;\r
-\r
- // We must reserve the memory used by the Firmware Volume copied in DRAM at 0x80000000\r
- if (FeaturePcdGet(PcdStandalone) == FALSE) {\r
- // Chunk between the EFI Memory region and the firmware\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes;\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = PcdGet32(PcdNormalFdBaseAddress) - MemoryBase;\r
-\r
- // Chunk reserved by the firmware in DRAM\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes & (~EFI_RESOURCE_ATTRIBUTE_PRESENT);\r
- EfiMemoryTable[Index].PhysicalStart = PcdGet32(PcdNormalFdBaseAddress);\r
- EfiMemoryTable[Index].NumberOfBytes = PcdGet32(PcdNormalFdSize);\r
-\r
- MemoryBase = PcdGet32(PcdNormalFdBaseAddress) + PcdGet32(PcdNormalFdSize);\r
- }\r
- \r
- // We allocate all the remain memory as untested system memory\r
- EfiMemoryTable[++Index].ResourceAttribute = Attributes & (~EFI_RESOURCE_ATTRIBUTE_TESTED);\r
- EfiMemoryTable[Index].PhysicalStart = MemoryBase;\r
- EfiMemoryTable[Index].NumberOfBytes = ARM_VE_DRAM_SZ - (MemoryBase-ARM_VE_DRAM_BASE);\r
-\r
- EfiMemoryTable[++Index].ResourceAttribute = 0;\r
- EfiMemoryTable[Index].PhysicalStart = 0;\r
- EfiMemoryTable[Index].NumberOfBytes = 0;\r
-\r
- *EfiMemoryMap = EfiMemoryTable;\r
+EFI_STATUS\r
+ArmPlatformGetAdditionalSystemMemory (\r
+ OUT ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR** EfiMemoryMap\r
+ )\r
+{\r
+ return EFI_UNSUPPORTED;\r
}\r
EFI Memory region. This array must be ended by a zero-filled entry
**/
-VOID ArmPlatformGetEfiMemoryMap (
- OUT ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR** EfiMemoryMap
-);
+EFI_STATUS
+ArmPlatformGetAdditionalSystemMemory (
+ OUT ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR** EfiMemoryMap
+ );
#endif
#include <Library/PeiServicesLib.h>\r
#include <Library/ArmLib.h>\r
#include <Library/IoLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
#include <Library/ArmPlatformLib.h>\r
\r
//\r
BuildGuidDataHob (&gEfiMemoryTypeInformationGuid, &Info, sizeof (Info));\r
}\r
\r
-EFI_STATUS\r
-EFIAPI\r
-InitializeMemory (\r
- IN EFI_PEI_FILE_HANDLE FileHandle,\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
- )\r
/*++\r
\r
Routine Description:\r
Status - EFI_SUCCESS if the boot mode could be set\r
\r
--*/\r
+EFI_STATUS\r
+EFIAPI\r
+InitializeMemory (\r
+ IN EFI_PEI_FILE_HANDLE FileHandle,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
+ )\r
{\r
- EFI_STATUS Status;\r
- ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR* EfiMemoryMap;\r
- UINTN PeiMemoryBase;\r
- UINTN PeiMemorySize;\r
- UINTN Index;\r
+ EFI_STATUS Status;\r
+ EFI_RESOURCE_ATTRIBUTE_TYPE Attributes;\r
+ ARM_SYSTEM_MEMORY_REGION_DESCRIPTOR* EfiMemoryMap;\r
+ UINTN Index;\r
+ UINTN SystemMemoryTop;\r
+ UINTN UefiMemoryBase;\r
+ UINTN UefiMemorySize;\r
\r
DEBUG ((EFI_D_ERROR, "Memory Init PEIM Loaded\n"));\r
\r
- // If it is not a standalone version, then we need to initialize the System Memory\r
- // In case of a standalone version, the DRAM is already initialized\r
+ // Ensure PcdSystemMemorySize has been set\r
+ ASSERT (FixedPcdGet32 (PcdSystemMemorySize) != 0);\r
+\r
+ SystemMemoryTop = FixedPcdGet32 (PcdSystemMemoryBase) + FixedPcdGet32 (PcdSystemMemorySize);\r
+\r
+ //\r
+ // Initialize the System Memory (DRAM)\r
+ //\r
if (FeaturePcdGet(PcdStandalone)) {\r
- // Initialize the System Memory controller (DRAM)\r
+ // In case of a standalone version, the DRAM is already initialized\r
ArmPlatformInitializeSystemMemory();\r
}\r
\r
- // Install the Memory to PEI\r
- ArmPlatformGetPeiMemory (&PeiMemoryBase,&PeiMemorySize);\r
- Status = PeiServicesInstallPeiMemory (PeiMemoryBase,PeiMemorySize);\r
+ //\r
+ // Declare the UEFI memory to PEI\r
+ //\r
+ if (FeaturePcdGet(PcdStandalone)) {\r
+ // In case of standalone UEFI, we set the UEFI memory region at the top of the DRAM\r
+ UefiMemoryBase = SystemMemoryTop - FixedPcdGet32 (PcdSystemMemoryUefiRegionSize);\r
+ } else {\r
+ // In case of a non standalone UEFI, we set the UEFI memory below the Firmware Volume\r
+ UefiMemoryBase = FixedPcdGet32 (PcdNormalFdBaseAddress) - FixedPcdGet32 (PcdSystemMemoryUefiRegionSize);\r
+ }\r
+ UefiMemorySize = FixedPcdGet32 (PcdSystemMemoryUefiRegionSize);\r
+ Status = PeiServicesInstallPeiMemory (UefiMemoryBase,UefiMemorySize);\r
ASSERT_EFI_ERROR (Status);\r
\r
//\r
// Now, the permanent memory has been installed, we can call AllocatePages()\r
//\r
+ Attributes = (\r
+ EFI_RESOURCE_ATTRIBUTE_PRESENT |\r
+ EFI_RESOURCE_ATTRIBUTE_INITIALIZED |\r
+ EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE |\r
+ EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE |\r
+ EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE |\r
+ EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE |\r
+ EFI_RESOURCE_ATTRIBUTE_TESTED\r
+ );\r
+\r
+ // If it is not a standalone build we must reserved the space above the base address of the firmware volume\r
+ if (!FeaturePcdGet(PcdStandalone)) {\r
+ // Check if firmware volume has not be copied at the top of DRAM then we must reserve the extra space\r
+ // between the firmware and the top\r
+ if (SystemMemoryTop != FixedPcdGet32 (PcdNormalFdBaseAddress) + FixedPcdGet32 (PcdNormalFdSize)) {\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ Attributes & (~EFI_RESOURCE_ATTRIBUTE_TESTED),\r
+ FixedPcdGet32 (PcdNormalFdBaseAddress) + FixedPcdGet32 (PcdNormalFdSize),\r
+ SystemMemoryTop - (FixedPcdGet32 (PcdNormalFdBaseAddress) + FixedPcdGet32 (PcdNormalFdSize))\r
+ );\r
+ }\r
+\r
+ // Reserved the memory space occupied by the firmware volume\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ Attributes & (~EFI_RESOURCE_ATTRIBUTE_PRESENT),\r
+ (UINT32)FixedPcdGet32 (PcdNormalFdBaseAddress),\r
+ (UINT32)FixedPcdGet32 (PcdNormalFdSize)\r
+ );\r
+ }\r
\r
- ArmPlatformGetEfiMemoryMap (&EfiMemoryMap);\r
-\r
- // Install the EFI Memory Map\r
- for (Index = 0; EfiMemoryMap[Index].ResourceAttribute != 0; Index++) {\r
+ // Check there is no overlap between UEFI and Fix Address Regions\r
+ ASSERT (FixedPcdGet32 (PcdSystemMemoryBase) + FixedPcdGet32 (PcdSystemMemoryFixRegionSize) <= UefiMemoryBase);\r
+\r
+ // Reserved the UEFI Memory Region\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ Attributes,\r
+ UefiMemoryBase,\r
+ UefiMemorySize\r
+ );\r
+\r
+ // Reserved the Fix Address Region\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ Attributes,\r
+ FixedPcdGet32 (PcdSystemMemoryBase),\r
+ FixedPcdGet32 (PcdSystemMemoryFixRegionSize)\r
+ );\r
+\r
+ // Reserved the memory between UEFI and Fix Address regions\r
+ if (FixedPcdGet32 (PcdSystemMemoryBase) + FixedPcdGet32 (PcdSystemMemoryFixRegionSize) != UefiMemoryBase) {\r
BuildResourceDescriptorHob (\r
EFI_RESOURCE_SYSTEM_MEMORY,\r
- EfiMemoryMap[Index].ResourceAttribute,\r
- EfiMemoryMap[Index].PhysicalStart,\r
- EfiMemoryMap[Index].NumberOfBytes\r
+ Attributes & (~EFI_RESOURCE_ATTRIBUTE_TESTED),\r
+ FixedPcdGet32 (PcdSystemMemoryBase) + FixedPcdGet32 (PcdSystemMemoryFixRegionSize),\r
+ UefiMemoryBase - (FixedPcdGet32 (PcdSystemMemoryBase) + FixedPcdGet32 (PcdSystemMemoryFixRegionSize))\r
);\r
}\r
\r
+ // If a platform has system memory extensions, it can declare those in this function\r
+ Status = ArmPlatformGetAdditionalSystemMemory (&EfiMemoryMap);\r
+ if (!EFI_ERROR(Status)) {\r
+ // Install the EFI Memory Map\r
+ for (Index = 0; EfiMemoryMap[Index].ResourceAttribute != 0; Index++) {\r
+ BuildResourceDescriptorHob (\r
+ EFI_RESOURCE_SYSTEM_MEMORY,\r
+ EfiMemoryMap[Index].ResourceAttribute,\r
+ EfiMemoryMap[Index].PhysicalStart,\r
+ EfiMemoryMap[Index].NumberOfBytes\r
+ );\r
+ }\r
+ FreePool (EfiMemoryMap);\r
+ }\r
+\r
// Build Memory Allocation Hob\r
InitMmu ();\r
\r
BuildMemoryTypeInformationHob ();\r
}\r
\r
- return Status;\r
+ return EFI_SUCCESS;\r
}\r
gArmPlatformTokenSpaceGuid.PcdStandalone\r
\r
[FixedPcd]\r
+ gArmTokenSpaceGuid.PcdNormalFdBaseAddress\r
+ gArmTokenSpaceGuid.PcdNormalFdSize\r
+\r
+ gArmTokenSpaceGuid.PcdSystemMemoryBase\r
+ gArmTokenSpaceGuid.PcdSystemMemorySize\r
+ gArmPlatformTokenSpaceGuid.PcdSystemMemoryFixRegionSize\r
+ gArmPlatformTokenSpaceGuid.PcdSystemMemoryUefiRegionSize\r
+ \r
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory\r
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIMemoryNVS\r
gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiReservedMemoryType\r