From 2637d1ef354a4db0e3fc676a8985ee40b5401eba Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Thu, 31 Mar 2011 12:09:31 +0000 Subject: ArmPlatformPkg: Use Serial print function to print out non debugging information Exception errors and early print statements must be also print out in Release builds. Replace the DEBUG() macro by the SerialPortWrite() function. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11474 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Library/ArmVExpressLibCTA9x4/CTA9x4.c | 3 ++ ArmPlatformPkg/PrePeiCore/PrePeiCore.c | 29 ++++++++----- ArmPlatformPkg/PrePeiCore/PrePeiCoreMPCore.inf | 1 + ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf | 1 + ArmPlatformPkg/Sec/Sec.c | 50 ++++++++++++++-------- ArmPlatformPkg/Sec/Sec.inf | 1 + 6 files changed, 57 insertions(+), 28 deletions(-) (limited to 'ArmPlatformPkg') diff --git a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c index 497e0da..69091d1 100644 --- a/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c +++ b/ArmPlatformPkg/ArmVExpressPkg/Library/ArmVExpressLibCTA9x4/CTA9x4.c @@ -18,6 +18,9 @@ #include #include #include +#include + +#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 51c0922..40a0e69 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 3f133d2..ed85234 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 3144a7a..a7bf3bd 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 2ae01d8..4de4932 100644 --- a/ArmPlatformPkg/Sec/Sec.c +++ b/ArmPlatformPkg/Sec/Sec.c @@ -15,6 +15,7 @@ #include #include +#include #include #include #include @@ -24,6 +25,8 @@ #include #include +#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 7180e1a..983d871 100644 --- a/ArmPlatformPkg/Sec/Sec.inf +++ b/ArmPlatformPkg/Sec/Sec.inf @@ -44,6 +44,7 @@ ArmPlatformLib L2X0CacheLib PL390GicSecLib + SerialPortLib [FeaturePcd] gArmPlatformTokenSpaceGuid.PcdStandalone -- cgit v1.1