Add type checks for all other significant macros. Exclusions for shortcuts and stuff...
[freeems-vanilla.git] / src / regions.x
blobb6b4568c428836ab03fdfbb2226106b859f06e21
1 /*      FreeEMS - the open source engine management system
3         Copyright 2008, 2009 Fred Cooke
5         This file is part of the FreeEMS project.
7         FreeEMS software is free software: you can redistribute it and/or modify
8         it under the terms of the GNU General Public License as published by
9         the Free Software Foundation, either version 3 of the License, or
10         (at your option) any later version.
12         FreeEMS software is distributed in the hope that it will be useful,
13         but WITHOUT ANY WARRANTY; without even the implied warranty of
14         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15         GNU General Public License for more details.
17         You should have received a copy of the GNU General Public License
18         along with any FreeEMS software.  If not, see http://www.gnu.org/licenses/
20         We ask that if you make any changes to this file you email them upstream to
21         us at admin(at)diyefi(dot)org or, even better, fork the code on github.com!
23         Thank you for choosing FreeEMS to run your engine! */
26 /** @file
27  *
28  * @brief Region mapping linker script
29  *
30  * Code section to memory region mapping definition file for inclusion
31  * into the linker script. This file provides rules which map pieces of
32  * code and data from named sections into specific named memory regions.
33  * See memory.x and hc9s12xdp512elfb.x for more information.
34  *
35  * A description of what some of this means can be found at the following URLs:
36  * - http://www.gnu.org/software/m68hc11/m68hc11_binutils.html
37  * - http://m68hc11.serveftp.org/wiki/index.php/FAQ:Link
38  *
39  * @cond regionsscript
40  */
43 SECTIONS
46 /*&&&&&&&&&&&&&& RAM Regions &&&&&&&&&&&&&&*/
48 /* The main RAM region is called "data" and */
49 /* can be found in the main linker script   */
51 /* The RAM page window through which all tunable config is reached. */
52   .rpage :
53   {
54     *(.rpage)
55   } > rpage
57 /* Comms transmission buffer */
58   .txbuf :
59   {
60     *(.txbuf)
61   } > txbuf
63 /* Comms reception buffer */
64   .rxbuf :
65   {
66     *(.rxbuf)
67   } > rxbuf
70 /*&&&&&&&&&&&&&& Linear Flash Regions &&&&&&&&&&&&&&*/
72 /* Primary linear code and persistent data is called */
73 /* "text" and can be found in the main linker script */
75 /* Secondary linear code and persistent data */
76   .text1  :
77   {
78     *(.text1)
79   }  > text1
81 /* This is the flash page window. */
82 /* We use this as paged blocks not directly so it's commented out. */
83 /*  .text2  :
84   {
85     *(.text2)
86   }  > text2 */
88 /* Non live tunable configuration items 1 */
89   .fixedconf1  :
90   {
91     *(.fixedconf1)
92   }  > fixedconf1
94 /* Non live tunable configuration items 1 */
95   .fixedconf2  :
96   {
97     *(.fixedconf2)
98   }  > fixedconf2
101 /*&&&&&&&&&&&&&& Paged Flash Regions &&&&&&&&&&&&&&*/
103 /* PPAGE FA is used for fuel tables and setup function */
104   .dpageFA  :
105   {
106     *(.dpageFA)
107   }  > dpageFA
109   .fpageFA  :
110   {
111     *(.fpageFA)
112   }  > fpageFA
114 /* PPAGE FB is used for smaller tunables and setup function */
115   .fpageFB  :
116   {
117     *(.fpageFB)
118   }  > fpageFB
120 /* Data split up into eight chunks to catch size mistakes better */
121   .dpageFB1 :
122   {
123     *(.dpageFB1)
124   }  > dpageFB1
126   .dpageFB2  :
127   {
128     *(.dpageFB2)
129   }  > dpageFB2
131   .dpageFB3  :
132   {
133     *(.dpageFB3)
134   }  > dpageFB3
136   .dpageFB4  :
137   {
138     *(.dpageFB4)
139   }  > dpageFB4
141   .dpageFB5  :
142   {
143     *(.dpageFB5)
144   }  > dpageFB5
146   .dpageFB6  :
147   {
148     *(.dpageFB6)
149   }  > dpageFB6
151   .dpageFB7  :
152   {
153     *(.dpageFB7)
154   }  > dpageFB7
156   .dpageFB8  :
157   {
158     *(.dpageFB8)
159   }  > dpageFB8
161 /* PPAGE FC is used for timing tables and setup function */
162   .dpageFC  :
163   {
164     *(.dpageFC)
165   }  > dpageFC
167   .fpageFC  :
168   {
169     *(.fpageFC)
170   }  > fpageFC
172 /* The rest from this 128k flash module for general code */
173   .ppageF8  :
174   {
175     *(.fpageF8)
176     *(.dpageF8)
177   }  > ppageF8
179   .fpageF9  :
180   {
181     *(.fpageF9)
182   }  > fpageF9
184   .dpageF9  :
185   {
186     *(.dpageF9)
187   }  > dpageF9
189   .ppageFE  :
190   {
191     *(.ppageFE)
192   }  > ppageFE
194 /* The following two blocks are included just for clarity */
195 /* and are the same as text1 and text when paged.         */
196 /*  .ppageFD  : (text1 / 0x4000 - 0x7FFF)
197   {
198     *(.ppageFD)
199   }  > ppageFD
201   .ppageFF  : (text / 0xC000 - 0xFFFF)
202   {
203     *(.ppageFF)
204   } > ppageFF */
207   .ppageE0X  :
208   {
209     *(.ppageE0X)
210   }  > ppageE0X
212   .ppageE0S  :
213   {
214     *(.ppageE0S)
215   }  > ppageE0S
217   .ppageE1  :
218   {
219     *(.ppageE1)
220   }  > ppageE1
222   .ppageE2  :
223   {
224     *(.ppageE2)
225   }  > ppageE2
227   .ppageE3  :
228   {
229     *(.ppageE3)
230   }  > ppageE3
232   .ppageE4  :
233   {
234     *(.ppageE4)
235   }  > ppageE4
237   .ppageE5  :
238   {
239     *(.ppageE5)
240   }  > ppageE5
242   .ppageE6  :
243   {
244     *(.ppageE6)
245   }  > ppageE6
247   .ppageE7  :
248   {
249     *(.ppageE7)
250   }  > ppageE7
252   .ppageE8  :
253   {
254     *(.ppageE8)
255   }  > ppageE8
257   .ppageE9  :
258   {
259     *(.ppageE9)
260   }  > ppageE9
262   .ppageEA  :
263   {
264     *(.ppageEA)
265   }  > ppageEA
267   .ppageEB  :
268   {
269     *(.ppageEB)
270   }  > ppageEB
272   .ppageEC  :
273   {
274     *(.ppageEC)
275   }  > ppageEC
277   .ppageED  :
278   {
279     *(.ppageED)
280   }  > ppageED
282   .ppageEE  :
283   {
284     *(.ppageEE)
285   }  > ppageEE
287   .ppageEF  :
288   {
289     *(.ppageEF)
290   }  > ppageEF
292   .ppageF0  :
293   {
294     *(.ppageF0)
295   }  > ppageF0
297   .ppageF1  :
298   {
299     *(.ppageF1)
300   }  > ppageF1
302   .ppageF2  :
303   {
304     *(.ppageF2)
305   }  > ppageF2
307   .ppageF3  :
308   {
309     *(.ppageF3)
310   }  > ppageF3
312   .ppageF4  :
313   {
314     *(.ppageF4)
315   }  > ppageF4
317   .ppageF5  :
318   {
319     *(.ppageF5)
320   }  > ppageF5
322   .ppageF6  :
323   {
324     *(.ppageF6)
325   }  > ppageF6
327   .ppageF7  :
328   {
329     *(.ppageF7)
330   }  > ppageF7
334 /** @endcond */