diff mbox series

[edk2,07/15] ArmVirtPkg/PrePi: remove ArmPlatformStackLib dependency

Message ID 20171117160913.17292-8-ard.biesheuvel@linaro.org
State Superseded
Headers show
Series ArmVirtPkg: get rid of ArmPlatformLib | expand

Commit Message

Ard Biesheuvel Nov. 17, 2017, 4:09 p.m. UTC
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 <ard.biesheuvel@linaro.org>

---
 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(-)

-- 
2.11.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Comments

Laszlo Ersek Nov. 21, 2017, 3:51 p.m. UTC | #1
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 <ard.biesheuvel@linaro.org>

> ---

>  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 <lersek@redhat.com>


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))

> -  bl    ASM_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))

> -  bl    ASM_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
diff mbox series

Patch

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
+  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))
-  bl    ASM_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))
-  bl    ASM_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