summaryrefslogtreecommitdiffstats
path: root/ArmVirtPkg/PrePi
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2016-08-05 14:02:50 +0200
committerArd Biesheuvel <ard.biesheuvel@linaro.org>2016-08-11 12:29:31 +0200
commit16a9fe2ca9cc845cdc31ed8ff8310594c4a34717 (patch)
tree3e099cfb684149f7b97a679fd489f58b44ea881b /ArmVirtPkg/PrePi
parentd2d0e27c7668017ef3d435a18e5d8008d36632d1 (diff)
downloadedk2-16a9fe2ca9cc845cdc31ed8ff8310594c4a34717.tar.gz
edk2-16a9fe2ca9cc845cdc31ed8ff8310594c4a34717.tar.bz2
edk2-16a9fe2ca9cc845cdc31ed8ff8310594c4a34717.zip
ArmVirt/PrePi: make jump to CEntryPoint relative
The ArmVirtPkg platforms that use PrePi have no notion of boot remapped aliases, so we can simply jump to CEntryPoint() directly rather than via an absolute reference. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Diffstat (limited to 'ArmVirtPkg/PrePi')
-rw-r--r--ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S7
-rw-r--r--ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S7
2 files changed, 2 insertions, 12 deletions
diff --git a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S
index d6be345418..1fed84ed0a 100644
--- a/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S
+++ b/ArmVirtPkg/PrePi/AArch64/ModuleEntryPoint.S
@@ -27,7 +27,6 @@ GCC_ASM_IMPORT(ArmPlatformStackSet)
GCC_ASM_EXPORT(_ModuleEntryPoint)
ASM_GLOBAL ASM_PFX(mSystemMemoryEnd)
-StartupAddr: .8byte ASM_PFX(CEntryPoint)
ASM_PFX(mSystemMemoryEnd): .8byte 0
ASM_PFX(_ModuleEntryPoint):
@@ -163,15 +162,11 @@ _PrepareArguments:
mov x1, x21
mov x2, x22
- // Move sec startup address into a data register
- // Ensure we're jumping to FV version of the code (not boot remapped alias)
- ldr x4, StartupAddr
-
// Jump to PrePiCore C code
// x0 = MpId
// x1 = UefiMemoryBase
// x2 = StacksBase
- blr x4
+ bl ASM_PFX(CEntryPoint)
_NeverReturn:
b _NeverReturn
diff --git a/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S b/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S
index 3215c7d558..a0176af91c 100644
--- a/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S
+++ b/ArmVirtPkg/PrePi/Arm/ModuleEntryPoint.S
@@ -27,7 +27,6 @@ GCC_ASM_IMPORT(ArmPlatformStackSet)
GCC_ASM_EXPORT(_ModuleEntryPoint)
ASM_GLOBAL ASM_PFX(mSystemMemoryEnd)
-StartupAddr: .long ASM_PFX(CEntryPoint)
ASM_PFX(mSystemMemoryEnd): .quad 0
__relocs:
@@ -182,15 +181,11 @@ _PrepareArguments:
mov r1, r11
mov r2, r9
- // Move sec startup address into a data register
- // Ensure we're jumping to FV version of the code (not boot remapped alias)
- ldr r4, StartupAddr
-
// Jump to PrePiCore C code
// r0 = MpId
// r1 = UefiMemoryBase
// r2 = StacksBase
- blx r4
+ bl ASM_PFX(CEntryPoint)
_NeverReturn:
b _NeverReturn