summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Sec/Sec.c
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-03-31 12:09:31 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2011-03-31 12:09:31 +0000
commit2637d1ef354a4db0e3fc676a8985ee40b5401eba (patch)
tree67c9a6f689cb7cce835952c8953fbfe24c221381 /ArmPlatformPkg/Sec/Sec.c
parente100fa8c1e5218865ff6f2c5dd646c2e6ceca49d (diff)
downloadedk2-platforms-2637d1ef354a4db0e3fc676a8985ee40b5401eba.tar.xz
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
Diffstat (limited to 'ArmPlatformPkg/Sec/Sec.c')
-rw-r--r--ArmPlatformPkg/Sec/Sec.c50
1 files changed, 32 insertions, 18 deletions
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);
}