On 11/17/17 17:09, Ard Biesheuvel wrote:
> ArmPlatformStackLib has hooks into primary/secondary core PCDs and
> other ArmPlatformLib related junk, so let's simply set the stack
> pointer directly. This is trivial given that our PrePi is unicore
> only.
>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Ard Biesheuvel
> ---
> ArmVirtPkg/ArmVirt.dsc.inc | 1 -
> ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S | 14 ++
> ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S | 14 ++
> ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf | 1 -
> 4 files changed, 4 insertions(+), 26 deletions(-)
>
> diff --git a/ArmVirtPkg/ArmVirt.dsc.inc b/ArmVirtPkg/ArmVirt.dsc.inc
> index 50eb8675d1c0..5d7edff104b5 100644
> --- a/ArmVirtPkg/ArmVirt.dsc.inc
> +++ b/ArmVirtPkg/ArmVirt.dsc.inc
> @@ -93,7 +93,6 @@ [LibraryClasses.common]
>ArmDisassemblerLib|ArmPkg/Library/ArmDisassemblerLib/ArmDisassemblerLib.inf
>ArmGicLib|ArmPkg/Drivers/ArmGic/ArmGicLib.inf
>ArmGicArchLib|ArmVirtPkg/Library/ArmVirtGicArchLib/ArmVirtGicArchLib.inf
> -
> ArmPlatformStackLib|ArmPlatformPkg/Library/ArmPlatformStackLib/ArmPlatformStackLib.inf
>ArmSmcLib|ArmPkg/Library/ArmSmcLib/ArmSmcLib.inf
>ArmHvcLib|ArmPkg/Library/ArmHvcLib/ArmHvcLib.inf
>
> ArmGenericTimerCounterLib|ArmPkg/Library/ArmGenericTimerVirtCounterLib/ArmGenericTimerVirtCounterLib.inf
> diff --git a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S
> b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S
> index 3296aedfe9aa..891cf1fcab40 100644
> --- a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S
> +++ b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S
> @@ -111,22 +111,12 @@ _GetBaseUefiMemory:
>
> _GetStackBase:
>// r1 = The top of the Mpcore Stacks
Before pushing the patch, please consider updating the "r1" comment
here, in the aarch64 version.
Acked-by: Laszlo Ersek
Thanks
Laszlo
> + mov sp, x1
> +
>// Stack for the primary core = PrimaryCoreStack
>MOV32 (x2, FixedPcdGet32(PcdCPUCorePrimaryStackSize))
>sub x22, x1, x2
>
> - // Stack for the secondary core = Number of Cores - 1
> - MOV32 (x1, (FixedPcdGet32(PcdCoreCount) - 1) *
> FixedPcdGet32(PcdCPUCoreSecondaryStackSize))
> - sub x22, x22, x1
> -
> - // x22 = The base of the MpCore Stacks (primary stack & secondary stacks)
> - mov x0, x22
> - mov x1, x20
> - //ArmPlatformStackSet(StackBase, MpId, PrimaryStackSize,
> SecondaryStackSize)
> - MOV32 (x2, FixedPcdGet32(PcdCPUCorePrimaryStackSize))
> - MOV32 (x3, FixedPcdGet32(PcdCPUCoreSecondaryStackSize))
> - blASM_PFX(ArmPlatformStackSet)
> -
>mov x0, x20
>mov x1, x21
>mov x2, x22
> diff --git a/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S
> b/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S
> index a918c191432e..ced08593e9de 100644
> --- a/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S
> +++ b/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S
> @@ -120,22 +120,12 @@ _GetBaseUefiMemory:
>
> _GetStackBase:
>// r1 = The top of the Mpcore Stacks
> + mov sp, r1
> +
>// Stack for the primary core = PrimaryCoreStack
>MOV32 (r2, FixedPcdGet32(PcdCPUCorePrimaryStackSize))
>sub r9, r1, r2
>
> - // Stack for the secondary core = Number of Cores - 1
> - MOV32 (r1, (FixedPcdGet32(PcdCoreCount) - 1) *
> FixedPcdGet32(PcdCPUCoreSecondaryStackSize))
> - sub r9, r9, r1
> -
> - // r9 = The base of the MpCore Stacks (primary stack & secondary stacks)
> - mov r0, r9
> - mov r1, r10
> - //ArmPlatformStackSet(StackBase, MpId, PrimaryStackSize,
> SecondaryStackSize)
> - MOV32 (r2, FixedPcdGet32(PcdCPUCorePrimaryStackSize))
> - MOV32 (r3, FixedPcdGet32(PcdCPUCoreSecondaryStackSize))
> - blASM_PFX(ArmPlatformStackSet)
> -
>mov r0, r10
>mov r1, r11
>mov r2, r9
> diff --git a/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf
> b/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf
> index e816e9583da8..ae9a088c7256 100755
> --- a/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf
> +++ b/ArmVirtPkg/PrePi/ArmVirtPrePiUniCoreRelocatable.inf
> @@ -54,7 +54,6 @@ [LibraryClasses]
>LzmaDecompressLib
>PeCoffGetEntryPointLib
>PrePiLib
> - ArmPlatformStackLib
>MemoryAllocationLib
>HobLib
>PrePiHobListPointerLib
>
___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel