diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-03-17 11:39:01 +0100 |
---|---|---|
committer | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-03-22 14:39:02 +0100 |
commit | 5d7238cae8061f64a0eaa18cf6e823283c617b66 (patch) | |
tree | 31f1591b380bde01301e22a162214006bfebf133 /ArmPkg/Library/ArmExceptionLib | |
parent | 8a771a2e39771b950823abcd3786e82cfd8e6e27 (diff) | |
download | edk2-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.S | 4 |
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
//
|