Reviewed-By: Olivier Martin <olivier.mar...@arm.com> > -----Original Message----- > From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org] > Sent: 26 January 2015 19:03 > To: edk2-de...@lists.sourceforge.net; ler...@redhat.com; Olivier > Martin; roy.fr...@linaro.org; leif.lindh...@linaro.org; > stefano.stabell...@eu.citrix.com; ian.campb...@citrix.com; > anthony.per...@citrix.com; christoffer.d...@linaro.org; xen- > de...@lists.xen.org; ilias.bi...@linaro.org > Cc: Ard Biesheuvel > Subject: [PATCH v2 09/29] ArmPlatformPkg/PrePi: allow use of patchable > PCDs > > Avoid using FixedPcdGetXX () to reference system memory and FD > base address PCDs so that the platform can choose to use patchable > PCDs instead. This allows a runtime self-relocating PrePi to poke > alternate values into them that can only be discovered at runtime. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> > --- > ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S | 8 ++++---- > ArmPlatformPkg/PrePi/PrePi.c | 8 ++++---- > 2 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S > b/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S > index fcea9496cbd5..3fa6bf1f0322 100644 > --- a/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S > +++ b/ArmPlatformPkg/PrePi/AArch64/ModuleEntryPoint.S > @@ -42,14 +42,14 @@ _SetSVCMode: > // at the top of the DRAM) > _SetupStackPosition: > // Compute Top of System Memory > - LoadConstantToReg (FixedPcdGet64 (PcdSystemMemoryBase), x1) > - LoadConstantToReg (FixedPcdGet64 (PcdSystemMemorySize), x2) > + ldr x1, PcdGet64 (PcdSystemMemoryBase) > + ldr x2, PcdGet64 (PcdSystemMemorySize) > sub x2, x2, #1 > add x1, x1, x2 // x1 = SystemMemoryTop = PcdSystemMemoryBase > + PcdSystemMemorySize > > // Calculate Top of the Firmware Device > - LoadConstantToReg (FixedPcdGet32(PcdFdBaseAddress), x2) > - LoadConstantToReg (FixedPcdGet32(PcdFdSize), x3) > + ldr x2, PcdGet64 (PcdFdBaseAddress) > + ldr w3, PcdGet32 (PcdFdSize) > sub x3, x3, #1 > add x3, x3, x2 // x3 = FdTop = PcdFdBaseAddress + PcdFdSize > > diff --git a/ArmPlatformPkg/PrePi/PrePi.c > b/ArmPlatformPkg/PrePi/PrePi.c > index 9a5e067ef537..0e551c518d6b 100755 > --- a/ArmPlatformPkg/PrePi/PrePi.c > +++ b/ArmPlatformPkg/PrePi/PrePi.c > @@ -30,8 +30,8 @@ > #include "PrePi.h" > #include "LzmaDecompress.h" > > -#define IS_XIP() (((UINT32)FixedPcdGet32 (PcdFdBaseAddress) > > (UINT32)(FixedPcdGet64 (PcdSystemMemoryBase) + FixedPcdGet32 > (PcdSystemMemorySize))) || \ > - ((FixedPcdGet32 (PcdFdBaseAddress) + FixedPcdGet32 > (PcdFdSize)) < FixedPcdGet64 (PcdSystemMemoryBase))) > +#define IS_XIP() (((UINT32)PcdGet64 (PcdFdBaseAddress) > > (UINT32)(PcdGet64 (PcdSystemMemoryBase) + PcdGet64 > (PcdSystemMemorySize))) || \ > + ((PcdGet64 (PcdFdBaseAddress) + PcdGet32 > (PcdFdSize)) < PcdGet64 (PcdSystemMemoryBase))) > > // Not used when PrePi in run in XIP mode > UINTN mGlobalVariableBase = 0; > @@ -108,8 +108,8 @@ PrePiMain ( > > // If ensure the FD is either part of the System Memory or totally > outside of the System Memory (XIP) > ASSERT (IS_XIP() || > - ((FixedPcdGet32 (PcdFdBaseAddress) >= FixedPcdGet64 > (PcdSystemMemoryBase)) && > - ((UINT32)(FixedPcdGet32 (PcdFdBaseAddress) + FixedPcdGet32 > (PcdFdSize)) <= (UINT32)(FixedPcdGet64 (PcdSystemMemoryBase) + > FixedPcdGet64 (PcdSystemMemorySize))))); > + ((PcdGet64 (PcdFdBaseAddress) >= PcdGet64 > (PcdSystemMemoryBase)) && > + ((UINT32)(PcdGet64 (PcdFdBaseAddress) + PcdGet32 > (PcdFdSize)) <= (UINT32)(PcdGet64 (PcdSystemMemoryBase) + PcdGet64 > (PcdSystemMemorySize))))); > > // Initialize the architecture specific bits > ArchInitialize (); > -- > 1.8.3.2 >
_______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel