Merged in f5soh/librepilot/update_credits (pull request #529)
[librepilot.git] / flight / pios / stm32f0x / link_STM3205x_GPSP_sections.ld
blob5e217c838d382effd1180adfdbb69c296385b5dc
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 */
14 SECTIONS
16     .isr_vector :
17     {
18         . = ALIGN(4);
19         pios_isr_vector_table_base = .;
20         KEEP(*(.isr_vector))        /* Interrupt vectors */
21     } > FLASH
22     .text :
23     {
24         . = ALIGN(4);
25         *(.text .text.* .gnu.linkonce.t.*)
26         *(.glue_7t) *(.glue_7)
27         *(.rodata .rodata* .gnu.linkonce.r.*)
28     } > FLASH
30     /* module sections */
31     .initcallmodule.init :
32     {
33         . = ALIGN(4);
34         __module_initcall_start = .;
35         KEEP(*(.initcallmodule.init))
36         . = ALIGN(4);
37         __module_initcall_end   = .;
38     } >FLASH
40     /* settings init sections */
41     .initcallsettings.init :
42     {
43         . = ALIGN(4);
44         __settings_initcall_start = .;
45         KEEP(*(.initcallsettings.init))
46         . = ALIGN(4);
47         __settings_initcall_end   = .;
48     } >FLASH
49     
50     .ARM.extab :
51     {
52         *(.ARM.extab* .gnu.linkonce.armextab.*)
53     } > FLASH
55     .ARM.exidx :
56     {
57         *(.ARM.exidx* .gnu.linkonce.armexidx.*)
58     } > FLASH
60     . = ALIGN(4);
61     _etext = .;
62     _sidata = .;
63     .ram_vector_table(NOLOAD): {*(.ram_vector_table)} >VTRAM
65     /*
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.
71      */
72     .irq_stack :
73     {
74          . = ALIGN(4);
75          _irq_stack_end = . ;
76          . = . + _irq_stack_size ;
77          . = ALIGN(4);
78          _irq_stack_top = . - 4 ;
79          . = ALIGN(4);
80     } > SRAM
82     .data : AT (_etext)
83     {
84         _sdata = .;
85         *(.data .data.*)
86         . = ALIGN(4);
87         _edata = . ;
88     } > SRAM
92     /* .bss section which is used for uninitialized data */
93     .bss (NOLOAD) :
94     {
95         _sbss = . ;
96         *(.bss .bss.*)
97         *(COMMON)
98     } > SRAM
100     .heap (NOLOAD) :
101     {
102         . = ALIGN(4);
103         _sheap = . ;
104         _sheap_pre_rtos = . ;
105         *(.heap)
106         . = ALIGN(4);
107         _eheap = . ;
108         _eheap_pre_rtos = . ;
109         _init_stack_end = . ;
110         _sheap_post_rtos = . ;
111         . = . + _init_stack_size ;
112         . = ALIGN(4);
113         _eheap_post_rtos = . ;
114         _init_stack_top = . - 4 ;
115     } > SRAM
117     _eram = ORIGIN(SRAM) + LENGTH(SRAM) ;
118     _ebss = _eram ;
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).
123      */
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.  */
138     /* DWARF 1 */
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) }
147     /* DWARF 2 */
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) }