bsps: Support .rtemsstack.* linker input sections

Use a dedicated memory region or place it between the BSS and workspace.

Update #3459.
This commit is contained in:
Sebastian Huber
2018-06-19 15:10:36 +02:00
parent c8df844cf3
commit 715d6167e0
78 changed files with 266 additions and 77 deletions

View File

@@ -335,6 +335,9 @@ SECTIONS {
bsp_stack_secondary_processors_end = .; bsp_stack_secondary_processors_end = .;
*(.bsp_vector) *(.bsp_vector)
} > REGION_VECTOR AT > REGION_VECTOR
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
bsp_section_vector_end = .; bsp_section_vector_end = .;
} > REGION_VECTOR AT > REGION_VECTOR } > REGION_VECTOR AT > REGION_VECTOR
bsp_section_vector_size = bsp_section_vector_end - bsp_section_vector_begin; bsp_section_vector_size = bsp_section_vector_end - bsp_section_vector_begin;

View File

@@ -126,11 +126,15 @@ SECTIONS
_stack_init = .; _stack_init = .;
. += _StackSize; . += _StackSize;
_clear_end = .; _clear_end = .;
_WorkAreaBase = .;
_end = .; _end = .;
__end = .; __end = .;
} > sdram } > sdram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
_WorkAreaBase = .;
} > sdram
/* Debugging stuff follows */ /* Debugging stuff follows */
/* Stabs debugging sections. */ /* Stabs debugging sections. */

View File

@@ -134,11 +134,15 @@ SECTIONS
_stack_init = .; _stack_init = .;
. += _StackSize; . += _StackSize;
_clear_end = .; _clear_end = .;
_WorkAreaBase = .;
_end = .; _end = .;
__end = .; __end = .;
} > sdram } > sdram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
_WorkAreaBase = .;
} > sdram
/* Debugging stuff follows */ /* Debugging stuff follows */
/* Stabs debugging sections. */ /* Stabs debugging sections. */

View File

@@ -123,11 +123,15 @@ SECTIONS
_stack_init = .; _stack_init = .;
. += _StackSize; . += _StackSize;
_clear_end = .; _clear_end = .;
_WorkAreaBase = .;
_end = .; _end = .;
__end = .; __end = .;
} > sdram } > sdram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
_WorkAreaBase = .;
} > sdram
/* Debugging stuff follows */ /* Debugging stuff follows */
/* Stabs debugging sections. */ /* Stabs debugging sections. */

View File

@@ -339,6 +339,10 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS } > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin; bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > REGION_WORK AT > REGION_WORK
.work : { .work : {
/* /*
* The work section will occupy the remaining REGION_WORK region and * The work section will occupy the remaining REGION_WORK region and

View File

@@ -204,9 +204,10 @@ SECTIONS
. = ALIGN(. != 0 ? 32 / 8 : 1); . = ALIGN(. != 0 ? 32 / 8 : 1);
} }
. = ALIGN(32 / 8); . = ALIGN(32 / 8);
. = ALIGN(32 / 8);
_end = .; PROVIDE (end = .); _end = .; PROVIDE (end = .);
. = ALIGN(0x10); .rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
}
WorkAreaBase = .; WorkAreaBase = .;
. = DATA_SEGMENT_END (.); . = DATA_SEGMENT_END (.);

View File

@@ -252,14 +252,16 @@ SECTIONS
. += _StackSize; . += _StackSize;
_fstack = .; _fstack = .;
WorkAreaBase = .;
. = ALIGN (16); . = ALIGN (16);
_stack_init = .; _stack_init = .;
_clear_end = .; _clear_end = .;
} > sdram } > sdram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
} > sdram
/DISCARD/ : /DISCARD/ :
{ {

View File

@@ -251,14 +251,15 @@ SECTIONS
. += _StackSize; . += _StackSize;
_fstack = .; _fstack = .;
WorkAreaBase = .;
. = ALIGN (16); . = ALIGN (16);
_stack_init = .; _stack_init = .;
_clear_end = .; _clear_end = .;
} > sdram } > sdram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
} > sdram
/DISCARD/ : /DISCARD/ :
{ {

View File

@@ -157,6 +157,11 @@ SECTIONS
. += _StackSize; . += _StackSize;
PROVIDE (__stack = .); PROVIDE (__stack = .);
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > RAM
PROVIDE (_WorkAreaBase = .); PROVIDE (_WorkAreaBase = .);
. = 0xa00000; . = 0xa00000;
PROVIDE (_WorkAreaEnd = .); PROVIDE (_WorkAreaEnd = .);

View File

@@ -180,9 +180,13 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (end = .); PROVIDE (end = .);
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram
/* Stabs debugging sections. */ /* Stabs debugging sections. */
.stab 0 : { *(.stab) } .stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) } .stabstr 0 : { *(.stabstr) }

