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.

Cc: Leif Lindholm <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Drew Jones <[email protected]>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <[email protected]>
---

Notes:
    v2:
    - new in v2 [Drew]

 ArmPlatformPkg/PrePi/PeiMPCore.inf  | 2 ++
 ArmPlatformPkg/PrePi/PeiUniCore.inf | 2 ++
 ArmPlatformPkg/PrePi/MainMPCore.c   | 5 +++++
 ArmPlatformPkg/PrePi/MainUniCore.c  | 5 +++++
 4 files changed, 14 insertions(+)

diff --git a/ArmPlatformPkg/PrePi/PeiMPCore.inf 
b/ArmPlatformPkg/PrePi/PeiMPCore.inf
index ac1f8d0..cad4d5a 100755
--- a/ArmPlatformPkg/PrePi/PeiMPCore.inf
+++ b/ArmPlatformPkg/PrePi/PeiMPCore.inf
@@ -101,6 +101,8 @@ [FixedPcd]
 
   gArmPlatformTokenSpaceGuid.PcdCoreCount
 
+  gArmPlatformTokenSpaceGuid.PcdEarlyHelloMessage
+
   gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize
   gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize
 
diff --git a/ArmPlatformPkg/PrePi/PeiUniCore.inf 
b/ArmPlatformPkg/PrePi/PeiUniCore.inf
index c566390..c3fbff1 100755
--- a/ArmPlatformPkg/PrePi/PeiUniCore.inf
+++ b/ArmPlatformPkg/PrePi/PeiUniCore.inf
@@ -94,6 +94,8 @@ [FixedPcd]
 
   gArmPlatformTokenSpaceGuid.PcdCoreCount
 
+  gArmPlatformTokenSpaceGuid.PcdEarlyHelloMessage
+
   gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize
   gEmbeddedTokenSpaceGuid.PcdPrePiCpuIoSize
 
diff --git a/ArmPlatformPkg/PrePi/MainMPCore.c 
b/ArmPlatformPkg/PrePi/MainMPCore.c
index bf81373..a08b658 100644
--- a/ArmPlatformPkg/PrePi/MainMPCore.c
+++ b/ArmPlatformPkg/PrePi/MainMPCore.c
@@ -26,6 +26,11 @@ PrimaryMain (
   IN  UINT64                    StartTimeStamp
   )
 {
+  if (FixedPcdGetSize (PcdEarlyHelloMessage) > 1) {
+    SerialPortWrite (FixedPcdGetPtr (PcdEarlyHelloMessage),
+      FixedPcdGetSize (PcdEarlyHelloMessage) - 1);
+  }
+
   // Enable the GIC Distributor
   ArmGicEnableDistributor(PcdGet32(PcdGicDistributorBase));
 
diff --git a/ArmPlatformPkg/PrePi/MainUniCore.c 
b/ArmPlatformPkg/PrePi/MainUniCore.c
index 43588a5..8d548e7 100644
--- a/ArmPlatformPkg/PrePi/MainUniCore.c
+++ b/ArmPlatformPkg/PrePi/MainUniCore.c
@@ -22,6 +22,11 @@ PrimaryMain (
   IN  UINT64                    StartTimeStamp
   )
 {
+  if (FixedPcdGetSize (PcdEarlyHelloMessage) > 1) {
+    SerialPortWrite (FixedPcdGetPtr (PcdEarlyHelloMessage),
+      FixedPcdGetSize (PcdEarlyHelloMessage) - 1);
+  }
+
   DEBUG_CODE_BEGIN();
     // On MPCore system, PeiMpCore.inf should be used instead of PeiUniCore.inf
     ASSERT(ArmIsMpCore() == 0);
-- 
1.8.3.1


_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to