summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c3
-rw-r--r--ArmPlatformPkg/PrePeiCore/PrePeiCore.c29
-rw-r--r--ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf1
-rw-r--r--ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf1
-rw-r--r--ArmPlatformPkg/Sec/Sec.c50
-rw-r--r--ArmPlatformPkg/Sec/Sec.inf1
6 files changed, 57 insertions, 28 deletions
diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c
index 497e0da066..69091d1119 100644
--- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c
+++ b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c
@@ -18,6 +18,9 @@
#include <Library/DebugLib.h>
#include <Library/PcdLib.h>
#include <Drivers/PL341Dmc.h>
+#include <Library/SerialPortLib.h>
+
+#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
// DDR2 timings
struct pl341_dmc_config ddr_timings = {
diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c
index 51c09223dc..40a0e69bc0 100644
--- a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c
+++ b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c
@@ -113,35 +113,44 @@ SecTemporaryRamSupport (
return EFI_SUCCESS;
}
-VOID PeiCommonExceptionEntry(UINT32 Entry, UINT32 LR) {
+VOID
+PeiCommonExceptionEntry (
+ IN UINT32 Entry,
+ IN UINT32 LR
+ )
+{
+ CHAR8 Buffer[100];
+ UINTN CharCount;
+
switch (Entry) {
case 0:
- DEBUG((EFI_D_ERROR,"Reset Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reset Exception at 0x%X\n\r",LR);
break;
case 1:
- DEBUG((EFI_D_ERROR,"Undefined Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Undefined Exception at 0x%X\n\r",LR);
break;
case 2:
- DEBUG((EFI_D_ERROR,"SWI Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"SWI Exception at 0x%X\n\r",LR);
break;
case 3:
- DEBUG((EFI_D_ERROR,"PrefetchAbort Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"PrefetchAbort Exception at 0x%X\n\r",LR);
break;
case 4:
- DEBUG((EFI_D_ERROR,"DataAbort Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"DataAbort Exception at 0x%X\n\r",LR);
break;
case 5:
- DEBUG((EFI_D_ERROR,"Reserved Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reserved Exception at 0x%X\n\r",LR);
break;
case 6:
- DEBUG((EFI_D_ERROR,"IRQ Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"IRQ Exception at 0x%X\n\r",LR);
break;
case 7:
- DEBUG((EFI_D_ERROR,"FIQ Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"FIQ Exception at 0x%X\n\r",LR);
break;
default:
- DEBUG((EFI_D_ERROR,"Unknown Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Unknown Exception at 0x%X\n\r",LR);
break;
}
+ SerialPortWrite ((UINT8 *) Buffer, CharCount);
while(1);
}
diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf b/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf
index 3f133d270a..ed85234b36 100644
--- a/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf
+++ b/ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf
@@ -45,6 +45,7 @@
ArmPlatformLib
ArmMPCoreMailBoxLib
PL390GicNonSecLib
+ SerialPortLib
[Ppis]
gEfiTemporaryRamSupportPpiGuid
diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf b/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf
index 3144a7a460..a7bf3bd986 100644
--- a/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf
+++ b/ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf
@@ -43,6 +43,7 @@
IoLib
ArmLib
ArmPlatformLib
+ SerialPortLib
[Ppis]
gEfiTemporaryRamSupportPpiGuid
diff --git a/ArmPlatformPkg/Sec/Sec.c b/ArmPlatformPkg/Sec/Sec.c
index 2ae01d8e54..4de49329d4 100644
--- a/ArmPlatformPkg/Sec/Sec.c
+++ b/ArmPlatformPkg/Sec/Sec.c
@@ -15,6 +15,7 @@
#include <Library/DebugLib.h>
#include <Library/PcdLib.h>
+#include <Library/PrintLib.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/ArmLib.h>
@@ -24,6 +25,8 @@
#include <Library/SerialPortLib.h>
#include <Library/ArmPlatformLib.h>
+#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
+
extern VOID *monitor_vector_table;
VOID ArmSetupGicNonSecure (
@@ -58,6 +61,9 @@ CEntryPoint (
IN UINTN CoreId
)
{
+ CHAR8 Buffer[100];
+ UINTN CharCount;
+
// Primary CPU clears out the SCU tag RAMs, secondaries wait
if (CoreId == 0) {
if (FixedPcdGet32(PcdMPCoreSupport)) {
@@ -67,8 +73,10 @@ CEntryPoint (
// SEC phase needs to run library constructors by hand. This assumes we are linked against the SerialLib
// In non SEC modules the init call is in autogenerated code.
SerialPortInitialize ();
+
// Start talking
- DEBUG ((EFI_D_ERROR, "UART Enabled\n"));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"UEFI firmware built at %a on %a\n\r",__TIME__, __DATE__);
+ SerialPortWrite ((UINT8 *) Buffer, CharCount);
// Now we've got UART, make the check:
// - The Vector table must be 32-byte aligned
@@ -172,7 +180,7 @@ CEntryPoint (
ArmWriteScr(SCR_NS | SCR_FW | SCR_AW);
} else {
if(0 == CoreId){
- DEBUG ((EFI_D_ERROR, "Trust Zone Configuration is disabled\n"));
+ SerialPrint ("Trust Zone Configuration is disabled\n\r");
}
//Trustzone is not enabled, just enable the Distributor and CPU interface
@@ -189,11 +197,12 @@ CEntryPoint (
if (CoreId == 0) {
UINTN* StartAddress = (UINTN*)PcdGet32(PcdEmbeddedFdBaseAddress);
- DEBUG ((EFI_D_ERROR, "Waiting for firmware at 0x%08X ...\n",StartAddress));
-
// Patch the DRAM to make an infinite loop at the start address
*StartAddress = 0xEAFFFFFE; // opcode for while(1)
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Waiting for firmware at 0x%08X ...\n\r",StartAddress);
+ SerialPortWrite ((UINT8 *) Buffer, CharCount);
+
// To enter into Non Secure state, we need to make a return from exception
return_from_exception(PcdGet32(PcdEmbeddedFdBaseAddress));
} else {
@@ -208,10 +217,6 @@ CEntryPoint (
return_from_exception((UINTN)NonSecureWaitForFirmware);
}
} else {
- if (CoreId == 0) {
- DEBUG ((EFI_D_ERROR, "Standalone Firmware\n"));
- }
-
// To enter into Non Secure state, we need to make a return from exception
return_from_exception(PcdGet32(PcdEmbeddedFdBaseAddress));
}
@@ -241,35 +246,44 @@ VOID NonSecureWaitForFirmware() {
ASSERT (FALSE);
}
-VOID SecCommonExceptionEntry(UINT32 Entry, UINT32 LR) {
+VOID
+SecCommonExceptionEntry (
+ IN UINT32 Entry,
+ IN UINT32 LR
+ )
+{
+ CHAR8 Buffer[100];
+ UINTN CharCount;
+
switch (Entry) {
case 0:
- DEBUG((EFI_D_ERROR,"Reset Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reset Exception at 0x%X\n\r",LR);
break;
case 1:
- DEBUG((EFI_D_ERROR,"Undefined Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Undefined Exception at 0x%X\n\r",LR);
break;
case 2:
- DEBUG((EFI_D_ERROR,"SWI Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"SWI Exception at 0x%X\n\r",LR);
break;
case 3:
- DEBUG((EFI_D_ERROR,"PrefetchAbort Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"PrefetchAbort Exception at 0x%X\n\r",LR);
break;
case 4:
- DEBUG((EFI_D_ERROR,"DataAbort Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"DataAbort Exception at 0x%X\n\r",LR);
break;
case 5:
- DEBUG((EFI_D_ERROR,"Reserved Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reserved Exception at 0x%X\n\r",LR);
break;
case 6:
- DEBUG((EFI_D_ERROR,"IRQ Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"IRQ Exception at 0x%X\n\r",LR);
break;
case 7:
- DEBUG((EFI_D_ERROR,"FIQ Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"FIQ Exception at 0x%X\n\r",LR);
break;
default:
- DEBUG((EFI_D_ERROR,"Unknown Exception at 0x%X\n",LR));
+ CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Unknown Exception at 0x%X\n\r",LR);
break;
}
+ SerialPortWrite ((UINT8 *) Buffer, CharCount);
while(1);
}
diff --git a/ArmPlatformPkg/Sec/Sec.inf b/ArmPlatformPkg/Sec/Sec.inf
index 7180e1a5ad..983d87198e 100644
--- a/ArmPlatformPkg/Sec/Sec.inf
+++ b/ArmPlatformPkg/Sec/Sec.inf
@@ -44,6 +44,7 @@
ArmPlatformLib
L2X0CacheLib
PL390GicSecLib
+ SerialPortLib
[FeaturePcd]
gArmPlatformTokenSpaceGuid.PcdStandalone