summaryrefslogtreecommitdiff
path: root/ArmPkg/Library/DefaultExceptionHandlerLib
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2018-12-20 18:31:04 +0100
committerArd Biesheuvel <ard.biesheuvel@linaro.org>2019-01-16 21:33:35 +0100
commit31f5388006fcb6e8582e5bce3f5438ae707de986 (patch)
treed05e5de65bfcee84830a943cdde3137142057015 /ArmPkg/Library/DefaultExceptionHandlerLib
parent1e32c49718c69e749f4b401cbb6c198a1d9bac50 (diff)
downloadedk2-31f5388006fcb6e8582e5bce3f5438ae707de986.zip
edk2-31f5388006fcb6e8582e5bce3f5438ae707de986.tar.gz
edk2-31f5388006fcb6e8582e5bce3f5438ae707de986.tar.bz2
ArmPkg/DefaultExceptionHandlerLib: use console if available
Print the minimal 'exception occurred' message to the console as well as to the serial port if the console is available. This makes such messages visible on systems where the console is graphical and the serial is not connected. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Acked-by: Laszlo Ersek <lersek@redhat.com>
Diffstat (limited to 'ArmPkg/Library/DefaultExceptionHandlerLib')
-rw-r--r--ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c12
-rw-r--r--ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c6
-rw-r--r--ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf1
3 files changed, 16 insertions, 3 deletions
diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c
index 1024bf4..40d4b21 100644
--- a/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c
+++ b/ArmPkg/Library/DefaultExceptionHandlerLib/AArch64/DefaultExceptionHandler.c
@@ -22,6 +22,7 @@
#include <Library/PrintLib.h>
#include <Library/ArmDisassemblerLib.h>
#include <Library/SerialPortLib.h>
+#include <Library/UefiBootServicesTableLib.h>
#include <Guid/DebugImageInfoTable.h>
#include <Protocol/DebugSupport.h>
@@ -159,14 +160,21 @@ DefaultExceptionHandler (
INT32 Offset;
if (mRecursiveException) {
- CharCount = AsciiSPrint (Buffer, sizeof (Buffer),"\nRecursive exception occurred while dumping the CPU state\n");
- SerialPortWrite ((UINT8 *) Buffer, CharCount);
+ STATIC CHAR8 CONST Message[] = "\nRecursive exception occurred while dumping the CPU state\n";
+
+ SerialPortWrite ((UINT8 *)Message, sizeof Message - 1);
+ if (gST->ConOut != NULL) {
+ AsciiPrint (Message);
+ }
CpuDeadLoop ();
}
mRecursiveException = TRUE;
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"\n\n%a Exception at 0x%016lx\n", gExceptionTypeString[ExceptionType], SystemContext.SystemContextAArch64->ELR);
SerialPortWrite ((UINT8 *) Buffer, CharCount);
+ if (gST->ConOut != NULL) {
+ AsciiPrint (Buffer);
+ }
DEBUG_CODE_BEGIN ();
CHAR8 *Pdb, *PrevPdb;
diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c b/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c
index cc79cb2..2e0cfb2 100644
--- a/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c
+++ b/ArmPkg/Library/DefaultExceptionHandlerLib/Arm/DefaultExceptionHandler.c
@@ -21,6 +21,7 @@
#include <Library/PrintLib.h>
#include <Library/ArmDisassemblerLib.h>
#include <Library/SerialPortLib.h>
+#include <Library/UefiBootServicesTableLib.h>
#include <Guid/DebugImageInfoTable.h>
@@ -194,7 +195,10 @@ DefaultExceptionHandler (
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"\n%a Exception PC at 0x%08x CPSR 0x%08x ",
gExceptionTypeString[ExceptionType], SystemContext.SystemContextArm->PC, SystemContext.SystemContextArm->CPSR);
- SerialPortWrite ((UINT8 *) Buffer, CharCount);
+ SerialPortWrite ((UINT8 *)Buffer, CharCount);
+ if (gST->ConOut != NULL) {
+ AsciiPrint (Buffer);
+ }
DEBUG_CODE_BEGIN ();
CHAR8 *Pdb;
diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf b/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf
index 7609f82..6bc4871 100644
--- a/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf
+++ b/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandlerLib.inf
@@ -42,6 +42,7 @@
PeCoffGetEntryPointLib
ArmDisassemblerLib
SerialPortLib
+ UefiBootServicesTableLib
[Guids]
gEfiDebugImageInfoTableGuid