]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/HCS12_GCC_banked/ldscript-rtos.x
Update version number in readiness for V10.3.0 release. Sync SVN with reviewed releas...
[freertos] / FreeRTOS / Demo / HCS12_GCC_banked / ldscript-rtos.x
1 /* Linker script for MC689S12DP256 Flash \r
2    rom banks.\r
3    \r
4    Author Jefferson L Smith; Robotronics, Inc.  2006\r
5  */\r
6 OUTPUT_FORMAT("elf32-m68hc12", "elf32-m68hc12",\r
7               "elf32-m68hc12")\r
8 OUTPUT_ARCH(m68hc12)\r
9 ENTRY(_start)\r
10 \r
11 /* Get memory banks definition from some user configuration file.\r
12    This file must be located in some linker directory (search path\r
13    with -L<dir>). See fixed memory banks emulation script.  */\r
14 INCLUDE memory.x;\r
15 \r
16 SECTIONS\r
17 {\r
18   /* Concatenate .page0 sections.  Put them in the page0 memory bank\r
19      unless we are creating a relocatable file.  */\r
20   .page0 :\r
21   {\r
22     *(.page0)\r
23   }  > page0\r
24   \r
25   /* PPAGE memory banks */\r
26 \r
27   .bank0 :\r
28   {\r
29     *(.bank0)\r
30     . = ALIGN(2);\r
31   } > bank0  =0xff\r
32   .bank1 :\r
33   {\r
34     *(.bank1)\r
35     . = ALIGN(2);\r
36   } > bank1  =0xff\r
37   .bank2 :\r
38   {\r
39     *(.bank2)\r
40     . = ALIGN(2);\r
41   } > bank2  =0xff\r
42   .bank3 :\r
43   {\r
44     *(.bank3)\r
45     . = ALIGN(2);\r
46   } > bank3  =0xff\r
47   .bank4 :\r
48   {\r
49     *(.bank4)\r
50     . = ALIGN(2);\r
51   } > bank4  =0xff\r
52   .bank5 :\r
53   {\r
54     *(.bank5)\r
55     . = ALIGN(2);\r
56   } > bank5  =0xff\r
57   .bank6 :\r
58   {\r
59     *(.bank6)\r
60     . = ALIGN(2);\r
61   } > bank6  =0xff\r
62   .bank7 :\r
63   {\r
64     *(.bank7)\r
65     . = ALIGN(2);\r
66   } > bank7  =0xff\r
67   .bank8 :\r
68   {\r
69     *(.bank8)\r
70     . = ALIGN(2);\r
71   } > bank8  =0xff\r
72   .bank9 :\r
73   {\r
74     *(.bank9)\r
75     . = ALIGN(2);\r
76   } > bank9  =0xff\r
77   .bank10 :\r
78   {\r
79     *(.bank10)\r
80     . = ALIGN(2);\r
81   } > bank10  =0xff\r
82   .bank11 :\r
83   {\r
84     *(.bank11)\r
85     . = ALIGN(2);\r
86   } > bank11  =0xff\r
87   .bank12 :\r
88   {\r
89     *(.bank12)\r
90     . = ALIGN(2);\r
91   } > bank12  =0xff\r
92   .bank13 :\r
93   {\r
94     *(.bank13)\r
95     . = ALIGN(2);\r
96   } > bank13  =0xff\r
97   \r
98   /* Start of text section.  */\r
99   .text : \r
100   {\r
101     /* Put startup code at beginning so that _start keeps same address.  */\r
102     /* Startup code.  */\r
103     KEEP (*(.install0)) /* Section should setup the stack pointer.  */\r
104     KEEP (*(.install1)) /* Place holder for applications.  */\r
105     KEEP (*(.install2)) /* Optional installation of data sections in RAM.  */\r
106     KEEP (*(.install3)) /* Place holder for applications.  */\r
107     KEEP (*(.install4)) /* Section that calls the main.  */\r
108     *(.init)\r
109     *(.text)\r
110     *(.text.*)\r
111     *(.text_c)\r
112     /* .gnu.warning sections are handled specially by elf32.em.  */\r
113     *(.gnu.warning)\r
114     *(.gnu.linkonce.t.*)\r
115     *(.tramp)\r
116     *(.tramp.*)\r
117     /* Finish code.  */\r
118     KEEP (*(.fini0))    /* Beginning of finish code (_exit symbol).  */\r
119     KEEP (*(.fini1))    /* Place holder for applications.  */\r
120     KEEP (*(.fini2))    /* C++ destructors.  */\r
121     KEEP (*(.fini3))    /* Place holder for applications.  */\r
122     KEEP (*(.fini4))    /* Runtime exit.  */\r
123     _etext = .;\r
124     PROVIDE (etext = .);\r
125     . = ALIGN(2);\r
126   }  > text AT>bank14  =0xff\r
127   \r
128   .text_h : \r
129   {\r
130     *(.text_h)           /* Bootloader; high Flash area unbanked */\r
131     . = ALIGN(2);\r
132   }  > text_h AT>bank15  =0xff\r
133   .rodata : \r
134   {\r
135     *(.rodata)\r
136     *(.rodata.*)\r
137     *(.gnu.linkonce.r*)\r
138     . = ALIGN(2);\r
139   }  > text_h AT>bank15  =0xff\r
140   .eh_frame : \r
141   {\r
142     KEEP (*(.eh_frame))\r
143     . = ALIGN(2);\r
144   }  > text_h AT>bank15  =0xff\r
145   \r
146   /* Constructor and destructor tables are in ROM.  */\r
147   .ctors : \r
148   {\r
149      PROVIDE (__CTOR_LIST__ = .);\r
150     KEEP (*(.ctors))\r
151      PROVIDE(__CTOR_END__ = .);\r
152      . = ALIGN(2);\r
153   }  > text_h AT>bank15  =0xff\r
154   .dtors : \r
155   {\r
156      PROVIDE(__DTOR_LIST__ = .);\r
157     KEEP (*(.dtors))\r
158      PROVIDE(__DTOR_END__ = .);\r
159      . = ALIGN(2);\r
160   }  > text_h AT>bank15  =0xff\r
161   \r
162   /* Start of the data section image in ROM.  */\r
163   __data_image = .;\r
164   PROVIDE (__data_image = .);\r
165   \r
166   /* All read-only sections that normally go in PROM must be above.\r
167      We construct the DATA image section in PROM at end of all these\r
168      read-only sections.  The data image must be copied at init time.\r
169      Refer to GNU ld, Section 3.6.8.2 Output Section LMA.  */\r
170   .data :\r
171   {\r
172     __data_section_start = .;\r
173     PROVIDE (__data_section_start = .);\r
174     *(.sdata)\r
175     *(.data)\r
176     *(.data.*)\r
177     *(.data1)\r
178     *(.gnu.linkonce.d.*)\r
179     CONSTRUCTORS\r
180     _edata  =  .;\r
181     PROVIDE (edata = .);\r
182     . = ALIGN(2);\r
183   }  > data AT>bank15  =0xff\r
184   __data_section_size = SIZEOF(.data);\r
185   __data_image_end = __data_image + __data_section_size;\r
186   PROVIDE (__data_section_size = SIZEOF(.data));\r
187   /* .install  :\r
188   {\r
189     . = _data_image_end;\r
190   }  > text */\r
191   /* Relocation for some bss and data sections.  */\r
192   .softregs   :\r
193   {\r
194     __softregs_section_start = .;\r
195     *(.softregs)\r
196     __softregs_section_end = .;\r
197   }  > data\r
198   __softregs_section_size = SIZEOF(.softregs); \r
199   .bss   :\r
200   {\r
201     __bss_start = .;\r
202     *(.sbss)\r
203     *(.scommon)\r
204     *(.dynbss)\r
205     *(.bss)\r
206     *(.bss.*)\r
207     *(.gnu.linkonce.b.*)\r
208     *(COMMON)\r
209     PROVIDE (_end = .);\r
210   }  > data\r
211   __bss_size = SIZEOF(.bss);\r
212   PROVIDE (__bss_size = SIZEOF(.bss));\r
213   .eeprom   :\r
214   {\r
215     *(.eeprom)\r
216     *(.eeprom.*)\r
217     . = ALIGN(2);\r
218   }  > eeprom  =0xff\r
219 \r
220   /* If the 'vectors_addr' symbol is defined, it indicates the start address\r
221      of interrupt vectors.  This depends on the 9S12 operating mode:\r
222                 Addr\r
223      Hardware location  LMA 0x10ff80, mirror 0xff80\r
224      Called by dbug12   LMA 0x10ef80, mirror 0xef80\r
225      Ram called by dbug12       0x3e00\r
226      The default vectors address is (LMA) 0x10ff80.  This can be overriden\r
227      with the '-defsym vectors_addr=0x...' ld option.\r
228   */\r
229   PROVIDE (_vectors_addr = DEFINED (vectors_addr) ? vectors_addr : 0x10ff80);\r
230   .vectors DEFINED (vectors_addr) ? vectors_addr : 0x10ff80 :\r
231   {\r
232     KEEP (*(.vectors))\r
233   }\r
234   /* Stabs debugging sections.  */\r
235   .stab          0 : { *(.stab) }\r
236   .stabstr       0 : { *(.stabstr) }\r
237   .stab.excl     0 : { *(.stab.excl) }\r
238   .stab.exclstr  0 : { *(.stab.exclstr) }\r
239   .stab.index    0 : { *(.stab.index) }\r
240   .stab.indexstr 0 : { *(.stab.indexstr) }\r
241   .comment       0 : { *(.comment) }\r
242   /* DWARF debug sections.\r
243      Symbols in the DWARF debugging sections are relative to the beginning\r
244      of the section so we begin them at 0.\r
245      Treatment of DWARF debug section must be at end of the linker\r
246      script to avoid problems when there are undefined symbols. It's necessary\r
247      to avoid that the DWARF section is relocated before such undefined\r
248      symbols are found.  */\r
249   /* DWARF 1 */\r
250   .debug         0 : { *(.debug) }\r
251   .line          0 : { *(.line) }\r
252   /* GNU DWARF 1 extensions */\r
253   .debug_srcinfo 0 : { *(.debug_srcinfo) }\r
254   .debug_sfnames 0 : { *(.debug_sfnames) }\r
255   /* DWARF 1.1 and DWARF 2 */\r
256   .debug_aranges  0 : { *(.debug_aranges) }\r
257   .debug_pubnames 0 : { *(.debug_pubnames) }\r
258   /* DWARF 2 */\r
259   .debug_info     0 : { *(.debug_info) *(.gnu.linkonce.wi.*) }\r
260   .debug_abbrev   0 : { *(.debug_abbrev) }\r
261   .debug_line     0 : { *(.debug_line) }\r
262   .debug_frame    0 : { *(.debug_frame) }\r
263   .debug_str      0 : { *(.debug_str) }\r
264   .debug_loc      0 : { *(.debug_loc) }\r
265   .debug_macinfo  0 : { *(.debug_macinfo) }\r
266 }\r