View File

@@ -180,7 +180,10 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (end = .); PROVIDE (end = .);
_clear_end = .; _clear_end = .;
}
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} }
/* Stabs debugging sections. */ /* Stabs debugging sections. */

View File

@@ -179,9 +179,13 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (end = .); PROVIDE (end = .);
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram
/* Stabs debugging sections. */ /* Stabs debugging sections. */
.stab 0 : { *(.stab) } .stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) } .stabstr 0 : { *(.stabstr) }

View File

@@ -155,10 +155,11 @@ SECTIONS
_end = .; _end = .;
clear_end = .; clear_end = .;
} > ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
WorkAreaBase = .;
} >ram } >ram
.stab 0 (NOLOAD) : .stab 0 (NOLOAD) :

View File

@@ -191,7 +191,10 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
_stack_init = .; _stack_init = .;
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram

View File

@@ -155,7 +155,10 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
_stack_init = .; _stack_init = .;
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram

View File

@@ -157,7 +157,10 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
_stack_init = .; _stack_init = .;
_clear_end = .; _clear_end = .;
} >myram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >myram } >myram

View File

@@ -155,7 +155,10 @@ SECTIONS {
. = ALIGN (16); . = ALIGN (16);
_stack_init = .; _stack_init = .;
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram

View File

@@ -188,10 +188,11 @@ SECTIONS
_end = .; _end = .;
clear_end = .; clear_end = .;
} > ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
WorkAreaBase = .;
} > ram } > ram
.stab 0 (NOLOAD) : .stab 0 (NOLOAD) :

View File

@@ -188,10 +188,11 @@ SECTIONS
_end = .; _end = .;
clear_end = .; clear_end = .;
} > ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
WorkAreaBase = .;
} > ram } > ram
.stab 0 (NOLOAD) : .stab 0 (NOLOAD) :

View File

@@ -179,6 +179,10 @@ SECTIONS
. += _StackSize; . += _StackSize;
. = ALIGN (16); . = ALIGN (16);
PROVIDE(_StackInit = .); PROVIDE(_StackInit = .);
} >sram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
PROVIDE(WorkAreaBase = .); PROVIDE(WorkAreaBase = .);
} >sram } >sram

View File

@@ -179,6 +179,10 @@ SECTIONS
. += _StackSize; . += _StackSize;
. = ALIGN (16); . = ALIGN (16);
PROVIDE(_StackInit = .); PROVIDE(_StackInit = .);
} >sram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
PROVIDE(WorkAreaBase = .); PROVIDE(WorkAreaBase = .);
} >sram } >sram

View File

@@ -187,7 +187,10 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (end = .); PROVIDE (end = .);
_clear_end = .; _clear_end = .;
} > dram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} > dram } > dram
/* Stabs debugging sections. */ /* Stabs debugging sections. */

View File

@@ -192,7 +192,10 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (end = .); PROVIDE (end = .);
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram
/* Stabs debugging sections. */ /* Stabs debugging sections. */

View File

@@ -187,9 +187,13 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (end = .); PROVIDE (end = .);
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram
/* Stabs debugging sections. */ /* Stabs debugging sections. */
.stab 0 : { *(.stab) } .stab 0 : { *(.stab) }
.stabstr 0 : { *(.stabstr) } .stabstr 0 : { *(.stabstr) }

View File

