From 638594083b191f84f5d9333eb6147a31570f5a5a Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Wed, 14 Oct 2015 13:59:20 +0200 Subject: ArmPlatformPkg: PrePeiCore: write early hello message to the serial port (RH) The FixedPcdGetSize() macro expands to an integer constant, therefore an optimizing compiler can eliminate the new code, if the platform DSC doesn't override the empty string (size=1) default of PcdEarlyHelloMessage. RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1270279 Downstream only: . Notes about the 20160608b-988715a -> 20170228-c325e41585e3 rebase: - no changes Notes about the 20170228-c325e41585e3 -> 20171011-92d07e48907f rebase: - no changes Notes about the 20171011-92d07e48907f -> 20180508-ee3198e672e2 rebase: - adapt to upstream commit 7e2a8dfe8a9a ("ArmPlatformPkg/PrePeiCore: seed temporary stack before entering PEI core", 2017-11-09) -- conflict resolution in "ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf" Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek (cherry picked from commit b16c4c505ce0e27305235533eac9236aa66f132e) (cherry picked from commit 742e5bf6d5ce5a1e73879d6e5c0dd00feda7a9ac) (cherry picked from commit 93d69eb9393cf05af90676253875c59c1bec67fd) --- ArmPlatformPkg/PrePeiCore/MainMPCore.c | 5 +++++ ArmPlatformPkg/PrePeiCore/MainUniCore.c | 5 +++++ ArmPlatformPkg/PrePeiCore/PrePeiCore.h | 1 + ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf | 2 ++ ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf | 2 ++ 5 files changed, 15 insertions(+) diff --git a/ArmPlatformPkg/PrePeiCore/MainMPCore.c b/ArmPlatformPkg/PrePeiCore/MainMPCore.c index dc47adb..cbd7223 100644 --- a/ArmPlatformPkg/PrePeiCore/MainMPCore.c +++ b/ArmPlatformPkg/PrePeiCore/MainMPCore.c @@ -117,6 +117,11 @@ PrimaryMain ( UINTN TemporaryRamBase; UINTN TemporaryRamSize; + if (FixedPcdGetSize (PcdEarlyHelloMessage) > 1) { + SerialPortWrite (FixedPcdGetPtr (PcdEarlyHelloMessage), + FixedPcdGetSize (PcdEarlyHelloMessage) - 1); + } + CreatePpiList (&PpiListSize, &PpiList); // Enable the GIC Distributor diff --git a/ArmPlatformPkg/PrePeiCore/MainUniCore.c b/ArmPlatformPkg/PrePeiCore/MainUniCore.c index 134a469..af39fc0 100644 --- a/ArmPlatformPkg/PrePeiCore/MainUniCore.c +++ b/ArmPlatformPkg/PrePeiCore/MainUniCore.c @@ -35,6 +35,11 @@ PrimaryMain ( UINTN TemporaryRamBase; UINTN TemporaryRamSize; + if (FixedPcdGetSize (PcdEarlyHelloMessage) > 1) { + SerialPortWrite (FixedPcdGetPtr (PcdEarlyHelloMessage), + FixedPcdGetSize (PcdEarlyHelloMessage) - 1); + } + CreatePpiList (&PpiListSize, &PpiList); // Adjust the Temporary Ram as the new Ppi List (Common + Platform Ppi Lists) is created at diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCore.h b/ArmPlatformPkg/PrePeiCore/PrePeiCore.h index 1608946..bf843d7 100644 --- a/ArmPlatformPkg/PrePeiCore/PrePeiCore.h +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCore.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf b/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf index e3a31fa..1bc0c45 100644 --- a/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf @@ -72,6 +72,8 @@ gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize + gArmPlatformTokenSpaceGuid.PcdEarlyHelloMessage + gArmTokenSpaceGuid.PcdGicDistributorBase gArmTokenSpaceGuid.PcdGicInterruptInterfaceBase gArmTokenSpaceGuid.PcdGicSgiIntId diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf b/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf index ec83cec..b100820 100644 --- a/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf @@ -70,4 +70,6 @@ gArmPlatformTokenSpaceGuid.PcdCPUCorePrimaryStackSize gArmPlatformTokenSpaceGuid.PcdCPUCoreSecondaryStackSize + gArmPlatformTokenSpaceGuid.PcdEarlyHelloMessage + gEfiMdeModulePkgTokenSpaceGuid.PcdInitValueInTempStack -- 1.8.3.1