ArmPlatformPkg/MemoryInitPei: AARCH64 fix memory address calculations

At least for AARCH64 currently, SystemMemoryTop and FdTop can overflow
while adding the 32-bit PCDs together.  The resulting value loses the
upper 32-bits.  Cast each of the values to EFI_PHYSICAL_ADDRESS size
before doing the addition to prevent erroneous overflow.  There is currently
no 32-bit platform in EDKII open source that will overflow and this change
would not fix that problem anyway.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Garrett Kirkendall <garrett.kirkendall@amd.com>
Reviewed-by: Olivier Martin <olivier.martin@arm.com>



git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14675 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Garrett Kirkendall 2013-09-16 09:29:52 +00:00 committed by oliviermartin
parent 6e3e4d70d4
commit 2a414cd3c3
1 changed files with 2 additions and 2 deletions

View File

@ -101,8 +101,8 @@ MemoryPeim (
PcdGet32 (PcdSystemMemorySize) PcdGet32 (PcdSystemMemorySize)
); );
SystemMemoryTop = PcdGet32 (PcdSystemMemoryBase) + PcdGet32 (PcdSystemMemorySize); SystemMemoryTop = (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdSystemMemoryBase) + (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdSystemMemorySize);
FdTop = PcdGet32(PcdFdBaseAddress) + PcdGet32(PcdFdSize); FdTop = (EFI_PHYSICAL_ADDRESS)PcdGet32(PcdFdBaseAddress) + (EFI_PHYSICAL_ADDRESS)PcdGet32(PcdFdSize);
// EDK2 does not have the concept of boot firmware copied into DRAM. To avoid the DXE // EDK2 does not have the concept of boot firmware copied into DRAM. To avoid the DXE
// core to overwrite this area we must mark the region with the attribute non-present // core to overwrite this area we must mark the region with the attribute non-present