@@ -180,6 +180,10 @@ SECTIONS
PROVIDE (_end = .); PROVIDE (_end = .);
_clear_end = .; _clear_end = .;
} > dram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} > dram } > dram

View File

@@ -176,6 +176,10 @@ SECTIONS
PROVIDE (_end = .); PROVIDE (_end = .);
_clear_end = .; _clear_end = .;
} > dram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} > dram } > dram

View File

@@ -198,7 +198,9 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
_stack_init = .; _stack_init = .;
_clear_end = .; _clear_end = .;
} > ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} > ram } > ram
.stab . (NOLOAD) : .stab . (NOLOAD) :

View File

@@ -257,6 +257,10 @@ SECTIONS {
} > REGION_DATA AT > REGION_DATA } > REGION_DATA AT > REGION_DATA
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin; 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 { .work : ALIGN_WITH_INPUT {
/* /*
* The work section will occupy the remaining REGION_DATA region and * The work section will occupy the remaining REGION_DATA region and

View File

@@ -196,6 +196,10 @@ SECTIONS
. = ALIGN (16); . = ALIGN (16);
PROVIDE (end = .); PROVIDE (end = .);
_clear_end = .; _clear_end = .;
} >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} >ram } >ram

View File

@@ -194,11 +194,12 @@ SECTIONS
_clear_end = .; _clear_end = .;
end = .; end = .;
_end = .; _end = .;
. = ALIGN (1024);
WorkAreaBase = .;
} >ram } >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
} >ram
/* /*
** DWARF debug sections. ** DWARF debug sections.

View File

@@ -172,9 +172,12 @@ SECTIONS
_stack_init = .; _stack_init = .;
end = .; end = .;
_end = .; _end = .;
WorkAreaBase = .;
} }
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
}
/* Debug sections. These should never be loadable, but they must have /* Debug sections. These should never be loadable, but they must have
zero addresses for the debuggers to work correctly. */ zero addresses for the debuggers to work correctly. */

View File

@@ -168,9 +168,14 @@ SECTIONS
. += _StackSize; . += _StackSize;
__stack = .; __stack = .;
_stack_init = .; _stack_init = .;
WorkAreaBase = .;
_clear_end = .; _clear_end = .;
} }
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
}
. = 0x88400000; /* reserve some memory for Work Area */ . = 0x88400000; /* reserve some memory for Work Area */
end = .; end = .;
_end = .; _end = .;

View File

@@ -169,9 +169,14 @@ SECTIONS
. += _StackSize; . += _StackSize;
__stack = .; __stack = .;
_stack_init = .; _stack_init = .;
WorkAreaBase = .;
_clear_end = .; _clear_end = .;
} }
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
}
. = 0x88400000; /* reserve some memory for Work Area */ . = 0x88400000; /* reserve some memory for Work Area */
end = .; end = .;
_end = .; _end = .;

View File

@@ -172,9 +172,12 @@ SECTIONS
_stack_init = .; _stack_init = .;
end = .; end = .;
_end = .; _end = .;
WorkAreaBase = .;
} }
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
}
/* Debug sections. These should never be loadable, but they must have /* Debug sections. These should never be loadable, but they must have
zero addresses for the debuggers to work correctly. */ zero addresses for the debuggers to work correctly. */

View File

@@ -172,9 +172,12 @@ SECTIONS
_stack_init = .; _stack_init = .;
end = .; end = .;
_end = .; _end = .;
WorkAreaBase = .;
} }
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .;
}
/* Debug sections. These should never be loadable, but they must have /* Debug sections. These should never be loadable, but they must have
zero addresses for the debuggers to work correctly. */ zero addresses for the debuggers to work correctly. */

View File

@@ -229,6 +229,9 @@ SECTIONS
_end = .; _end = .;
_bss_end__ = . ; __bss_end__ = . ; __end__ = . ; _bss_end__ = . ; __bss_end__ = . ; __end__ = . ;
PROVIDE (end = .); PROVIDE (end = .);
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
}
WorkAreaBase = .; WorkAreaBase = .;
/* Stabs debugging sections. */ /* Stabs debugging sections. */
.stab 0 : { *(.stab) } .stab 0 : { *(.stab) }

View File

