summaryrefslogtreecommitdiff
path: root/ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm
diff options
context:
space:
mode:
authorandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-04-13 19:27:03 +0000
committerandrewfish <andrewfish@6f19259b-4bc3-4df7-8a09-765794883524>2010-04-13 19:27:03 +0000
commitbb02cb8071e9df25cbcae15a9afa70d6387320cb (patch)
tree7900b3fb2611863cf77f36d887ea2aac3005e166 /ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm
parent382127fc4ce6acbae01a128230e41a07faf868f2 (diff)
downloadedk2-platforms-bb02cb8071e9df25cbcae15a9afa70d6387320cb.tar.xz
Cleanup MMU code to do book required sync. Update exception handler to clear fault registers.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10366 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm')
-rw-r--r--ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm6
1 files changed, 6 insertions, 0 deletions
diff --git a/ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm b/ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm
index 3bcca4d6aa..b45f6682a1 100644
--- a/ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm
+++ b/ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm
@@ -254,6 +254,12 @@ CommonCExceptionHandler (
*/
blx CommonCExceptionHandler ; Call exception handler
+ ldr R1, [SP, #0x4c] ; Restore EFI_SYSTEM_CONTEXT_ARM.IFSR
+ mcr p15, 0, R1, c5, c0, 1 ; Write IFSR
+
+ ldr R1, [SP, #0x44] ; sRestore EFI_SYSTEM_CONTEXT_ARM.DFSR
+ mcr p15, 0, R1, c5, c0, 0 ; Write DFSR
+
ldr R1,[SP,#0x3c] ; EFI_SYSTEM_CONTEXT_ARM.PC
str R1,[SP,#0x58] ; Store it back to srsfd stack slot so it can be restored