summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2015-12-16 12:57:14 +0000
committerabiesheuvel <abiesheuvel@Edk2>2015-12-16 12:57:14 +0000
commite7e120133d5f5fa7871d20d3995da87826f172e6 (patch)
treedb2bfd553d52f59fead4b70317feacb73da520ab
parent850ba6a953f4a3502f98de872d86a23892b9dfec (diff)
downloadedk2-e7e120133d5f5fa7871d20d3995da87826f172e6.tar.gz
edk2-e7e120133d5f5fa7871d20d3995da87826f172e6.tar.bz2
edk2-e7e120133d5f5fa7871d20d3995da87826f172e6.zip
ArmPkg: rewrite vector table population macros
Unfortunately, Clang does not support the use of symbol references in .org directives, and bails with the following error message when it encounters them: <...>:error: expected assembly-time absolute expression .org DebugAgentVectorTable + 0x000 So replace the .org arguments with absolute values, and move the whole vector table into a subsection with the appropriate alignment, and starting at .org 0x0. This gives the same protection with respect to entries that exceed 128 bytes, in a way that Clang supports as well. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19303 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--ArmPkg/Include/Chipset/AArch64.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/ArmPkg/Include/Chipset/AArch64.h b/ArmPkg/Include/Chipset/AArch64.h
index 5e1653bcb6..e53605f641 100644
--- a/ArmPkg/Include/Chipset/AArch64.h
+++ b/ArmPkg/Include/Chipset/AArch64.h
@@ -119,15 +119,18 @@
#define ARM_VECTOR_LOW_A32_SERR 0x780
#define VECTOR_BASE(tbl) \
+ .section .text.##tbl##,"ax"; \
.align 11; \
+ .org 0x0; \
GCC_ASM_EXPORT(tbl); \
ASM_PFX(tbl): \
#define VECTOR_ENTRY(tbl, off) \
- .org ASM_PFX(tbl) + off
+ .org off
#define VECTOR_END(tbl) \
- .org ASM_PFX(tbl) + 0x800
+ .org 0x800; \
+ .previous
VOID
EFIAPI