@@ -268,6 +268,10 @@ SECTIONS
_stack_low = ABSOLUTE(.); _stack_low = ABSOLUTE(.);
. += StackSize; . += StackSize;
_stack_high = ABSOLUTE(.); _stack_high = ABSOLUTE(.);
} > onchip_memory_0
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
WorkAreaBase = .; WorkAreaBase = .;
} > onchip_memory_0 } > onchip_memory_0

View File

@@ -288,6 +288,10 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS } > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin; 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 { .work : ALIGN_WITH_INPUT {
/* /*
* The work section will occupy the remaining REGION_WORK region and * The work section will occupy the remaining REGION_WORK region and

View File

@@ -295,10 +295,14 @@ SECTIONS {
bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k; bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k;
bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start; 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_work_area_start = bsp_interrupt_stack_end; bsp_work_area_start = .;
WorkAreaBase = bsp_work_area_start; WorkAreaBase = bsp_work_area_start;
/* Stabs debugging sections. */ /* Stabs debugging sections. */

View File

@@ -37,7 +37,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", WORK);
REGION_ALIAS ("REGION_DATA", WORK); REGION_ALIAS ("REGION_DATA", WORK);
REGION_ALIAS ("REGION_DATA_LOAD", WORK); REGION_ALIAS ("REGION_DATA_LOAD", WORK);
REGION_ALIAS ("REGION_BSS", WORK); REGION_ALIAS ("REGION_BSS", WORK);
REGION_ALIAS ("REGION_RWEXTRA", WORK); REGION_ALIAS ("REGION_RTEMSSTACK", WORK);
REGION_ALIAS ("REGION_WORK", WORK); REGION_ALIAS ("REGION_WORK", WORK);
REGION_ALIAS ("REGION_STACK", WORK); REGION_ALIAS ("REGION_STACK", WORK);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -260,8 +260,11 @@ SECTIONS
. += kMainStackSize; . += kMainStackSize;
stack.end = .; stack.end = .;
/* RTEMS workspace: size specified by application */ .rtemsstack (NOLOAD) : {
WorkAreaBase = ALIGN(0x20); *(SORT(.rtemsstack.*))
} >RAM
WorkAreaBase = .;
/* Debugging information */ /* Debugging information */
.line 0 : { *(.line) } .line 0 : { *(.line) }

View File

@@ -81,9 +81,9 @@ LINKER_SYMBOL(bsp_section_sbss_begin)
LINKER_SYMBOL(bsp_section_sbss_end) LINKER_SYMBOL(bsp_section_sbss_end)
LINKER_SYMBOL(bsp_section_sbss_size) LINKER_SYMBOL(bsp_section_sbss_size)
LINKER_SYMBOL(bsp_section_rwextra_begin) LINKER_SYMBOL(bsp_section_rtemsstack_begin)
LINKER_SYMBOL(bsp_section_rwextra_end) LINKER_SYMBOL(bsp_section_rtemsstack_end)
LINKER_SYMBOL(bsp_section_rwextra_size) LINKER_SYMBOL(bsp_section_rtemsstack_size)
LINKER_SYMBOL(bsp_section_work_begin) LINKER_SYMBOL(bsp_section_work_begin)
LINKER_SYMBOL(bsp_section_work_end) LINKER_SYMBOL(bsp_section_work_end)

View File

@@ -17,7 +17,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM_EXT); 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_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -17,7 +17,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM_EXT); 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_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -23,7 +23,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM_1); REGION_ALIAS ("REGION_WORK", RAM_1);
REGION_ALIAS ("REGION_STACK", RAM_1); REGION_ALIAS ("REGION_STACK", RAM_1);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -19,7 +19,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -21,7 +21,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM); 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_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -18,7 +18,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -18,7 +18,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM); 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_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -26,7 +26,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM_EXT); 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_WORK", RAM_EXT);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -301,6 +301,10 @@ SECTIONS
clear_end = .; clear_end = .;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} >ram
WorkAreaBase = .; WorkAreaBase = .;
/* Sections for compressed .text and .data */ /* Sections for compressed .text and .data */

View File

