summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-21 12:28:36 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-06-21 12:28:36 +0000
commitc5d8d2dcef6d8afb9d2b7b49aa80bdceeb2391cc (patch)
tree42ab83199ce142da2cfa1ef6e45136313d86579d /c
parent2010-06-20 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-c5d8d2dcef6d8afb9d2b7b49aa80bdceeb2391cc.tar.bz2
2010-06-21 Sebastian Huber <sebastian.huber@embedded-brains.de>
* shared/start/start.S, shared/startup/linkcmds.base, shared/include/linker-symbols.h: Added and use bsp_vector_table_begin, bsp_vector_table_size and bsp_vector_table_end.
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/arm/ChangeLog6
-rw-r--r--c/src/lib/libbsp/arm/shared/include/linker-symbols.h4
-rw-r--r--c/src/lib/libbsp/arm/shared/start/start.S2
-rw-r--r--c/src/lib/libbsp/arm/shared/startup/linkcmds.base7
4 files changed, 17 insertions, 2 deletions
diff --git a/c/src/lib/libbsp/arm/ChangeLog b/c/src/lib/libbsp/arm/ChangeLog
index 459141012c..3234feb9ef 100644
--- a/c/src/lib/libbsp/arm/ChangeLog
+++ b/c/src/lib/libbsp/arm/ChangeLog
@@ -1,3 +1,9 @@
+2010-06-21 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * shared/start/start.S, shared/startup/linkcmds.base,
+ shared/include/linker-symbols.h: Added and use bsp_vector_table_begin,
+ bsp_vector_table_size and bsp_vector_table_end.
+
2010-05-20 Sebastian Huber <sebastian.huber@embedded-brains.de>
* shared/include/start.h: Define start section attributes.
diff --git a/c/src/lib/libbsp/arm/shared/include/linker-symbols.h b/c/src/lib/libbsp/arm/shared/include/linker-symbols.h
index b8afed5c77..587525102b 100644
--- a/c/src/lib/libbsp/arm/shared/include/linker-symbols.h
+++ b/c/src/lib/libbsp/arm/shared/include/linker-symbols.h
@@ -102,6 +102,10 @@ LINKER_SYMBOL(bsp_section_stack_begin)
LINKER_SYMBOL(bsp_section_stack_end)
LINKER_SYMBOL(bsp_section_stack_size)
+LINKER_SYMBOL(bsp_vector_table_begin)
+LINKER_SYMBOL(bsp_vector_table_end)
+LINKER_SYMBOL(bsp_vector_table_size)
+
/** @} */
#ifdef __cplusplus
diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S
index c4a5d806a7..dcafd1173a 100644
--- a/c/src/lib/libbsp/arm/shared/start/start.S
+++ b/c/src/lib/libbsp/arm/shared/start/start.S
@@ -168,7 +168,7 @@ bsp_start_hook_0_done:
* vectors and the pointers to the default exception handlers.
*/
- ldr r0, =bsp_section_vector_begin
+ ldr r0, =bsp_vector_table_begin
adr r1, vector_block
ldmia r1!, {r2-r9}
stmia r0!, {r2-r9}
diff --git a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base
index 8e7764f5a3..4b092c59fa 100644
--- a/c/src/lib/libbsp/arm/shared/startup/linkcmds.base
+++ b/c/src/lib/libbsp/arm/shared/startup/linkcmds.base
@@ -58,6 +58,8 @@ bsp_stack_svc_size = ALIGN (bsp_stack_svc_size, bsp_stack_align);
bsp_stack_und_size = DEFINED (bsp_stack_und_size) ? bsp_stack_und_size : 128;
bsp_stack_und_size = ALIGN (bsp_stack_und_size, bsp_stack_align);
+bsp_vector_table_size = DEFINED (bsp_vector_table_size) ? bsp_vector_table_size : 64;
+
SECTIONS {
.start : {
/*
@@ -91,7 +93,7 @@ SECTIONS {
* BSP: Reserve space for the the exception vector table and
* the pointers to the default exceptions handlers.
*/
- . = . + 64;
+ . = . + bsp_vector_table_size;
/*
* BSP: Reserve space for mode stacks
@@ -134,6 +136,9 @@ SECTIONS {
bsp_section_vector_size = bsp_section_vector_end - bsp_section_vector_begin;
+ bsp_vector_table_begin = bsp_vector_table_size != 0 ? bsp_section_vector_begin : bsp_section_start_begin;
+ bsp_vector_table_end = bsp_vector_table_begin + bsp_vector_table_size;
+
.vbarrier : {
. = ALIGN (bsp_section_vbarrier_align);
} > REGION_VECTOR