summaryrefslogtreecommitdiff
path: root/arch/arm/kernel/vmlinux.lds.h
diff options
context:
space:
mode:
authorNicolas Pitre <nicolas.pitre@linaro.org>2018-03-01 22:17:03 -0500
committerNicolas Pitre <nicolas.pitre@linaro.org>2018-03-09 20:20:04 -0500
commit9147095896fb321ae10ec5a5f789079318137ac9 (patch)
tree39bbbae1b96141675ad7a687826f5624c6e54bbf /arch/arm/kernel/vmlinux.lds.h
parentd9a46e6e714178f6ce7fe2c536c59542a2964f6f (diff)
ARM: linker script: factor out vectors and stubs
Signed-off-by: Nicolas Pitre <nico@linaro.org> Tested-by: Chris Brandt <Chris.Brandt@renesas.com>
Diffstat (limited to 'arch/arm/kernel/vmlinux.lds.h')
-rw-r--r--arch/arm/kernel/vmlinux.lds.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/arch/arm/kernel/vmlinux.lds.h b/arch/arm/kernel/vmlinux.lds.h
index 566a7b42a02c..0a4682ecc4ac 100644
--- a/arch/arm/kernel/vmlinux.lds.h
+++ b/arch/arm/kernel/vmlinux.lds.h
@@ -92,3 +92,24 @@
*(.ARM.extab*) \
__stop_unwind_tab = .; \
}
+
+/*
+ * The vectors and stubs are relocatable code, and the
+ * only thing that matters is their relative offsets
+ */
+#define ARM_VECTORS \
+ __vectors_start = .; \
+ .vectors 0xffff0000 : AT(__vectors_start) { \
+ *(.vectors) \
+ } \
+ . = __vectors_start + SIZEOF(.vectors); \
+ __vectors_end = .; \
+ \
+ __stubs_start = .; \
+ .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_start) { \
+ *(.stubs) \
+ } \
+ . = __stubs_start + SIZEOF(.stubs); \
+ __stubs_end = .; \
+ \
+ PROVIDE(vector_fiq_offset = vector_fiq - ADDR(.vectors));