@@ -26,7 +26,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM); REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -21,7 +21,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", ROM); REGION_ALIAS ("REGION_DATA_LOAD", ROM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -24,7 +24,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_DATA", HIGH); REGION_ALIAS ("REGION_DATA", HIGH);
REGION_ALIAS ("REGION_DATA_LOAD", LOW); REGION_ALIAS ("REGION_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_BSS", HIGH); REGION_ALIAS ("REGION_BSS", HIGH);
REGION_ALIAS ("REGION_RWEXTRA", HIGH); REGION_ALIAS ("REGION_RTEMSSTACK", HIGH);
REGION_ALIAS ("REGION_WORK", HIGH); REGION_ALIAS ("REGION_WORK", HIGH);
REGION_ALIAS ("REGION_STACK", HIGH); REGION_ALIAS ("REGION_STACK", HIGH);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -23,7 +23,7 @@ REGION_ALIAS ("REGION_FAST_TEXT_LOAD", RAM);
REGION_ALIAS ("REGION_FAST_DATA", RAM); REGION_ALIAS ("REGION_FAST_DATA", RAM);
REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM); REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -24,7 +24,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_DATA", HIGH); REGION_ALIAS ("REGION_DATA", HIGH);
REGION_ALIAS ("REGION_DATA_LOAD", LOW); REGION_ALIAS ("REGION_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_BSS", HIGH); REGION_ALIAS ("REGION_BSS", HIGH);
REGION_ALIAS ("REGION_RWEXTRA", HIGH); REGION_ALIAS ("REGION_RTEMSSTACK", HIGH);
REGION_ALIAS ("REGION_WORK", HIGH); REGION_ALIAS ("REGION_WORK", HIGH);
REGION_ALIAS ("REGION_STACK", HIGH); REGION_ALIAS ("REGION_STACK", HIGH);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -25,7 +25,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_DATA", HIGH); REGION_ALIAS ("REGION_DATA", HIGH);
REGION_ALIAS ("REGION_DATA_LOAD", LOW); REGION_ALIAS ("REGION_DATA_LOAD", LOW);
REGION_ALIAS ("REGION_BSS", HIGH); REGION_ALIAS ("REGION_BSS", HIGH);
REGION_ALIAS ("REGION_RWEXTRA", HIGH); REGION_ALIAS ("REGION_RTEMSSTACK", HIGH);
REGION_ALIAS ("REGION_WORK", HIGH); REGION_ALIAS ("REGION_WORK", HIGH);
REGION_ALIAS ("REGION_STACK", HIGH); REGION_ALIAS ("REGION_STACK", HIGH);
REGION_ALIAS ("REGION_NOCACHE", NOCACHE); REGION_ALIAS ("REGION_NOCACHE", NOCACHE);

View File

