]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - keyboard/teensy_lc_onekey/ld/MKL26Z64.ld
Merge remote-tracking branch 'upstream/master' into chibios
[max/tmk_keyboard.git] / keyboard / teensy_lc_onekey / ld / MKL26Z64.ld
1 /*\r
2     ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio.\r
3 \r
4     This file is part of ChibiOS.\r
5 \r
6     ChibiOS is free software; you can redistribute it and/or modify\r
7     it under the terms of the GNU General Public License as published by\r
8     the Free Software Foundation; either version 3 of the License, or\r
9     (at your option) any later version.\r
10 \r
11     ChibiOS is distributed in the hope that it will be useful,\r
12     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14     GNU General Public License for more details.\r
15 \r
16     You should have received a copy of the GNU General Public License\r
17     along with this program.  If not, see <http://www.gnu.org/licenses/>.\r
18 */\r
19 \r
20 /*\r
21  * KL25Z64 memory setup.\r
22  */\r
23 \r
24 ENTRY(Reset_Handler)\r
25 \r
26 MEMORY\r
27 {\r
28   flash0   :  org = 0x00000000,  len = 0xc0\r
29   flashcfg :  org = 0x00000400,  len = 0x10\r
30   flash    :  org = 0x00000410,  len = 62k - 0x410\r
31   eeprom_emu : org = 0x0000F800, len = 2k\r
32   ram      :  org = 0x1FFFF800,  len = 8k\r
33 }\r
34 \r
35 __ram_start__           = ORIGIN(ram);\r
36 __ram_size__            = LENGTH(ram);\r
37 __ram_end__             = __ram_start__ + __ram_size__;\r
38 \r
39 __eeprom_workarea_start__ = ORIGIN(eeprom_emu);\r
40 __eeprom_workarea_size__  = LENGTH(eeprom_emu);\r
41 __eeprom_workarea_end__   = __eeprom_workarea_start__ + __eeprom_workarea_size__;\r
42 \r
43 SECTIONS\r
44 {\r
45   . = 0;\r
46 \r
47   .isr : ALIGN(4) SUBALIGN(4)\r
48   {\r
49     KEEP(*(.vectors))\r
50   } > flash0\r
51 \r
52   .cfmprotect : ALIGN(4) SUBALIGN(4)\r
53   {\r
54     KEEP(*(.cfmconfig))\r
55   } > flashcfg\r
56 \r
57   _text = .;\r
58 \r
59   constructors : ALIGN(4) SUBALIGN(4)\r
60   {\r
61     PROVIDE(__init_array_start = .);\r
62     KEEP(*(SORT(.init_array.*)))\r
63     KEEP(*(.init_array))\r
64     PROVIDE(__init_array_end = .);\r
65   } > flash\r
66 \r
67   destructors : ALIGN(4) SUBALIGN(4)\r
68   {\r
69     PROVIDE(__fini_array_start = .);\r
70     KEEP(*(.fini_array))\r
71     KEEP(*(SORT(.fini_array.*)))\r
72     PROVIDE(__fini_array_end = .);\r
73   } > flash\r
74 \r
75   .text : ALIGN(4) SUBALIGN(4)\r
76   {\r
77     *(.text)\r
78     *(.text.*)\r
79     *(.rodata)\r
80     *(.rodata.*)\r
81     *(.glue_7t)\r
82     *(.glue_7)\r
83     *(.gcc*)\r
84   } > flash\r
85 \r
86   .ARM.extab :\r
87   {\r
88     *(.ARM.extab* .gnu.linkonce.armextab.*)\r
89   } > flash\r
90 \r
91   .ARM.exidx : {\r
92     PROVIDE(__exidx_start = .);\r
93     *(.ARM.exidx* .gnu.linkonce.armexidx.*)\r
94     PROVIDE(__exidx_end = .);\r
95   } > flash\r
96 \r
97   .eh_frame_hdr :\r
98   {\r
99     *(.eh_frame_hdr)\r
100   } > flash\r
101 \r
102   .eh_frame : ONLY_IF_RO\r
103   {\r
104     *(.eh_frame)\r
105   } > flash\r
106 \r
107   .textalign : ONLY_IF_RO\r
108   {\r
109     . = ALIGN(8);\r
110   } > flash\r
111 \r
112   _etext = .;\r
113   _textdata = _etext;\r
114 \r
115   .stacks :\r
116   {\r
117     . = ALIGN(8);\r
118     __main_stack_base__ = .;\r
119     . += __main_stack_size__;\r
120     . = ALIGN(8);\r
121     __main_stack_end__ = .;\r
122     __process_stack_base__ = .;\r
123     __main_thread_stack_base__ = .;\r
124     . += __process_stack_size__;\r
125     . = ALIGN(8);\r
126     __process_stack_end__ = .;\r
127     __main_thread_stack_end__ = .;\r
128   } > ram\r
129 \r
130   .data :\r
131   {\r
132     . = ALIGN(4);\r
133     PROVIDE(_data = .);\r
134     *(.data)\r
135     . = ALIGN(4);\r
136     *(.data.*)\r
137     . = ALIGN(4);\r
138     *(.ramtext)\r
139     . = ALIGN(4);\r
140     PROVIDE(_edata = .);\r
141   } > ram AT > flash\r
142 \r
143   .bss :\r
144   {\r
145     . = ALIGN(4);\r
146     PROVIDE(_bss_start = .);\r
147     *(.bss)\r
148     . = ALIGN(4);\r
149     *(.bss.*)\r
150     . = ALIGN(4);\r
151     *(COMMON)\r
152     . = ALIGN(4);\r
153     PROVIDE(_bss_end = .);\r
154   } > ram\r
155 }\r
156 \r
157 PROVIDE(end = .);\r
158 _end            = .;\r
159 \r
160 __heap_base__   = _end;\r
161 __heap_end__    = __ram_end__;\r