1 /* This is the size of the stack for all FreeRTOS IRQs */
2 _irq_stack_size = 0x1A0;
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 */
18 PROVIDE (pios_isr_vector_table_base = .);
19 KEEP(*(.isr_vector .isr_vector.*))
20 *(.text .text.* .gnu.linkonce.t.*)
21 *(.glue_7t) *(.glue_7)
22 *(.rodata .rodata* .gnu.linkonce.r.*)
26 .initcallmodule.init :
29 __module_initcall_start = .;
30 KEEP(*(.initcallmodule.init))
32 __module_initcall_end = .;
35 /* settings init sections */
36 .initcallsettings.init :
39 __settings_initcall_start = .;
40 KEEP(*(.initcallsettings.init))
42 __settings_initcall_end = .;
47 *(.ARM.extab* .gnu.linkonce.armextab.*)
52 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
60 * This stack is used both as the initial sp during early init as well as ultimately
61 * being used as the STM32's MSP (Main Stack Pointer) which is the same stack that
62 * is used for _all_ interrupt handlers. The end of this stack should be placed
63 * against the lowest address in RAM so that a stack overrun results in a hard fault
64 * at the first access beyond the end of the stack.
70 . = . + _irq_stack_size ;
72 _irq_stack_top = . - 4 ;
86 /* .bss section which is used for uninitialized data */
102 _eheap_pre_rtos = . ;
103 _init_stack_end = . ;
104 _sheap_post_rtos = . ;
105 . = . + _init_stack_size ;
107 _eheap_post_rtos = . ;
108 _init_stack_top = . - 4 ;
111 _eram = ORIGIN(SRAM) + LENGTH(SRAM) ;
114 /* keep the heap section at the end of the SRAM
115 * this will allow to claim the remaining bytes not used
116 * at run time! (done by the reset vector).
119 PROVIDE ( _end = _ebss ) ;
121 /* Stabs debugging sections. */
122 .stab 0 : { *(.stab) }
123 .stabstr 0 : { *(.stabstr) }
124 .stab.excl 0 : { *(.stab.excl) }
125 .stab.exclstr 0 : { *(.stab.exclstr) }
126 .stab.index 0 : { *(.stab.index) }
127 .stab.indexstr 0 : { *(.stab.indexstr) }
128 .comment 0 : { *(.comment) }
129 /* DWARF debug sections.
130 Symbols in the DWARF debugging sections are relative to the beginning
131 of the section so we begin them at 0. */
133 .debug 0 : { *(.debug) }
134 .line 0 : { *(.line) }
135 /* GNU DWARF 1 extensions */
136 .debug_srcinfo 0 : { *(.debug_srcinfo) }
137 .debug_sfnames 0 : { *(.debug_sfnames) }
138 /* DWARF 1.1 and DWARF 2 */
139 .debug_aranges 0 : { *(.debug_aranges) }
140 .debug_pubnames 0 : { *(.debug_pubnames) }
142 .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
143 .debug_abbrev 0 : { *(.debug_abbrev) }
144 .debug_line 0 : { *(.debug_line) }
145 .debug_frame 0 : { *(.debug_frame) }
146 .debug_str 0 : { *(.debug_str) }
147 .debug_loc 0 : { *(.debug_loc) }
148 .debug_macinfo 0 : { *(.debug_macinfo) }
149 /* SGI/MIPS DWARF 2 extensions */
150 .debug_weaknames 0 : { *(.debug_weaknames) }
151 .debug_funcnames 0 : { *(.debug_funcnames) }
152 .debug_typenames 0 : { *(.debug_typenames) }
153 .debug_varnames 0 : { *(.debug_varnames) }