@@ -131,7 +131,7 @@ static entry DATA config[] = {
ENTRY_RW(bsp_section_data_begin, bsp_section_data_size), ENTRY_RW(bsp_section_data_begin, bsp_section_data_size),
ENTRY_RW(bsp_section_sbss_begin, bsp_section_sbss_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_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_RW(bsp_section_stack_begin, bsp_section_stack_size),
ENTRY_IO(bsp_section_nocache_begin, bsp_section_nocache_size), ENTRY_IO(bsp_section_nocache_begin, bsp_section_nocache_size),
ENTRY_IO(bsp_section_nocachenoload_begin, bsp_section_nocachenoload_size), ENTRY_IO(bsp_section_nocachenoload_begin, bsp_section_nocachenoload_size),

View File

@@ -319,12 +319,13 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS } > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin; bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
.rwextra : ALIGN_WITH_INPUT { .rtemsstack (NOLOAD) : ALIGN_WITH_INPUT {
bsp_section_rwextra_begin = .; bsp_section_rtemsstack_begin = .;
*(.bsp_rwextra) *(.bsp_rwextra)
bsp_section_rwextra_end = .; *(SORT(.rtemsstack.*))
} > REGION_RWEXTRA AT > REGION_RWEXTRA bsp_section_rtemsstack_end = .;
bsp_section_rwextra_size = bsp_section_rwextra_end - bsp_section_rwextra_begin; } > REGION_RTEMSSTACK AT > REGION_RTEMSSTACK
bsp_section_rtemsstack_size = bsp_section_rtemsstack_end - bsp_section_rtemsstack_begin;
.work : ALIGN_WITH_INPUT { .work : ALIGN_WITH_INPUT {
/* /*

View File

@@ -98,6 +98,10 @@ SECTIONS
_TLS_Size = _TLS_BSS_end - _TLS_Data_begin; _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
_TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss)); _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 /* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */ the same address within the page on the next page up. */
. = ALIGN(0x10000) + (. & (0x10000 - 1)); . = ALIGN(0x10000) + (. & (0x10000 - 1));

View File

@@ -248,6 +248,10 @@ SECTIONS
intrStack = .; intrStack = .;
PROVIDE(intrStackPtr = intrStack); PROVIDE(intrStackPtr = intrStack);
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
}
/* /*
* Work Area * Work Area
* *

View File

@@ -17,7 +17,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM); REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", RAM); REGION_ALIAS ("REGION_NOCACHE", RAM);

View File

@@ -25,7 +25,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM); REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -19,7 +19,7 @@ REGION_ALIAS ("REGION_FAST_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_DATA", RAM); REGION_ALIAS ("REGION_DATA", RAM);
REGION_ALIAS ("REGION_DATA_LOAD", RAM); REGION_ALIAS ("REGION_DATA_LOAD", RAM);
REGION_ALIAS ("REGION_BSS", RAM); REGION_ALIAS ("REGION_BSS", RAM);
REGION_ALIAS ("REGION_RWEXTRA", RAM); REGION_ALIAS ("REGION_RTEMSSTACK", RAM);
REGION_ALIAS ("REGION_WORK", RAM); REGION_ALIAS ("REGION_WORK", RAM);
REGION_ALIAS ("REGION_STACK", RAM); REGION_ALIAS ("REGION_STACK", RAM);
REGION_ALIAS ("REGION_NOCACHE", EMPTY); REGION_ALIAS ("REGION_NOCACHE", EMPTY);

View File

@@ -260,8 +260,11 @@ SECTIONS
. += StackSize; . += StackSize;
__stack_base = .; /* Initial stack builds downwards */ __stack_base = .; /* Initial stack builds downwards */
/* RTEMS workspace: size specified by application */ .rtemsstack (NOLOAD) : {
WorkAreaBase = ALIGN(0x10); /* Align to a cache-line boundary */ *(SORT(.rtemsstack.*))
} >RAM
WorkAreaBase = .;
/* The heap comes after the work space */ /* The heap comes after the work space */

View File

@@ -260,8 +260,11 @@ SECTIONS
. += StackSize; . += StackSize;
__stack_base = .; /* Initial stack builds downwards */ __stack_base = .; /* Initial stack builds downwards */
/* RTEMS workspace: size specified by application */ .rtemsstack (NOLOAD) : {
WorkAreaBase = ALIGN(0x20); /* Align to a cache-line boundary */ *(SORT(.rtemsstack.*))
} >RAM
WorkAreaBase = .;
/* The heap comes after the work space */ /* The heap comes after the work space */

View File

@@ -347,6 +347,10 @@ SECTIONS {
} > REGION_BSS AT > REGION_BSS } > REGION_BSS AT > REGION_BSS
bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin; bsp_section_bss_size = bsp_section_bss_end - bsp_section_bss_begin;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > REGION_WORK AT > REGION_WORK
.work : { .work : {
/* /*
* The work section will occupy the remaining REGION_WORK region and * The work section will occupy the remaining REGION_WORK region and

View File

@@ -188,6 +188,10 @@ SECTIONS
_WorkAreaBase = . ; _WorkAreaBase = . ;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > onchip_ram
_CPU_Interrupt_stack_low = 0x0f000000 ; _CPU_Interrupt_stack_low = 0x0f000000 ;
_CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ; _CPU_Interrupt_stack_high = _CPU_Interrupt_stack_low + 4096 ;

View File

@@ -199,6 +199,10 @@ SECTIONS
_WorkAreaBase = . ; _WorkAreaBase = . ;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > onchip_ram
_CPU_Interrupt_stack_low = 0xFFFFF000; _CPU_Interrupt_stack_low = 0xFFFFF000;
_CPU_Interrupt_stack_high = 0xFFFFFFFF; _CPU_Interrupt_stack_high = 0xFFFFFFFF;

View File

@@ -200,7 +200,10 @@ SECTIONS
PROVIDE (end = .); PROVIDE (end = .);
_WorkAreaBase = . ; _WorkAreaBase = . ;
. = 0x00480000 ;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > onchip_ram
_CPU_Interrupt_stack_low = 0xFFFFF000; _CPU_Interrupt_stack_low = 0xFFFFF000;
_CPU_Interrupt_stack_high = 0xFFFFFFFF; _CPU_Interrupt_stack_high = 0xFFFFFFFF;

View File

@@ -206,6 +206,10 @@ SECTIONS
_WorkAreaBase = . ; _WorkAreaBase = . ;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > onchip_ram
_CPU_Interrupt_stack_low = 0xFFFFF000; _CPU_Interrupt_stack_low = 0xFFFFF000;
_CPU_Interrupt_stack_high = 0xFFFFFFFF; _CPU_Interrupt_stack_high = 0xFFFFFFFF;

View File

@@ -144,11 +144,14 @@ SECTIONS
__bss_end = .; __bss_end = .;
} > ram } > ram
.stack . : { .stack : {
. = . + 4096; . = . + 4096;
} } > ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > ram
. = ALIGN(16);
_WorkAreaBase = . ; _WorkAreaBase = . ;
. = ALIGN(16); . = ALIGN(16);
@@ -188,6 +191,5 @@ SECTIONS
.debug_funcnames 0 : { *(.debug_funcnames) } .debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) } .debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) } .debug_varnames 0 : { *(.debug_varnames) }
.stack : { _stack = .; *(.stack) }
/* These must appear regardless of . */ /* These must appear regardless of . */
} }

View File

@@ -187,7 +187,10 @@ SECTIONS
__bss_end = .; __bss_end = .;
} > ram } > ram
. = ALIGN(16); .rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > ram
_WorkAreaBase = . ; _WorkAreaBase = . ;
. = ALIGN(16); . = ALIGN(16);

