summaryrefslogtreecommitdiffstats
path: root/ArmPkg/Library/ArmExceptionLib
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2016-03-17 11:39:01 +0100
committerArd Biesheuvel <ard.biesheuvel@linaro.org>2016-03-22 14:39:02 +0100
commit5d7238cae8061f64a0eaa18cf6e823283c617b66 (patch)
tree31f1591b380bde01301e22a162214006bfebf133 /ArmPkg/Library/ArmExceptionLib
parent8a771a2e39771b950823abcd3786e82cfd8e6e27 (diff)
downloadedk2-5d7238cae8061f64a0eaa18cf6e823283c617b66.tar.gz
edk2-5d7238cae8061f64a0eaa18cf6e823283c617b66.tar.bz2
edk2-5d7238cae8061f64a0eaa18cf6e823283c617b66.zip
ArmPkg/ArmExceptionLib: avoid indirect call if using vector table in place
If we are using the vector table in place, there is no need to make an indirect call to the common handler routine from the vector table entries, so just use a straight branch instruction in that case. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> Reviewed-by: Eugene Cohen <eugene@hp.com>
Diffstat (limited to 'ArmPkg/Library/ArmExceptionLib')
-rw-r--r--ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S b/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S
index c7ea061a93..0fd304db2d 100644
--- a/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S
+++ b/ArmPkg/Library/ArmExceptionLib/AArch64/ExceptionSupport.S
@@ -187,9 +187,13 @@ VECTOR_BASE(ExceptionHandlersStart)
mov x0, #\val
// Jump to our general handler to deal with all the common parts and process the exception.
+#if defined(ARM_RELOCATE_VECTORS)
ldr x1, =ASM_PFX(CommonExceptionEntry)
br x1
.ltorg
+#else
+ b ASM_PFX(CommonExceptionEntry)
+#endif
.endm
//