1 /* This is the size of the stack for all FreeRTOS IRQs */
2 _irq_stack_size = 0x150;
3 /* This is the size of the stack for early init: life span is until scheduler starts */
4 _init_stack_size = 0x100;
6 /* Stub out these functions since we don't use them anyway */
7 PROVIDE ( vPortSVCHandler = 0 ) ;
8 PROVIDE ( xPortPendSVHandler = 0 ) ;
9 PROVIDE ( xPortSysTickHandler = 0 ) ;
11 PROVIDE(pios_board_info_blob = ORIGIN(BD_INFO));
13 /* Section Definitions */
19 pios_isr_vector_table_base = .;
20 KEEP(*(.isr_vector)) /* Interrupt vectors */
25 *(.text .text.* .gnu.linkonce.t.*)
26 *(.glue_7t) *(.glue_7)
27 *(.rodata .rodata* .gnu.linkonce.r.*)
31 .initcallmodule.init :
34 __module_initcall_start = .;
35 KEEP(*(.initcallmodule.init))
37 __module_initcall_end = .;
42 *(.ARM.extab* .gnu.linkonce.armextab.*)
47 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
53 .ram_vector_table(NOLOAD): {*(.ram_vector_table)} >VTRAM
56 * This stack is used both as the initial sp during early init as well as ultimately
57 * being used as the STM32's MSP (Main Stack Pointer) which is the same stack that
58 * is used for _all_ interrupt handlers. The end of this stack should be placed
59 * against the lowest address in RAM so that a stack overrun results in a hard fault
60 * at the first access beyond the end of the stack.
66 . = . + _irq_stack_size ;
68 _irq_stack_top = . - 4 ;
82 /* .bss section which is used for uninitialized data */
100 _sheap_post_rtos = . ;
101 . = . + _init_stack_size ;
103 _eheap_post_rtos = . ;
104 _init_stack_top = . - 4 ;
107 _eram = ORIGIN(SRAM) + LENGTH(SRAM) ;
109 _estack = _init_stack_top;
110 /* keep the heap section at the end of the SRAM
111 * this will allow to claim the remaining bytes not used
112 * at run time! (done by the reset vector).
115 PROVIDE ( _end = _ebss ) ;
117 /* Stabs debugging sections. */
118 .stab 0 : { *(.stab) }
119 .stabstr 0 : { *(.stabstr) }
120 .stab.excl 0 : { *(.stab.excl) }
121 .stab.exclstr 0 : { *(.stab.exclstr) }
122 .stab.index 0 : { *(.stab.index) }
123 .stab.indexstr 0 : { *(.stab.indexstr) }
124 .comment 0 : { *(.comment) }
125 /* DWARF debug sections.
126 Symbols in the DWARF debugging sections are relative to the beginning
127 of the section so we begin them at 0. */
129 .debug 0 : { *(.debug) }
130 .line 0 : { *(.line) }
131 /* GNU DWARF 1 extensions */
132 .debug_srcinfo 0 : { *(.debug_srcinfo) }
133 .debug_sfnames 0 : { *(.debug_sfnames) }
134 /* DWARF 1.1 and DWARF 2 */
135 .debug_aranges 0 : { *(.debug_aranges) }
136 .debug_pubnames 0 : { *(.debug_pubnames) }
138 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
139 .debug_abbrev 0 : { *(.debug_abbrev) }
140 .debug_line 0 : { *(.debug_line) }
141 .debug_frame 0 : { *(.debug_frame) }
142 .debug_str 0 : { *(.debug_str) }
143 .debug_loc 0 : { *(.debug_loc) }
144 .debug_macinfo 0 : { *(.debug_macinfo) }
145 /* SGI/MIPS DWARF 2 extensions */
146 .debug_weaknames 0 : { *(.debug_weaknames) }
147 .debug_funcnames 0 : { *(.debug_funcnames) }
148 .debug_typenames 0 : { *(.debug_typenames) }
149 .debug_varnames 0 : { *(.debug_varnames) }