mirror of https://github.com/acidanthera/audk.git
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
This commit is contained in:
parent
e100fa8c1e
commit
2637d1ef35
|
@ -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 = {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -45,6 +45,7 @@
|
|||
ArmPlatformLib
|
||||
ArmMPCoreMailBoxLib
|
||||
PL390GicNonSecLib
|
||||
SerialPortLib
|
||||
|
||||
[Ppis]
|
||||
gEfiTemporaryRamSupportPpiGuid
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
IoLib
|
||||
ArmLib
|
||||
ArmPlatformLib
|
||||
SerialPortLib
|
||||
|
||||
[Ppis]
|
||||
gEfiTemporaryRamSupportPpiGuid
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
ArmPlatformLib
|
||||
L2X0CacheLib
|
||||
PL390GicSecLib
|
||||
SerialPortLib
|
||||
|
||||
[FeaturePcd]
|
||||
gArmPlatformTokenSpaceGuid.PcdStandalone
|
||||
|
|
Loading…
Reference in New Issue