Reviewed-By: Olivier Martin <[email protected]>

> -----Original Message-----
> From: Ard Biesheuvel [mailto:[email protected]]
> Sent: 26 January 2015 19:03
> To: [email protected]; [email protected]; Olivier
> Martin; [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected]; xen-
> [email protected]; [email protected]
> 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 <[email protected]>
> ---
>  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
> 





------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to