[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 09/29] ArmPlatformPkg/PrePi: allow use of patchable PCDs



Reviewed-By: Olivier Martin <Olivier.martin@xxxxxxx>

> -----Original Message-----
> From: Ard Biesheuvel [mailto:ard.biesheuvel@xxxxxxxxxx]
> Sent: 26 January 2015 19:03
> To: edk2-devel@xxxxxxxxxxxxxxxxxxxxx; lersek@xxxxxxxxxx; Olivier
> Martin; roy.franz@xxxxxxxxxx; leif.lindholm@xxxxxxxxxx;
> stefano.stabellini@xxxxxxxxxxxxx; Ian.Campbell@xxxxxxxxxx;
> anthony.perard@xxxxxxxxxx; christoffer.dall@xxxxxxxxxx; xen-
> devel@xxxxxxxxxxxxx; ilias.biris@xxxxxxxxxx
> 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.biesheuvel@xxxxxxxxxx>
> ---
>  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@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.