diff options
Diffstat (limited to 'ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm')
-rw-r--r-- | ArmPkg/Drivers/CpuDxe/ExceptionSupport.ARMv6.asm | 6 |
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 |