summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2023-01-19 00:15:08 +0100
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-01-26 18:54:58 +0000
commit6c8a08bd8a6803c18a54267379e8f5d78c831796 (patch)
tree6868619168d03bb95d973495cc0b22ba86ec67c4
parentd0ff1cae3a1ab20ffd5a1d80658c38c113585651 (diff)
downloadedk2-6c8a08bd8a6803c18a54267379e8f5d78c831796.tar.gz
edk2-6c8a08bd8a6803c18a54267379e8f5d78c831796.tar.bz2
edk2-6c8a08bd8a6803c18a54267379e8f5d78c831796.zip
ArmVirtPkg/PrePi: Ensure timely execution of library constructors
PrePi has a bare metal entry point, and so it is in charge of calling the library constructors once the C runtime has been initialized sufficiently. However, we are now relying on a HOB to have been constructed by the time the MMU code runs, and so the constructors should be run before that. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
-rwxr-xr-xArmVirtPkg/PrePi/PrePi.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/ArmVirtPkg/PrePi/PrePi.c b/ArmVirtPkg/PrePi/PrePi.c
index c15dc305fc..3d943b2138 100755
--- a/ArmVirtPkg/PrePi/PrePi.c
+++ b/ArmVirtPkg/PrePi/PrePi.c
@@ -60,6 +60,9 @@ PrePiMain (
//
InvalidateDataCacheRange ((VOID *)(UINTN)PcdGet64 (PcdFdBaseAddress), PcdGet32 (PcdFdSize));
+ // SEC phase needs to run library constructors by hand.
+ ProcessLibraryConstructorList ();
+
// Initialize MMU and Memory HOBs (Resource Descriptor HOBs)
Status = MemoryPeim (UefiMemoryBase, FixedPcdGet32 (PcdSystemMemoryUefiRegionSize));
ASSERT_EFI_ERROR (Status);
@@ -93,9 +96,6 @@ PrePiMain (
// Now, the HOB List has been initialized, we can register performance information
PERF_START (NULL, "PEI", NULL, StartTimeStamp);
- // SEC phase needs to run library constructors by hand.
- ProcessLibraryConstructorList ();
-
// Assume the FV that contains the SEC (our code) also contains a compressed FV.
Status = DecompressFirstFv ();
ASSERT_EFI_ERROR (Status);