#
# Use ARMv6 instruction to operate on a single stack
#
-# Copyright (c) 2008-2010 Apple Inc. All rights reserved.
+# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
#
-# All rights reserved. This program and the accompanying materials
+# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
# which accompanies this distribution. The full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php
.globl ASM_PFX(ExceptionHandlersStart)
+INTERWORK_FUNC(ExceptionHandlersStart)
.globl ASM_PFX(ExceptionHandlersEnd)
+INTERWORK_FUNC(ExceptionHandlersEnd)
.globl ASM_PFX(CommonExceptionEntry)
+INTERWORK_FUNC(CommonExceptionEntry)
.globl ASM_PFX(AsmCommonExceptionEntry)
+INTERWORK_FUNC(AsmCommonExceptionEntry)
.globl ASM_PFX(CommonCExceptionHandler)
+INTERWORK_FUNC(CommonCExceptionHandler)
.text
+#if !defined(__APPLE__)
+.fpu neon @ makes vpush/vpop assemble
+#endif
.align 3
@ R0 is ExceptionType
mov R1,SP @ R1 is SystemContext
+ vpush {d0-d15} @ save vstm registers in case they are used in optimizations
+
+
/*
VOID
EFIAPI
*/
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