mirror of https://github.com/acidanthera/audk.git
Add vpush/vpop to the exception handler as we added CopyMem/SetMem that can use NEON registers to speed things up. This means we need to save state so we don't blow up a CopyMem.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11130 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
6638a865ed
commit
fe295078f2
|
@ -57,6 +57,7 @@ This is the stack constructed by the exception handler (low address to high addr
|
|||
.globl ASM_PFX(CommonCExceptionHandler)
|
||||
|
||||
.text
|
||||
.fpu neon @ makes vpush/vpop assemble
|
||||
.align 3
|
||||
|
||||
|
||||
|
@ -246,6 +247,8 @@ NoAdjustNeeded:
|
|||
@ R0 is ExceptionType
|
||||
mov R1,SP @ R1 is SystemContext
|
||||
|
||||
vpush {d0-d15} @ save vstm registers in case they are used in optimizations
|
||||
|
||||
/*
|
||||
VOID
|
||||
EFIAPI
|
||||
|
@ -257,6 +260,8 @@ CommonCExceptionHandler (
|
|||
*/
|
||||
blx ASM_PFX(CommonCExceptionHandler) @ Call exception handler
|
||||
|
||||
vpop {d0-d15}
|
||||
|
||||
ldr R1, [SP, #0x4c] @ Restore EFI_SYSTEM_CONTEXT_ARM.IFSR
|
||||
mcr p15, 0, R1, c5, c0, 1 @ Write IFSR
|
||||
|
||||
|
|
|
@ -243,6 +243,8 @@ NoAdjustNeeded
|
|||
; R0 is ExceptionType
|
||||
mov R1,SP ; R1 is SystemContext
|
||||
|
||||
vpush {d0-d15} ; save vstm registers in case they are used in optimizations
|
||||
|
||||
/*
|
||||
VOID
|
||||
EFIAPI
|
||||
|
@ -253,6 +255,8 @@ CommonCExceptionHandler (
|
|||
|
||||
*/
|
||||
blx CommonCExceptionHandler ; Call exception handler
|
||||
|
||||
vpop {d0-d15}
|
||||
|
||||
ldr R1, [SP, #0x4c] ; Restore EFI_SYSTEM_CONTEXT_ARM.IFSR
|
||||
mcr p15, 0, R1, c5, c0, 1 ; Write IFSR
|
||||
|
|
Loading…
Reference in New Issue