summaryrefslogtreecommitdiffstats
path: root/ArmPlatformPkg/MemoryInitPei
diff options
context:
space:
mode:
authorGarrett Kirkendall <garrett.kirkendall@amd.com>2013-09-16 09:29:52 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2013-09-16 09:29:52 +0000
commit2a414cd3c35f09978124936f3377b073f2ce37fc (patch)
tree7c7858829dbe8d67f55b093d6fb5a51a32b81e4f /ArmPlatformPkg/MemoryInitPei
parent6e3e4d70d47a8beb7d7e1ac10be69cc2924b9e8d (diff)
downloadedk2-2a414cd3c35f09978124936f3377b073f2ce37fc.tar.gz
edk2-2a414cd3c35f09978124936f3377b073f2ce37fc.tar.bz2
edk2-2a414cd3c35f09978124936f3377b073f2ce37fc.zip
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
Diffstat (limited to 'ArmPlatformPkg/MemoryInitPei')
-rwxr-xr-xArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
index 192486ce56..d1bf394c45 100755
--- a/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
+++ b/ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.c
@@ -101,8 +101,8 @@ MemoryPeim (
PcdGet32 (PcdSystemMemorySize)
);
- SystemMemoryTop = PcdGet32 (PcdSystemMemoryBase) + PcdGet32 (PcdSystemMemorySize);
- FdTop = PcdGet32(PcdFdBaseAddress) + PcdGet32(PcdFdSize);
+ SystemMemoryTop = (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdSystemMemoryBase) + (EFI_PHYSICAL_ADDRESS)PcdGet32 (PcdSystemMemorySize);
+ 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
// core to overwrite this area we must mark the region with the attribute non-present