diff options
author | andrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-02-16 23:45:42 +0000 |
---|---|---|
committer | andrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524> | 2010-02-16 23:45:42 +0000 |
commit | 65e27445877ff101115c79e76928d91bf7625876 (patch) | |
tree | 4640e52bd961cd04cedc14932405dbb817d9c872 /ArmPkg/Library/DefaultExceptionHandlerLib | |
parent | 56015d88011ae1bb3471a3c13ddb480e28ffd4c3 (diff) | |
download | edk2-65e27445877ff101115c79e76928d91bf7625876.zip edk2-65e27445877ff101115c79e76928d91bf7625876.tar.gz edk2-65e27445877ff101115c79e76928d91bf7625876.tar.bz2 |
Fix bug in UncachedMemoryAllocationLib, Assembler, make DefaultExceptionHandler lib inc the PC past the faulting instruction to aid debug. Update LR in Exception hanlder, so return address can get updated properly.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10018 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Library/DefaultExceptionHandlerLib')
-rw-r--r-- | ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandler.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandler.c b/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandler.c index e146ac0..927a66b 100644 --- a/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandler.c +++ b/ArmPkg/Library/DefaultExceptionHandlerLib/DefaultExceptionHandler.c @@ -224,6 +224,7 @@ DefaultExceptionHandler ( )
{
UINT32 DfsrStatus;
+ UINT32 IfsrStatus;
BOOLEAN DfsrWrite;
UINT32 PcAdjust = 0;
@@ -289,8 +290,10 @@ DefaultExceptionHandler ( if (DfsrStatus != 0x00) {
DEBUG ((EFI_D_ERROR, " %a: %a 0x%08x\n", FaultStatusToString (DfsrStatus), DfsrWrite ? "write to" : "read from", SystemContext.SystemContextArm->DFAR));
}
- if ((SystemContext.SystemContextArm->IFSR & 0xf) != 0x00) {
- DEBUG ((EFI_D_ERROR, "Instruction %a at 0x%08x, \n", FaultStatusToString (SystemContext.SystemContextArm->IFSR & 0xf), SystemContext.SystemContextArm->IFAR));
+
+ IfsrStatus = (SystemContext.SystemContextArm->IFSR & 0xf) | ((SystemContext.SystemContextArm->IFSR >> 6) & 0x10);
+ if (IfsrStatus != 0) {
+ DEBUG ((EFI_D_ERROR, " Instruction %a at 0x%08x\n", FaultStatusToString (SystemContext.SystemContextArm->IFSR & 0xf), SystemContext.SystemContextArm->IFAR));
}
DEBUG ((EFI_D_ERROR, "\n"));
|