View File

@@ -190,7 +190,10 @@ SECTIONS
*(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*) *(.rela.sbss2 .rela.sbss2.* .rela.gnu.linkonce.sb2.*)
*(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
} >ram } >ram
. = ALIGN(16);
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > ram
_WorkAreaBase = . ; _WorkAreaBase = . ;

View File

@@ -209,6 +209,10 @@ SECTIONS
} > ram } > ram
_stack = .; _stack = .;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > ram
_WorkAreaBase = . ; _WorkAreaBase = . ;
_CPU_Interrupt_stack_low = 0x00080000 ; _CPU_Interrupt_stack_low = 0x00080000 ;

View File

@@ -154,6 +154,9 @@ SECTIONS
*(.rela.rtemsroset*) *(.rela.rtemsroset*)
*(.rela.rtemsrwset*) *(.rela.rtemsrwset*)
} >ram } >ram
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
} > ram
.data : .data :
{ {
data_start = .; data_start = .;

View File

@@ -206,9 +206,14 @@ SECTIONS
end = .; end = .;
_end = .; _end = .;
__end = .; __end = .;
} > ram
. = ALIGN (16); /* arbitrary alignment */ .rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
PROVIDE (WorkAreaBase = .); PROVIDE (WorkAreaBase = .);
} > ram
.heap : {
. += HeapSize; . += HeapSize;
PROVIDE (HeapBase = .); PROVIDE (HeapBase = .);
. += HeapSize; . += HeapSize;

View File

@@ -194,6 +194,9 @@ SECTIONS
} }
. += _StackSize; . += _StackSize;
_stack = .; _stack = .;
.rtemsstack (NOLOAD) : {
*(SORT(.rtemsstack.*))
}
_WorkAreaBase = .; _WorkAreaBase = .;
_end = . ; _end = . ;
PROVIDE (end = .); PROVIDE (end = .);