[PATCH v2 2/3] bsps: Support .rtemsstack.* linker input sections
Sebastian Huber
sebastian.huber at embedded-brains.de
Thu Jun 21 07:19:36 UTC 2018
Use a dedicated memory region or place it between the BSS and workspace.
Update #3459.
---
bsps/arm/shared/start/linkcmds.base | 3 +++
bsps/bfin/TLL6527M/start/linkcmds | 8 ++++++--
bsps/bfin/bf537Stamp/start/linkcmds | 8 ++++++--
bsps/bfin/eZKit533/start/linkcmds | 8 ++++++--
bsps/epiphany/epiphany_sim/start/linkcmds | 6 +++++-
bsps/i386/pc386/start/linkcmds | 5 +++--
bsps/lm32/lm32_evr/start/linkcmds | 6 ++++--
bsps/lm32/milkymist/start/linkcmds | 7 ++++---
bsps/m32c/m32cbsp/start/linkcmds | 5 +++++
bsps/m68k/av5282/start/linkcmds | 4 ++++
bsps/m68k/av5282/start/linkcmdsflash | 3 +++
bsps/m68k/av5282/start/linkcmdsram | 4 ++++
bsps/m68k/csb360/start/linkcmds | 9 +++++----
bsps/m68k/gen68340/start/linkcmds | 3 +++
bsps/m68k/gen68360/start/linkcmds | 3 +++
bsps/m68k/gen68360/start/linkcmds.bootp | 3 +++
bsps/m68k/gen68360/start/linkcmds.prom | 3 +++
bsps/m68k/mcf5206elite/start/linkcmds | 5 +++--
bsps/m68k/mcf5206elite/start/linkcmds.flash | 5 +++--
bsps/m68k/mcf52235/start/linkcmds | 4 ++++
bsps/m68k/mcf5225x/start/linkcmds | 4 ++++
bsps/m68k/mcf5235/start/linkcmds | 3 +++
bsps/m68k/mcf5235/start/linkcmdsflash | 3 +++
bsps/m68k/mcf5235/start/linkcmdsram | 4 ++++
bsps/m68k/mcf5329/start/linkcmds | 4 ++++
bsps/m68k/mcf5329/start/linkcmdsflash | 4 ++++
bsps/m68k/mrm332/start/linkcmds | 4 +++-
bsps/m68k/shared/start/linkcmds.base | 4 ++++
bsps/m68k/uC5282/start/linkcmds | 4 ++++
bsps/mips/csb350/start/linkcmds | 9 +++++----
bsps/mips/hurricane/start/linkcmds | 5 ++++-
bsps/mips/jmr3904/start/linkcmds | 7 ++++++-
bsps/mips/malta/start/linkcmds | 7 ++++++-
bsps/mips/rbtx4925/start/linkcmds | 5 ++++-
bsps/mips/rbtx4938/start/linkcmds | 5 ++++-
bsps/moxie/moxiesim/start/linkcmds | 3 +++
bsps/nios2/nios2_iss/start/linkcmds | 4 ++++
bsps/or1k/shared/start/linkcmds.base | 6 +++++-
bsps/powerpc/gen5200/start/linkcmds.gen5200_base | 6 +++++-
bsps/powerpc/gen83xx/start/linkcmds.mpc83xx | 2 +-
bsps/powerpc/haleakala/start/linkcmds | 7 +++++--
bsps/powerpc/include/bsp/linker-symbols.h | 6 +++---
bsps/powerpc/mpc55xxevb/start/linkcmds.gwlcfm | 2 +-
bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5566evb | 2 +-
bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5643l_evb | 2 +-
bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5668g | 2 +-
bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_ecu508 | 2 +-
bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_rsm6_base | 2 +-
bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674fevb | 2 +-
bsps/powerpc/mpc55xxevb/start/linkcmds.phycore_mpc5554 | 2 +-
bsps/powerpc/mpc8260ads/start/linkcmds | 4 ++++
bsps/powerpc/psim/start/linkcmds | 2 +-
bsps/powerpc/qemuppc/start/linkcmds | 2 +-
bsps/powerpc/qoriq/start/linkcmds.qoriq_core_0 | 2 +-
bsps/powerpc/qoriq/start/linkcmds.qoriq_core_1 | 2 +-
bsps/powerpc/qoriq/start/linkcmds.qoriq_e500 | 2 +-
bsps/powerpc/qoriq/start/linkcmds.qoriq_e6500_32 | 2 +-
bsps/powerpc/qoriq/start/mmu-config.c | 2 +-
bsps/powerpc/shared/start/linkcmds.base | 11 ++++++-----
bsps/powerpc/shared/start/linkcmds.share | 4 ++++
bsps/powerpc/ss555/start/linkcmds | 4 ++++
bsps/powerpc/t32mppc/start/linkcmds.t32mppc | 2 +-
bsps/powerpc/tqm8xx/start/linkcmds | 2 +-
bsps/powerpc/virtex/start/linkcmds.in | 2 +-
bsps/powerpc/virtex4/start/linkcmds | 7 +++++--
bsps/powerpc/virtex5/start/linkcmds | 7 +++++--
bsps/riscv/riscv_generic/start/linkcmds | 6 +++++-
bsps/sh/gensh1/start/linkcmds | 4 ++++
bsps/sh/gensh2/start/linkcmds | 4 ++++
bsps/sh/gensh2/start/linkcmds.ram | 5 ++++-
bsps/sh/gensh2/start/linkcmds.rom | 4 ++++
bsps/sh/gensh4/start/linkcmds | 10 ++++++----
bsps/sh/gensh4/start/linkcmds.rom | 5 ++++-
bsps/sh/gensh4/start/linkcmds.rom2ram | 5 ++++-
bsps/sh/shsim/start/linkcmds | 4 ++++
bsps/sparc/shared/start/linkcmds.base | 3 +++
bsps/sparc64/shared/start/linkcmds | 9 +++++++--
bsps/v850/gdbv850sim/start/linkcmds | 3 +++
78 files changed, 266 insertions(+), 77 deletions(-)
diff --git a/bsps/arm/shared/start/linkcmds.base b/bsps/arm/shared/start/linkcmds.base
index c6314547eb..5a669d87a8 100644
--- a/bsps/arm/shared/start/linkcmds.base
+++ b/bsps/arm/shared/start/linkcmds.base
@@ -335,6 +335,9 @@ SECTIONS {
bsp_stack_secondary_processors_end = .;
*(.bsp_vector)
+ } > REGION_VECTOR AT > REGION_VECTOR
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
bsp_section_vector_end = .;
} > REGION_VECTOR AT > REGION_VECTOR
bsp_section_vector_size = bsp_section_vector_end - bsp_section_vector_begin;
diff --git a/bsps/bfin/TLL6527M/start/linkcmds b/bsps/bfin/TLL6527M/start/linkcmds
index 93d2a85d82..8c7b373864 100644
--- a/bsps/bfin/TLL6527M/start/linkcmds
+++ b/bsps/bfin/TLL6527M/start/linkcmds
@@ -126,11 +126,15 @@ SECTIONS
_stack_init = .;
. += _StackSize;
_clear_end = .;
- _WorkAreaBase = .;
_end = .;
__end = .;
} > sdram
-
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ _WorkAreaBase = .;
+ } > sdram
+
/* Debugging stuff follows */
/* Stabs debugging sections. */
diff --git a/bsps/bfin/bf537Stamp/start/linkcmds b/bsps/bfin/bf537Stamp/start/linkcmds
index 47888ff798..c9925525c9 100644
--- a/bsps/bfin/bf537Stamp/start/linkcmds
+++ b/bsps/bfin/bf537Stamp/start/linkcmds
@@ -134,11 +134,15 @@ SECTIONS
_stack_init = .;
. += _StackSize;
_clear_end = .;
- _WorkAreaBase = .;
_end = .;
__end = .;
} > sdram
-
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ _WorkAreaBase = .;
+ } > sdram
+
/* Debugging stuff follows */
/* Stabs debugging sections. */
diff --git a/bsps/bfin/eZKit533/start/linkcmds b/bsps/bfin/eZKit533/start/linkcmds
index e66a599e1f..0fc2da123d 100644
--- a/bsps/bfin/eZKit533/start/linkcmds
+++ b/bsps/bfin/eZKit533/start/linkcmds
@@ -123,11 +123,15 @@ SECTIONS
_stack_init = .;
. += _StackSize;
_clear_end = .;
- _WorkAreaBase = .;
_end = .;
__end = .;
} > sdram
-
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ _WorkAreaBase = .;
+ } > sdram
+
/* Debugging stuff follows */
/* Stabs debugging sections. */
diff --git a/bsps/epiphany/epiphany_sim/start/linkcmds b/bsps/epiphany/epiphany_sim/start/linkcmds
index e0e216f21c..05e500e7d7 100644
--- a/bsps/epiphany/epiphany_sim/start/linkcmds
+++ b/bsps/epiphany/epiphany_sim/start/linkcmds
@@ -305,7 +305,7 @@ SECTIONS {
bsp_section_rodata_load_begin = LOADADDR (.rodata);
bsp_section_rodata_load_end = bsp_section_rodata_load_begin + bsp_section_rodata_size;
-.rwbarrier : {
+ .rwbarrier : {
. = ALIGN(8);
. = ALIGN (bsp_section_rwbarrier_align);
} > REGION_DATA AT > REGION_DATA
@@ -339,6 +339,10 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > REGION_WORK AT > REGION_WORK
+
.work : {
/*
* The work section will occupy the remaining REGION_WORK region and
diff --git a/bsps/i386/pc386/start/linkcmds b/bsps/i386/pc386/start/linkcmds
index 5fc3444c9e..01ec1e9371 100644
--- a/bsps/i386/pc386/start/linkcmds
+++ b/bsps/i386/pc386/start/linkcmds
@@ -204,9 +204,10 @@ SECTIONS
. = ALIGN(. != 0 ? 32 / 8 : 1);
}
. = ALIGN(32 / 8);
- . = ALIGN(32 / 8);
_end = .; PROVIDE (end = .);
- . = ALIGN(0x10);
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ }
WorkAreaBase = .;
. = DATA_SEGMENT_END (.);
diff --git a/bsps/lm32/lm32_evr/start/linkcmds b/bsps/lm32/lm32_evr/start/linkcmds
index 63747f33dc..d4b3147c63 100644
--- a/bsps/lm32/lm32_evr/start/linkcmds
+++ b/bsps/lm32/lm32_evr/start/linkcmds
@@ -252,14 +252,16 @@ SECTIONS
. += _StackSize;
_fstack = .;
- WorkAreaBase = .;
-
. = ALIGN (16);
_stack_init = .;
_clear_end = .;
} > sdram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ } > sdram
/DISCARD/ :
{
diff --git a/bsps/lm32/milkymist/start/linkcmds b/bsps/lm32/milkymist/start/linkcmds
index 9c38414238..6a2721005a 100644
--- a/bsps/lm32/milkymist/start/linkcmds
+++ b/bsps/lm32/milkymist/start/linkcmds
@@ -251,14 +251,15 @@ SECTIONS
. += _StackSize;
_fstack = .;
- WorkAreaBase = .;
-
. = ALIGN (16);
_stack_init = .;
_clear_end = .;
-
} > sdram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ } > sdram
/DISCARD/ :
{
diff --git a/bsps/m32c/m32cbsp/start/linkcmds b/bsps/m32c/m32cbsp/start/linkcmds
index 48cc27e7ae..201b26fb2c 100644
--- a/bsps/m32c/m32cbsp/start/linkcmds
+++ b/bsps/m32c/m32cbsp/start/linkcmds
@@ -157,6 +157,11 @@ SECTIONS
. += _StackSize;
PROVIDE (__stack = .);
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > RAM
+
PROVIDE (_WorkAreaBase = .);
. = 0xa00000;
PROVIDE (_WorkAreaEnd = .);
diff --git a/bsps/m68k/av5282/start/linkcmds b/bsps/m68k/av5282/start/linkcmds
index ff0fdda163..bf05d62018 100644
--- a/bsps/m68k/av5282/start/linkcmds
+++ b/bsps/m68k/av5282/start/linkcmds
@@ -180,9 +180,13 @@ SECTIONS
. = ALIGN (16);
PROVIDE (end = .);
_clear_end = .;
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
+
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
diff --git a/bsps/m68k/av5282/start/linkcmdsflash b/bsps/m68k/av5282/start/linkcmdsflash
index e194add7b8..be694788dd 100644
--- a/bsps/m68k/av5282/start/linkcmdsflash
+++ b/bsps/m68k/av5282/start/linkcmdsflash
@@ -180,7 +180,10 @@ SECTIONS
. = ALIGN (16);
PROVIDE (end = .);
_clear_end = .;
+ }
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
}
/* Stabs debugging sections. */
diff --git a/bsps/m68k/av5282/start/linkcmdsram b/bsps/m68k/av5282/start/linkcmdsram
index 976c08a308..bb678af188 100644
--- a/bsps/m68k/av5282/start/linkcmdsram
+++ b/bsps/m68k/av5282/start/linkcmdsram
@@ -179,9 +179,13 @@ SECTIONS
. = ALIGN (16);
PROVIDE (end = .);
_clear_end = .;
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
+
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
diff --git a/bsps/m68k/csb360/start/linkcmds b/bsps/m68k/csb360/start/linkcmds
index 09670c156d..25f3f3f15a 100644
--- a/bsps/m68k/csb360/start/linkcmds
+++ b/bsps/m68k/csb360/start/linkcmds
@@ -155,12 +155,13 @@ SECTIONS
_end = .;
clear_end = .;
-
- WorkAreaBase = .;
- WorkAreaBase = .;
-
} > ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ } >ram
+
.stab 0 (NOLOAD) :
{
*(.stab)
diff --git a/bsps/m68k/gen68340/start/linkcmds b/bsps/m68k/gen68340/start/linkcmds
index 860115930e..99eeb3bf70 100644
--- a/bsps/m68k/gen68340/start/linkcmds
+++ b/bsps/m68k/gen68340/start/linkcmds
@@ -191,7 +191,10 @@ SECTIONS {
. = ALIGN (16);
_stack_init = .;
_clear_end = .;
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
diff --git a/bsps/m68k/gen68360/start/linkcmds b/bsps/m68k/gen68360/start/linkcmds
index 4ffc8bb57a..f3d6712988 100644
--- a/bsps/m68k/gen68360/start/linkcmds
+++ b/bsps/m68k/gen68360/start/linkcmds
@@ -155,7 +155,10 @@ SECTIONS {
. = ALIGN (16);
_stack_init = .;
_clear_end = .;
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
diff --git a/bsps/m68k/gen68360/start/linkcmds.bootp b/bsps/m68k/gen68360/start/linkcmds.bootp
index ccd08a14a2..b97c66f3a1 100644
--- a/bsps/m68k/gen68360/start/linkcmds.bootp
+++ b/bsps/m68k/gen68360/start/linkcmds.bootp
@@ -157,7 +157,10 @@ SECTIONS {
. = ALIGN (16);
_stack_init = .;
_clear_end = .;
+ } >myram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >myram
diff --git a/bsps/m68k/gen68360/start/linkcmds.prom b/bsps/m68k/gen68360/start/linkcmds.prom
index 777700e6a1..6513ccd544 100644
--- a/bsps/m68k/gen68360/start/linkcmds.prom
+++ b/bsps/m68k/gen68360/start/linkcmds.prom
@@ -155,7 +155,10 @@ SECTIONS {
. = ALIGN (16);
_stack_init = .;
_clear_end = .;
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
diff --git a/bsps/m68k/mcf5206elite/start/linkcmds b/bsps/m68k/mcf5206elite/start/linkcmds
index 817c80e298..d65e495943 100644
--- a/bsps/m68k/mcf5206elite/start/linkcmds
+++ b/bsps/m68k/mcf5206elite/start/linkcmds
@@ -188,10 +188,11 @@ SECTIONS
_end = .;
clear_end = .;
+ } > ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
- WorkAreaBase = .;
-
} > ram
.stab 0 (NOLOAD) :
diff --git a/bsps/m68k/mcf5206elite/start/linkcmds.flash b/bsps/m68k/mcf5206elite/start/linkcmds.flash
index 8d429ab209..e467ecb3b4 100644
--- a/bsps/m68k/mcf5206elite/start/linkcmds.flash
+++ b/bsps/m68k/mcf5206elite/start/linkcmds.flash
@@ -188,10 +188,11 @@ SECTIONS
_end = .;
clear_end = .;
+ } > ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
- WorkAreaBase = .;
-
} > ram
.stab 0 (NOLOAD) :
diff --git a/bsps/m68k/mcf52235/start/linkcmds b/bsps/m68k/mcf52235/start/linkcmds
index 7c7755cc21..3e912a210f 100644
--- a/bsps/m68k/mcf52235/start/linkcmds
+++ b/bsps/m68k/mcf52235/start/linkcmds
@@ -179,6 +179,10 @@ SECTIONS
. += _StackSize;
. = ALIGN (16);
PROVIDE(_StackInit = .);
+ } >sram
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
PROVIDE(WorkAreaBase = .);
} >sram
diff --git a/bsps/m68k/mcf5225x/start/linkcmds b/bsps/m68k/mcf5225x/start/linkcmds
index 81d2058872..a2ad1ec047 100644
--- a/bsps/m68k/mcf5225x/start/linkcmds
+++ b/bsps/m68k/mcf5225x/start/linkcmds
@@ -179,6 +179,10 @@ SECTIONS
. += _StackSize;
. = ALIGN (16);
PROVIDE(_StackInit = .);
+ } >sram
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
PROVIDE(WorkAreaBase = .);
} >sram
diff --git a/bsps/m68k/mcf5235/start/linkcmds b/bsps/m68k/mcf5235/start/linkcmds
index 660c931e26..8d98973a28 100644
--- a/bsps/m68k/mcf5235/start/linkcmds
+++ b/bsps/m68k/mcf5235/start/linkcmds
@@ -187,7 +187,10 @@ SECTIONS
. = ALIGN (16);
PROVIDE (end = .);
_clear_end = .;
+ } > dram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} > dram
/* Stabs debugging sections. */
diff --git a/bsps/m68k/mcf5235/start/linkcmdsflash b/bsps/m68k/mcf5235/start/linkcmdsflash
index 832424a2d9..87dfadf8c0 100644
--- a/bsps/m68k/mcf5235/start/linkcmdsflash
+++ b/bsps/m68k/mcf5235/start/linkcmdsflash
@@ -192,7 +192,10 @@ SECTIONS
. = ALIGN (16);
PROVIDE (end = .);
_clear_end = .;
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
/* Stabs debugging sections. */
diff --git a/bsps/m68k/mcf5235/start/linkcmdsram b/bsps/m68k/mcf5235/start/linkcmdsram
index ec7483001e..0f616890a8 100644
--- a/bsps/m68k/mcf5235/start/linkcmdsram
+++ b/bsps/m68k/mcf5235/start/linkcmdsram
@@ -187,9 +187,13 @@ SECTIONS
. = ALIGN (16);
PROVIDE (end = .);
_clear_end = .;
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
+
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) }
diff --git a/bsps/m68k/mcf5329/start/linkcmds b/bsps/m68k/mcf5329/start/linkcmds
index 1982a91f7b..bed8dfe0fe 100644
--- a/bsps/m68k/mcf5329/start/linkcmds
+++ b/bsps/m68k/mcf5329/start/linkcmds
@@ -180,6 +180,10 @@ SECTIONS
PROVIDE (_end = .);
_clear_end = .;
+ } > dram
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} > dram
diff --git a/bsps/m68k/mcf5329/start/linkcmdsflash b/bsps/m68k/mcf5329/start/linkcmdsflash
index af0cc4ee01..88a6f96ff0 100644
--- a/bsps/m68k/mcf5329/start/linkcmdsflash
+++ b/bsps/m68k/mcf5329/start/linkcmdsflash
@@ -176,6 +176,10 @@ SECTIONS
PROVIDE (_end = .);
_clear_end = .;
+ } > dram
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} > dram
diff --git a/bsps/m68k/mrm332/start/linkcmds b/bsps/m68k/mrm332/start/linkcmds
index 1ee7117d6b..f86e80dd02 100644
--- a/bsps/m68k/mrm332/start/linkcmds
+++ b/bsps/m68k/mrm332/start/linkcmds
@@ -198,7 +198,9 @@ SECTIONS
. = ALIGN (16);
_stack_init = .;
_clear_end = .;
-
+ } > ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} > ram
.stab . (NOLOAD) :
diff --git a/bsps/m68k/shared/start/linkcmds.base b/bsps/m68k/shared/start/linkcmds.base
index 56af70d1da..ee1d6ea4e2 100644
--- a/bsps/m68k/shared/start/linkcmds.base
+++ b/bsps/m68k/shared/start/linkcmds.base
@@ -257,6 +257,10 @@ SECTIONS {
} > REGION_DATA AT > REGION_DATA
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
+ .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT {
+ *(SORT(.rtemsstack.*))
+ } > REGION_DATA AT > REGION_DATA
+
.work : ALIGN_WITH_INPUT {
/*
* The work section will occupy the remaining REGION_DATA region and
diff --git a/bsps/m68k/uC5282/start/linkcmds b/bsps/m68k/uC5282/start/linkcmds
index a3b84294e3..9636fc28ca 100644
--- a/bsps/m68k/uC5282/start/linkcmds
+++ b/bsps/m68k/uC5282/start/linkcmds
@@ -196,6 +196,10 @@ SECTIONS
. = ALIGN (16);
PROVIDE (end = .);
_clear_end = .;
+ } >ram
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
diff --git a/bsps/mips/csb350/start/linkcmds b/bsps/mips/csb350/start/linkcmds
index b11b73bf42..d9d2d1c815 100644
--- a/bsps/mips/csb350/start/linkcmds
+++ b/bsps/mips/csb350/start/linkcmds
@@ -194,11 +194,12 @@ SECTIONS
_clear_end = .;
end = .;
_end = .;
- . = ALIGN (1024);
- WorkAreaBase = .;
-
- } >ram
+ } >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ } >ram
/*
** DWARF debug sections.
diff --git a/bsps/mips/hurricane/start/linkcmds b/bsps/mips/hurricane/start/linkcmds
index 4e10c29f6e..3ffaf52710 100644
--- a/bsps/mips/hurricane/start/linkcmds
+++ b/bsps/mips/hurricane/start/linkcmds
@@ -172,9 +172,12 @@ SECTIONS
_stack_init = .;
end = .;
_end = .;
- WorkAreaBase = .;
}
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ }
/* Debug sections. These should never be loadable, but they must have
zero addresses for the debuggers to work correctly. */
diff --git a/bsps/mips/jmr3904/start/linkcmds b/bsps/mips/jmr3904/start/linkcmds
index 12a8a65b09..a3d64a4284 100644
--- a/bsps/mips/jmr3904/start/linkcmds
+++ b/bsps/mips/jmr3904/start/linkcmds
@@ -168,9 +168,14 @@ SECTIONS
. += _StackSize;
__stack = .;
_stack_init = .;
- WorkAreaBase = .;
_clear_end = .;
}
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ }
+
. = 0x88400000; /* reserve some memory for Work Area */
end = .;
_end = .;
diff --git a/bsps/mips/malta/start/linkcmds b/bsps/mips/malta/start/linkcmds
index 3a71c5af8b..4e44bce110 100644
--- a/bsps/mips/malta/start/linkcmds
+++ b/bsps/mips/malta/start/linkcmds
@@ -169,9 +169,14 @@ SECTIONS
. += _StackSize;
__stack = .;
_stack_init = .;
- WorkAreaBase = .;
_clear_end = .;
}
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ }
+
. = 0x88400000; /* reserve some memory for Work Area */
end = .;
_end = .;
diff --git a/bsps/mips/rbtx4925/start/linkcmds b/bsps/mips/rbtx4925/start/linkcmds
index 4f7de84115..7c75cb5d59 100644
--- a/bsps/mips/rbtx4925/start/linkcmds
+++ b/bsps/mips/rbtx4925/start/linkcmds
@@ -172,9 +172,12 @@ SECTIONS
_stack_init = .;
end = .;
_end = .;
- WorkAreaBase = .;
}
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ }
/* Debug sections. These should never be loadable, but they must have
zero addresses for the debuggers to work correctly. */
diff --git a/bsps/mips/rbtx4938/start/linkcmds b/bsps/mips/rbtx4938/start/linkcmds
index 246e11debc..a9deef8cd9 100644
--- a/bsps/mips/rbtx4938/start/linkcmds
+++ b/bsps/mips/rbtx4938/start/linkcmds
@@ -172,9 +172,12 @@ SECTIONS
_stack_init = .;
end = .;
_end = .;
- WorkAreaBase = .;
}
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ WorkAreaBase = .;
+ }
/* Debug sections. These should never be loadable, but they must have
zero addresses for the debuggers to work correctly. */
diff --git a/bsps/moxie/moxiesim/start/linkcmds b/bsps/moxie/moxiesim/start/linkcmds
index a4d9edac11..1df8cfb3fe 100644
--- a/bsps/moxie/moxiesim/start/linkcmds
+++ b/bsps/moxie/moxiesim/start/linkcmds
@@ -229,6 +229,9 @@ SECTIONS
_end = .;
_bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
PROVIDE (end = .);
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ }
WorkAreaBase = .;
/* Stabs debugging sections. */
.stab 0 : { *(.stab) }
diff --git a/bsps/nios2/nios2_iss/start/linkcmds b/bsps/nios2/nios2_iss/start/linkcmds
index c08c37628a..b900718b6d 100644
--- a/bsps/nios2/nios2_iss/start/linkcmds
+++ b/bsps/nios2/nios2_iss/start/linkcmds
@@ -268,6 +268,10 @@ SECTIONS
_stack_low = ABSOLUTE(.);
. += StackSize;
_stack_high = ABSOLUTE(.);
+ } > onchip_memory_0
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
WorkAreaBase = .;
} > onchip_memory_0
diff --git a/bsps/or1k/shared/start/linkcmds.base b/bsps/or1k/shared/start/linkcmds.base
index 4514596ba0..569e0a097f 100644
--- a/bsps/or1k/shared/start/linkcmds.base
+++ b/bsps/or1k/shared/start/linkcmds.base
@@ -259,7 +259,7 @@ SECTIONS {
bsp_section_rodata_load_begin = LOADADDR (.rodata);
bsp_section_rodata_load_end = bsp_section_rodata_load_begin + bsp_section_rodata_size;
-.rwbarrier : ALIGN_WITH_INPUT {
+ .rwbarrier : ALIGN_WITH_INPUT {
. = ALIGN (bsp_section_rwbarrier_align);
} > REGION_DATA AT > REGION_DATA
@@ -288,6 +288,10 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
+ .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT{
+ *(SORT(.rtemsstack.*))
+ } > REGION_WORK AT > REGION_WORK
+
.work : ALIGN_WITH_INPUT {
/*
* The work section will occupy the remaining REGION_WORK region and
diff --git a/bsps/powerpc/gen5200/start/linkcmds.gen5200_base b/bsps/powerpc/gen5200/start/linkcmds.gen5200_base
index 1a92c7c9dd..a8841d2586 100644
--- a/bsps/powerpc/gen5200/start/linkcmds.gen5200_base
+++ b/bsps/powerpc/gen5200/start/linkcmds.gen5200_base
@@ -295,10 +295,14 @@ SECTIONS {
bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k;
bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > RAM
+
/*
* BSP: Work area start
*/
- bsp_work_area_start = bsp_interrupt_stack_end;
+ bsp_work_area_start = .;
WorkAreaBase = bsp_work_area_start;
/* Stabs debugging sections. */
diff --git a/bsps/powerpc/gen83xx/start/linkcmds.mpc83xx b/bsps/powerpc/gen83xx/start/linkcmds.mpc83xx
index 4ddbcd6f76..424e20ef33 100644
--- a/bsps/powerpc/gen83xx/start/linkcmds.mpc83xx
+++ b/bsps/powerpc/gen83xx/start/linkcmds.mpc83xx
@@ -37,7 +37,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", WORK);
REGION_ALIAS ("REGION_DATA", WORK);
REGION_ALIAS ("REGION_DATA_LOAD", WORK);
REGION_ALIAS ("REGION_BSS", WORK);
-REGION_ALIAS ("REGION_RWEXTRA", WORK);
+REGION_ALIAS ("REGION_RTEMSSTACK", WORK);
REGION_ALIAS ("REGION_WORK", WORK);
REGION_ALIAS ("REGION_STACK", WORK);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/haleakala/start/linkcmds b/bsps/powerpc/haleakala/start/linkcmds
index 8c06a5103b..98fea7f990 100644
--- a/bsps/powerpc/haleakala/start/linkcmds
+++ b/bsps/powerpc/haleakala/start/linkcmds
@@ -260,8 +260,11 @@ SECTIONS
. += kMainStackSize;
stack.end = .;
- /* RTEMS workspace: size specified by application */
- WorkAreaBase = ALIGN(0x20);
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } >RAM
+
+ WorkAreaBase = .;
/* Debugging information */
.line 0 : { *(.line) }
diff --git a/bsps/powerpc/include/bsp/linker-symbols.h b/bsps/powerpc/include/bsp/linker-symbols.h
index de7a6c483d..61e0da4158 100644
--- a/bsps/powerpc/include/bsp/linker-symbols.h
+++ b/bsps/powerpc/include/bsp/linker-symbols.h
@@ -81,9 +81,9 @@ LINKER_SYMBOL(bsp_section_sbss_begin)
LINKER_SYMBOL(bsp_section_sbss_end)
LINKER_SYMBOL(bsp_section_sbss_size)
-LINKER_SYMBOL(bsp_section_rwextra_begin)
-LINKER_SYMBOL(bsp_section_rwextra_end)
-LINKER_SYMBOL(bsp_section_rwextra_size)
+LINKER_SYMBOL(bsp_section_rtemsstack_begin)
+LINKER_SYMBOL(bsp_section_rtemsstack_end)
+LINKER_SYMBOL(bsp_section_rtemsstack_size)
LINKER_SYMBOL(bsp_section_work_begin)
LINKER_SYMBOL(bsp_section_work_end)
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.gwlcfm b/bsps/powerpc/mpc55xxevb/start/linkcmds.gwlcfm
index cabaac2201..0981a7906e 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.gwlcfm
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.gwlcfm
@@ -17,7 +17,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM_EXT);
-REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5566evb b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5566evb
index 4f63fb0e0a..114d944f03 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5566evb
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5566evb
@@ -17,7 +17,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM_EXT);
-REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5643l_evb b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5643l_evb
index 1977c92d59..82d2d4cb93 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5643l_evb
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5643l_evb
@@ -23,7 +23,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM_1);
REGION_ALIAS ("REGION_STACK", RAM_1);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5668g b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5668g
index 6c8e5a64f1..bbe39b806e 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5668g
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5668g
@@ -19,7 +19,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_ecu508 b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_ecu508
index 1e52a3c6c3..9b24b8f58e 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_ecu508
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_ecu508
@@ -21,7 +21,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_rsm6_base b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_rsm6_base
index 8f6a403ca8..8f12295bd0 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_rsm6_base
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674f_rsm6_base
@@ -18,7 +18,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674fevb b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674fevb
index 3113fb20b7..a226f4b3f9 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674fevb
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.mpc5674fevb
@@ -18,7 +18,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc55xxevb/start/linkcmds.phycore_mpc5554 b/bsps/powerpc/mpc55xxevb/start/linkcmds.phycore_mpc5554
index 77b8abc5e0..a854908f1f 100644
--- a/bsps/powerpc/mpc55xxevb/start/linkcmds.phycore_mpc5554
+++ b/bsps/powerpc/mpc55xxevb/start/linkcmds.phycore_mpc5554
@@ -26,7 +26,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM_EXT);
-REGION_ALIAS ("REGION_RWEXTRA", RAM_EXT);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM_EXT);
REGION_ALIAS ("REGION_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/mpc8260ads/start/linkcmds b/bsps/powerpc/mpc8260ads/start/linkcmds
index f3092b862d..34fb69149b 100644
--- a/bsps/powerpc/mpc8260ads/start/linkcmds
+++ b/bsps/powerpc/mpc8260ads/start/linkcmds
@@ -301,6 +301,10 @@ SECTIONS
clear_end = .;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } >ram
+
WorkAreaBase = .;
/* Sections for compressed .text and .data */
diff --git a/bsps/powerpc/psim/start/linkcmds b/bsps/powerpc/psim/start/linkcmds
index ba9319c91d..7ac828443d 100644
--- a/bsps/powerpc/psim/start/linkcmds
+++ b/bsps/powerpc/psim/start/linkcmds
@@ -26,7 +26,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/qemuppc/start/linkcmds b/bsps/powerpc/qemuppc/start/linkcmds
index 3169ad2741..e3642c47a3 100644
--- a/bsps/powerpc/qemuppc/start/linkcmds
+++ b/bsps/powerpc/qemuppc/start/linkcmds
@@ -21,7 +21,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_0 b/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_0
index 80ae3937bf..db31092faf 100644
--- a/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_0
+++ b/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_0
@@ -24,7 +24,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_DATA", HIGH);
REGION_ALIAS ("REGION_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_BSS", HIGH);
-REGION_ALIAS ("REGION_RWEXTRA", HIGH);
+REGION_ALIAS ("REGION_RTEMSSTACK", HIGH);
REGION_ALIAS ("REGION_WORK", HIGH);
REGION_ALIAS ("REGION_STACK", HIGH);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_1 b/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_1
index ecb601b9ef..28ec68fe3d 100644
--- a/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_1
+++ b/bsps/powerpc/qoriq/start/linkcmds.qoriq_core_1
@@ -23,7 +23,7 @@ REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM);
REGION_ALIAS ("REGION_FAST_DATA", RAM);
REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/qoriq/start/linkcmds.qoriq_e500 b/bsps/powerpc/qoriq/start/linkcmds.qoriq_e500
index b727aefaa8..5328e73c5b 100644
--- a/bsps/powerpc/qoriq/start/linkcmds.qoriq_e500
+++ b/bsps/powerpc/qoriq/start/linkcmds.qoriq_e500
@@ -24,7 +24,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_DATA", HIGH);
REGION_ALIAS ("REGION_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_BSS", HIGH);
-REGION_ALIAS ("REGION_RWEXTRA", HIGH);
+REGION_ALIAS ("REGION_RTEMSSTACK", HIGH);
REGION_ALIAS ("REGION_WORK", HIGH);
REGION_ALIAS ("REGION_STACK", HIGH);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/qoriq/start/linkcmds.qoriq_e6500_32 b/bsps/powerpc/qoriq/start/linkcmds.qoriq_e6500_32
index 900147c163..4f8bbdfdbc 100644
--- a/bsps/powerpc/qoriq/start/linkcmds.qoriq_e6500_32
+++ b/bsps/powerpc/qoriq/start/linkcmds.qoriq_e6500_32
@@ -25,7 +25,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_DATA", HIGH);
REGION_ALIAS ("REGION_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_BSS", HIGH);
-REGION_ALIAS ("REGION_RWEXTRA", HIGH);
+REGION_ALIAS ("REGION_RTEMSSTACK", HIGH);
REGION_ALIAS ("REGION_WORK", HIGH);
REGION_ALIAS ("REGION_STACK", HIGH);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE);
diff --git a/bsps/powerpc/qoriq/start/mmu-config.c b/bsps/powerpc/qoriq/start/mmu-config.c
index b59d9c7114..3c5a8538c8 100644
--- a/bsps/powerpc/qoriq/start/mmu-config.c
+++ b/bsps/powerpc/qoriq/start/mmu-config.c
@@ -131,7 +131,7 @@ static entry DATA config[] = {
ENTRY_RW(bsp_section_data_begin, bsp_section_data_size),
ENTRY_RW(bsp_section_sbss_begin, bsp_section_sbss_size),
ENTRY_RW(bsp_section_bss_begin, bsp_section_bss_size),
- ENTRY_RW(bsp_section_rwextra_begin, bsp_section_rwextra_size),
+ ENTRY_RW(bsp_section_rtemsstack_begin, bsp_section_rtemsstack_size),
ENTRY_RW(bsp_section_stack_begin, bsp_section_stack_size),
ENTRY_IO(bsp_section_nocache_begin, bsp_section_nocache_size),
ENTRY_IO(bsp_section_nocachenoload_begin, bsp_section_nocachenoload_size),
diff --git a/bsps/powerpc/shared/start/linkcmds.base b/bsps/powerpc/shared/start/linkcmds.base
index 25a6414855..fa49edf7dd 100644
--- a/bsps/powerpc/shared/start/linkcmds.base
+++ b/bsps/powerpc/shared/start/linkcmds.base
@@ -319,12 +319,13 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
- .rwextra : ALIGN_WITH_INPUT {
- bsp_section_rwextra_begin = .;
+ .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT {
+ bsp_section_rtemsstack_begin = .;
*(.bsp_rwextra)
- bsp_section_rwextra_end = .;
- } > REGION_RWEXTRA AT > REGION_RWEXTRA
- bsp_section_rwextra_size = bsp_section_rwextra_end - bsp_section_rwextra_begin;
+ *(SORT(.rtemsstack.*))
+ bsp_section_rtemsstack_end = .;
+ } > REGION_RTEMSSTACK AT > REGION_RTEMSSTACK
+ bsp_section_rtemsstack_size = bsp_section_rtemsstack_end - bsp_section_rtemsstack_begin;
.work : ALIGN_WITH_INPUT {
/*
diff --git a/bsps/powerpc/shared/start/linkcmds.share b/bsps/powerpc/shared/start/linkcmds.share
index 59f538e3a2..e2a3a16fbe 100644
--- a/bsps/powerpc/shared/start/linkcmds.share
+++ b/bsps/powerpc/shared/start/linkcmds.share
@@ -98,6 +98,10 @@ SECTIONS
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } >CODE
+
/* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */
. = ALIGN(0x10000) + (. & (0x10000 - 1));
diff --git a/bsps/powerpc/ss555/start/linkcmds b/bsps/powerpc/ss555/start/linkcmds
index 8282d6c605..079dc84924 100644
--- a/bsps/powerpc/ss555/start/linkcmds
+++ b/bsps/powerpc/ss555/start/linkcmds
@@ -248,6 +248,10 @@ SECTIONS
intrStack = .;
PROVIDE(intrStackPtr = intrStack);
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ }
+
/*
* Work Area
*
diff --git a/bsps/powerpc/t32mppc/start/linkcmds.t32mppc b/bsps/powerpc/t32mppc/start/linkcmds.t32mppc
index 02367f57d0..81e1c3d817 100644
--- a/bsps/powerpc/t32mppc/start/linkcmds.t32mppc
+++ b/bsps/powerpc/t32mppc/start/linkcmds.t32mppc
@@ -17,7 +17,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", RAM);
diff --git a/bsps/powerpc/tqm8xx/start/linkcmds b/bsps/powerpc/tqm8xx/start/linkcmds
index 7171d0230a..2d9e1e37e8 100644
--- a/bsps/powerpc/tqm8xx/start/linkcmds
+++ b/bsps/powerpc/tqm8xx/start/linkcmds
@@ -25,7 +25,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/virtex/start/linkcmds.in b/bsps/powerpc/virtex/start/linkcmds.in
index 13f9217e9d..41fac076d7 100644
--- a/bsps/powerpc/virtex/start/linkcmds.in
+++ b/bsps/powerpc/virtex/start/linkcmds.in
@@ -19,7 +19,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM);
-REGION_ALIAS ("REGION_RWEXTRA", RAM);
+REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY);
diff --git a/bsps/powerpc/virtex4/start/linkcmds b/bsps/powerpc/virtex4/start/linkcmds
index 50d3a3f13c..63864ac0ca 100644
--- a/bsps/powerpc/virtex4/start/linkcmds
+++ b/bsps/powerpc/virtex4/start/linkcmds
@@ -260,8 +260,11 @@ SECTIONS
. += StackSize;
__stack_base = .; /* Initial stack builds downwards */
- /* RTEMS workspace: size specified by application */
- WorkAreaBase = ALIGN(0x10); /* Align to a cache-line boundary */
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } >RAM
+
+ WorkAreaBase = .
/* The heap comes after the work space */
diff --git a/bsps/powerpc/virtex5/start/linkcmds b/bsps/powerpc/virtex5/start/linkcmds
index 9bd7c2e67f..4fd5243f3f 100644
--- a/bsps/powerpc/virtex5/start/linkcmds
+++ b/bsps/powerpc/virtex5/start/linkcmds
@@ -260,8 +260,11 @@ SECTIONS
. += StackSize;
__stack_base = .; /* Initial stack builds downwards */
- /* RTEMS workspace: size specified by application */
- WorkAreaBase = ALIGN(0x20); /* Align to a cache-line boundary */
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } >RAM
+
+ WorkAreaBase = .;
/* The heap comes after the work space */
diff --git a/bsps/riscv/riscv_generic/start/linkcmds b/bsps/riscv/riscv_generic/start/linkcmds
index 737ae75f32..9f71b66aa2 100644
--- a/bsps/riscv/riscv_generic/start/linkcmds
+++ b/bsps/riscv/riscv_generic/start/linkcmds
@@ -313,7 +313,7 @@ SECTIONS {
} > REGION_HTIF AT > REGION_HTIF_LOAD
-.rwbarrier : {
+ .rwbarrier : {
. = ALIGN(8);
. = ALIGN (bsp_section_rwbarrier_align);
} > REGION_DATA AT > REGION_DATA
@@ -347,6 +347,10 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > REGION_WORK AT > REGION_WORK
+
.work : {
/*
* The work section will occupy the remaining REGION_WORK region and
diff --git a/bsps/sh/gensh1/start/linkcmds b/bsps/sh/gensh1/start/linkcmds
index d268d4cfc7..bb190f8c5a 100644
--- a/bsps/sh/gensh1/start/linkcmds
+++ b/bsps/sh/gensh1/start/linkcmds
@@ -188,6 +188,10 @@ SECTIONS
_WorkAreaBase = . ;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > onchip_ram
+
_CPU_Interrupt_stack_low = 0x0f000000 ;
_CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;
diff --git a/bsps/sh/gensh2/start/linkcmds b/bsps/sh/gensh2/start/linkcmds
index 2c4d44a941..e6db97e0c3 100644
--- a/bsps/sh/gensh2/start/linkcmds
+++ b/bsps/sh/gensh2/start/linkcmds
@@ -199,6 +199,10 @@ SECTIONS
_WorkAreaBase = . ;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > onchip_ram
+
_CPU_Interrupt_stack_low = 0xFFFFF000;
_CPU_Interrupt_stack_high = 0xFFFFFFFF;
diff --git a/bsps/sh/gensh2/start/linkcmds.ram b/bsps/sh/gensh2/start/linkcmds.ram
index c5349398ff..8b53cd4f39 100644
--- a/bsps/sh/gensh2/start/linkcmds.ram
+++ b/bsps/sh/gensh2/start/linkcmds.ram
@@ -200,7 +200,10 @@ SECTIONS
PROVIDE (end = .);
_WorkAreaBase = . ;
- . = 0x00480000 ;
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > onchip_ram
_CPU_Interrupt_stack_low = 0xFFFFF000;
_CPU_Interrupt_stack_high = 0xFFFFFFFF;
diff --git a/bsps/sh/gensh2/start/linkcmds.rom b/bsps/sh/gensh2/start/linkcmds.rom
index 4934c10269..9f50cd7e64 100644
--- a/bsps/sh/gensh2/start/linkcmds.rom
+++ b/bsps/sh/gensh2/start/linkcmds.rom
@@ -206,6 +206,10 @@ SECTIONS
_WorkAreaBase = . ;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > onchip_ram
+
_CPU_Interrupt_stack_low = 0xFFFFF000;
_CPU_Interrupt_stack_high = 0xFFFFFFFF;
diff --git a/bsps/sh/gensh4/start/linkcmds b/bsps/sh/gensh4/start/linkcmds
index de6bb05693..21e0fdc5c9 100644
--- a/bsps/sh/gensh4/start/linkcmds
+++ b/bsps/sh/gensh4/start/linkcmds
@@ -144,11 +144,14 @@ SECTIONS
__bss_end = .;
} > ram
- .stack . : {
+ .stack : {
. = . + 4096;
- }
+ } > ram
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > ram
- . = ALIGN(16);
_WorkAreaBase = . ;
. = ALIGN(16);
@@ -188,6 +191,5 @@ SECTIONS
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
- .stack : { _stack = .; *(.stack) }
/* These must appear regardless of . */
}
diff --git a/bsps/sh/gensh4/start/linkcmds.rom b/bsps/sh/gensh4/start/linkcmds.rom
index 13c6096af1..5e37f06941 100644
--- a/bsps/sh/gensh4/start/linkcmds.rom
+++ b/bsps/sh/gensh4/start/linkcmds.rom
@@ -187,7 +187,10 @@ SECTIONS
__bss_end = .;
} > ram
- . = ALIGN(16);
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > ram
+
_WorkAreaBase = . ;
. = ALIGN(16);
diff --git a/bsps/sh/gensh4/start/linkcmds.rom2ram b/bsps/sh/gensh4/start/linkcmds.rom2ram
index cc14d4e98d..2fff0d1f98 100644
--- a/bsps/sh/gensh4/start/linkcmds.rom2ram
+++ b/bsps/sh/gensh4/start/linkcmds.rom2ram
@@ -190,7 +190,10 @@ SECTIONS
*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
} >ram
- . = ALIGN(16);
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > ram
_WorkAreaBase = . ;
diff --git a/bsps/sh/shsim/start/linkcmds b/bsps/sh/shsim/start/linkcmds
index 41c7245da0..932d94161f 100644
--- a/bsps/sh/shsim/start/linkcmds
+++ b/bsps/sh/shsim/start/linkcmds
@@ -209,6 +209,10 @@ SECTIONS
} > ram
_stack = .;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > ram
+
_WorkAreaBase = . ;
_CPU_Interrupt_stack_low = 0x00080000 ;
diff --git a/bsps/sparc/shared/start/linkcmds.base b/bsps/sparc/shared/start/linkcmds.base
index 4c7750dfe0..7d5f86b23c 100644
--- a/bsps/sparc/shared/start/linkcmds.base
+++ b/bsps/sparc/shared/start/linkcmds.base
@@ -154,6 +154,9 @@ SECTIONS
*(.rela.rtemsroset*)
*(.rela.rtemsrwset*)
} >ram
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ } > ram
.data :
{
data_start = .;
diff --git a/bsps/sparc64/shared/start/linkcmds b/bsps/sparc64/shared/start/linkcmds
index 2f9db3a087..9cd4d99583 100644
--- a/bsps/sparc64/shared/start/linkcmds
+++ b/bsps/sparc64/shared/start/linkcmds
@@ -206,9 +206,14 @@ SECTIONS
end = .;
_end = .;
__end = .;
-
- . = ALIGN (16); /* arbitrary alignment */
+ } > ram
+
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
PROVIDE (WorkAreaBase = .);
+ } > ram
+
+ .heap : {
. += HeapSize;
PROVIDE (HeapBase = .);
. += HeapSize;
diff --git a/bsps/v850/gdbv850sim/start/linkcmds b/bsps/v850/gdbv850sim/start/linkcmds
index 42dccab5ae..86613dd73d 100644
--- a/bsps/v850/gdbv850sim/start/linkcmds
+++ b/bsps/v850/gdbv850sim/start/linkcmds
@@ -194,6 +194,9 @@ SECTIONS
}
. += _StackSize;
_stack = .;
+ .rtemsstack (NOLOAD) : {
+ *(SORT(.rtemsstack.*))
+ }
_WorkAreaBase = .;
_end = . ;
PROVIDE (end = .);
--
2.13.7
More information about the devel
mailing list