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 = .;
40 /* settings init sections */
41 .initcallsettings.init :
44 __settings_initcall_start = .;
45 KEEP(*(.initcallsettings.init))
47 __settings_initcall_end = .;
52 *(.ARM.extab* .gnu.linkonce.armextab.*)
57 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
63 .ram_vector_table(NOLOAD): {*(.ram_vector_table)} >VTRAM
66 * This stack is used both as the initial sp during early init as well as ultimately
67 * being used as the STM32's MSP (Main Stack Pointer) which is the same stack that
68 * is used for _all_ interrupt handlers. The end of this stack should be placed
69 * against the lowest address in RAM so that a stack overrun results in a hard fault
70 * at the first access beyond the end of the stack.
76 . = . + _irq_stack_size ;
78 _irq_stack_top = . - 4 ;
92 /* .bss section which is used for uninitialized data */
104 _sheap_pre_rtos = . ;
108 _eheap_pre_rtos = . ;
109 _init_stack_end = . ;
110 _sheap_post_rtos = . ;
111 . = . + _init_stack_size ;
113 _eheap_post_rtos = . ;
114 _init_stack_top = . - 4 ;
117 _eram = ORIGIN(SRAM) + LENGTH(SRAM) ;
119 _estack = _init_stack_top;
120 /* keep the heap section at the end of the SRAM
121 * this will allow to claim the remaining bytes not used
122 * at run time! (done by the reset vector).
125 PROVIDE ( _end = _ebss ) ;
127 /* Stabs debugging sections. */
128 .stab 0 : { *(.stab) }
129 .stabstr 0 : { *(.stabstr) }
130 .stab.excl 0 : { *(.stab.excl) }
131 .stab.exclstr 0 : { *(.stab.exclstr) }
132 .stab.index 0 : { *(.stab.index) }
133 .stab.indexstr 0 : { *(.stab.indexstr) }
134 .comment 0 : { *(.comment) }
135 /* DWARF debug sections.
136 Symbols in the DWARF debugging sections are relative to the beginning
137 of the section so we begin them at 0. */
139 .debug 0 : { *(.debug) }
140 .line 0 : { *(.line) }
141 /* GNU DWARF 1 extensions */
142 .debug_srcinfo 0 : { *(.debug_srcinfo) }
143 .debug_sfnames 0 : { *(.debug_sfnames) }
144 /* DWARF 1.1 and DWARF 2 */
145 .debug_aranges 0 : { *(.debug_aranges) }
146 .debug_pubnames 0 : { *(.debug_pubnames) }
148 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
149 .debug_abbrev 0 : { *(.debug_abbrev) }
150 .debug_line 0 : { *(.debug_line) }
151 .debug_frame 0 : { *(.debug_frame) }
152 .debug_str 0 : { *(.debug_str) }
153 .debug_loc 0 : { *(.debug_loc) }
154 .debug_macinfo 0 : { *(.debug_macinfo) }
155 /* SGI/MIPS DWARF 2 extensions */
156 .debug_weaknames 0 : { *(.debug_weaknames) }
157 .debug_funcnames 0 : { *(.debug_funcnames) }
158 .debug_typenames 0 : { *(.debug_typenames) }
159 .debug_varnames 0 : { *(.debug_varnames) }