ArmPkg/ArmPkg.dec: Redefined PcdSystemMemory(Base|Size) as UINT64
The System Memory region might be out of the 32-bit memory space. This change has been validated on the FVP AArch64 model using 4GB of DRAM at 0x8_0000_0000: - # System Memory (2GB) - gArmTokenSpaceGuid.PcdSystemMemoryBase|0x80000000 - gArmTokenSpaceGuid.PcdSystemMemorySize|0x80000000 + # System Memory (4GB) + gArmTokenSpaceGuid.PcdSystemMemoryBase|0x800000000 + gArmTokenSpaceGuid.PcdSystemMemorySize|0x100000000 EFI Shell and Linux kernel boot successfully. Note: This change has not been validated on AArch32. I expect some early assembly code to not work. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15093 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
committed by
oliviermartin
parent
18b24f924f
commit
c357fd6a1f
@@ -114,8 +114,8 @@
|
||||
# System Memory (DRAM): These PCDs define the region of in-built system memory
|
||||
# Some platforms can get DRAM extensions, these additional regions will be declared
|
||||
# to UEFI by ArmPLatformPlib
|
||||
gArmTokenSpaceGuid.PcdSystemMemoryBase|0|UINT32|0x00000029
|
||||
gArmTokenSpaceGuid.PcdSystemMemorySize|0|UINT32|0x0000002A
|
||||
gArmTokenSpaceGuid.PcdSystemMemoryBase|0|UINT64|0x00000029
|
||||
gArmTokenSpaceGuid.PcdSystemMemorySize|0|UINT64|0x0000002A
|
||||
|
||||
# Use ClusterId + CoreId to identify the PrimaryCore
|
||||
gArmTokenSpaceGuid.PcdArmPrimaryCoreMask|0xF03|UINT32|0x00000031
|
||||
|
@@ -76,7 +76,7 @@ typedef enum {
|
||||
typedef struct {
|
||||
EFI_PHYSICAL_ADDRESS PhysicalBase;
|
||||
EFI_VIRTUAL_ADDRESS VirtualBase;
|
||||
UINTN Length;
|
||||
UINT64 Length;
|
||||
ARM_MEMORY_REGION_ATTRIBUTES Attributes;
|
||||
} ARM_MEMORY_REGION_DESCRIPTOR;
|
||||
|
||||
|
@@ -223,7 +223,7 @@ BdsBootLinuxFdt (
|
||||
|
||||
// Try to put the kernel at the start of RAM so as to give it access to all memory.
|
||||
// If that fails fall back to try loading it within LINUX_KERNEL_MAX_OFFSET of memory start.
|
||||
LinuxImage = PcdGet32(PcdSystemMemoryBase) + 0x80000;
|
||||
LinuxImage = PcdGet64 (PcdSystemMemoryBase) + 0x80000;
|
||||
Status = BdsLoadImage (LinuxKernelDevicePath, AllocateAddress, &LinuxImage, &LinuxImageSize);
|
||||
if (EFI_ERROR(Status)) {
|
||||
// Try again but give the loader more freedom of where to put the image.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/** @file
|
||||
*
|
||||
* Copyright (c) 2011-2012, ARM Limited. All rights reserved.
|
||||
* Copyright (c) 2011-2013, ARM Limited. All rights reserved.
|
||||
*
|
||||
* This program and the accompanying materials
|
||||
* are licensed and made available under the terms and conditions of the BSD License
|
||||
@@ -16,9 +16,9 @@
|
||||
#define __BDSLINUXLOADER_H
|
||||
|
||||
#define LINUX_UIMAGE_SIGNATURE 0x56190527
|
||||
#define LINUX_KERNEL_MAX_OFFSET (PcdGet32(PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxKernelMaxOffset))
|
||||
#define LINUX_ATAG_MAX_OFFSET (PcdGet32(PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxAtagMaxOffset))
|
||||
#define LINUX_FDT_MAX_OFFSET (PcdGet32(PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxFdtMaxOffset))
|
||||
#define LINUX_KERNEL_MAX_OFFSET (PcdGet64 (PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxKernelMaxOffset))
|
||||
#define LINUX_ATAG_MAX_OFFSET (PcdGet64 (PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxAtagMaxOffset))
|
||||
#define LINUX_FDT_MAX_OFFSET (PcdGet64 (PcdSystemMemoryBase) + PcdGet32(PcdArmLinuxFdtMaxOffset))
|
||||
|
||||
// Additional size that could be used for FDT entries added by the UEFI OS Loader
|
||||
// Estimation based on: EDID (300bytes) + bootargs (200bytes) + initrd region (20bytes)
|
||||
|
Reference in New Issue
Block a user