1/* generated memory regions file - do not edit */
2define symbol ATCM_START = 0x00000000;
3define symbol ATCM_LENGTH   = 0x20000;
4define symbol BTCM_START = 0x00100000;
5define symbol BTCM_LENGTH   = 0x20000;
6define symbol SYSTEM_RAM_START = 0x10000000;
7define symbol SYSTEM_RAM_LENGTH   = 0x180000;
8define symbol SYSTEM_RAM_MIRROR_START = 0x30000000;
9define symbol SYSTEM_RAM_MIRROR_LENGTH   = 0x180000;
10define symbol xSPI0_CS0_SPACE_MIRROR_START = 0x40000000;
11define symbol xSPI0_CS0_SPACE_MIRROR_LENGTH   = 0x4000000;
12define symbol xSPI0_CS1_SPACE_MIRROR_START = 0x44000000;
13define symbol xSPI0_CS1_SPACE_MIRROR_LENGTH   = 0x4000000;
14define symbol xSPI1_CS0_SPACE_MIRROR_START = 0x48000000;
15define symbol xSPI1_CS0_SPACE_MIRROR_LENGTH   = 0x4000000;
16define symbol CS0_SPACE_MIRROR_START = 0x50000000;
17define symbol CS0_SPACE_MIRROR_LENGTH   = 0x4000000;
18define symbol CS2_SPACE_MIRROR_START = 0x54000000;
19define symbol CS2_SPACE_MIRROR_LENGTH   = 0x4000000;
20define symbol CS3_SPACE_MIRROR_START = 0x58000000;
21define symbol CS3_SPACE_MIRROR_LENGTH   = 0x4000000;
22define symbol CS5_SPACE_MIRROR_START = 0x5C000000;
23define symbol CS5_SPACE_MIRROR_LENGTH   = 0x4000000;
24define symbol xSPI0_CS0_SPACE_START = 0x60000000;
25define symbol xSPI0_CS0_SPACE_LENGTH   = 0x4000000;
26define symbol xSPI0_CS1_SPACE_START = 0x64000000;
27define symbol xSPI0_CS1_SPACE_LENGTH   = 0x4000000;
28define symbol xSPI1_CS0_SPACE_START = 0x68000000;
29define symbol xSPI1_CS0_SPACE_LENGTH   = 0x4000000;
30define symbol CS0_SPACE_START = 0x70000000;
31define symbol CS0_SPACE_LENGTH   = 0x4000000;
32define symbol CS2_SPACE_START = 0x74000000;
33define symbol CS2_SPACE_LENGTH   = 0x4000000;
34define symbol CS3_SPACE_START = 0x78000000;
35define symbol CS3_SPACE_LENGTH   = 0x4000000;
36define symbol CS5_SPACE_START = 0x7C000000;
37define symbol CS5_SPACE_LENGTH   = 0x4000000;
38
39/* The memory information for each device is done in memory regions file.
40 * The starting address and length of memory not defined in memory regions file are defined as 0. */
41
42if (isdefinedsymbol(ATCM_START))
43{
44    define symbol ATCM_PRV_START = ATCM_START;
45}
46else
47{
48    define symbol ATCM_PRV_START = 0;
49}
50
51if (isdefinedsymbol(ATCM_LENGTH))
52{
53    define symbol ATCM_PRV_LENGTH = ATCM_LENGTH;
54}
55else
56{
57    define symbol ATCM_PRV_LENGTH = 0;
58}
59
60if (isdefinedsymbol(BTCM_START))
61{
62    define symbol BTCM_PRV_START = BTCM_START;
63}
64else
65{
66    define symbol BTCM_PRV_START = 0;
67}
68
69if (isdefinedsymbol(BTCM_LENGTH))
70{
71    define symbol BTCM_PRV_LENGTH = BTCM_LENGTH;
72}
73else
74{
75    define symbol BTCM_PRV_LENGTH = 0;
76}
77
78if (isdefinedsymbol(SYSTEM_RAM_START))
79{
80    define symbol SYSTEM_RAM_PRV_START = SYSTEM_RAM_START;
81}
82else
83{
84    define symbol SYSTEM_RAM_PRV_START = 0;
85}
86
87if (isdefinedsymbol(SYSTEM_RAM_LENGTH))
88{
89    define symbol SYSTEM_RAM_PRV_LENGTH = SYSTEM_RAM_LENGTH;
90}
91else
92{
93    define symbol SYSTEM_RAM_PRV_LENGTH = 0;
94}
95
96if (isdefinedsymbol(SYSTEM_RAM_MIRROR_START))
97{
98    define symbol SYSTEM_RAM_MIRROR_PRV_START = SYSTEM_RAM_MIRROR_START;
99}
100else
101{
102    define symbol SYSTEM_RAM_MIRROR_PRV_START = 0;
103}
104
105if (isdefinedsymbol(SYSTEM_RAM_MIRROR_LENGTH))
106{
107    define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = SYSTEM_RAM_MIRROR_LENGTH;
108}
109else
110{
111    define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = 0;
112}
113
114if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_START))
115{
116    define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = xSPI0_CS0_SPACE_MIRROR_START;
117}
118else
119{
120    define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = 0;
121}
122
123if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_LENGTH))
124{
125    define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS0_SPACE_MIRROR_LENGTH;
126}
127else
128{
129    define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = 0;
130}
131
132if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_START))
133{
134    define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = xSPI0_CS1_SPACE_MIRROR_START;
135}
136else
137{
138    define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = 0;
139}
140
141if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_LENGTH))
142{
143    define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS1_SPACE_MIRROR_LENGTH;
144}
145else
146{
147    define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = 0;
148}
149
150if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_START))
151{
152    define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = xSPI1_CS0_SPACE_MIRROR_START;
153}
154else
155{
156    define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = 0;
157}
158
159if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_LENGTH))
160{
161    define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS0_SPACE_MIRROR_LENGTH;
162}
163else
164{
165    define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = 0;
166}
167
168if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_START))
169{
170    define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = xSPI1_CS1_SPACE_MIRROR_START;
171}
172else
173{
174    define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = 0;
175}
176
177if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_LENGTH))
178{
179    define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS1_SPACE_MIRROR_LENGTH;
180}
181else
182{
183    define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = 0;
184}
185
186if (isdefinedsymbol(CS0_SPACE_MIRROR_START))
187{
188    define symbol CS0_SPACE_MIRROR_PRV_START = CS0_SPACE_MIRROR_START;
189}
190else
191{
192    define symbol CS0_SPACE_MIRROR_PRV_START = 0;
193}
194
195if (isdefinedsymbol(CS0_SPACE_MIRROR_LENGTH))
196{
197    define symbol CS0_SPACE_MIRROR_PRV_LENGTH = CS0_SPACE_MIRROR_LENGTH;
198}
199else
200{
201    define symbol CS0_SPACE_MIRROR_PRV_LENGTH = 0;
202}
203
204if (isdefinedsymbol(CS2_SPACE_MIRROR_START))
205{
206    define symbol CS2_SPACE_MIRROR_PRV_START = CS2_SPACE_MIRROR_START;
207}
208else
209{
210    define symbol CS2_SPACE_MIRROR_PRV_START = 0;
211}
212
213if (isdefinedsymbol(CS2_SPACE_MIRROR_LENGTH))
214{
215    define symbol CS2_SPACE_MIRROR_PRV_LENGTH = CS2_SPACE_MIRROR_LENGTH;
216}
217else
218{
219    define symbol CS2_SPACE_MIRROR_PRV_LENGTH = 0;
220}
221
222
223if (isdefinedsymbol(CS3_SPACE_MIRROR_START))
224{
225    define symbol CS3_SPACE_MIRROR_PRV_START = CS3_SPACE_MIRROR_START;
226}
227else
228{
229    define symbol CS3_SPACE_MIRROR_PRV_START = 0;
230}
231
232if (isdefinedsymbol(CS3_SPACE_MIRROR_LENGTH))
233{
234    define symbol CS3_SPACE_MIRROR_PRV_LENGTH = CS3_SPACE_MIRROR_LENGTH;
235}
236else
237{
238    define symbol CS3_SPACE_MIRROR_PRV_LENGTH = 0;
239}
240
241if (isdefinedsymbol(CS5_SPACE_MIRROR_START))
242{
243    define symbol CS5_SPACE_MIRROR_PRV_START = CS5_SPACE_MIRROR_START;
244}
245else
246{
247    define symbol CS5_SPACE_MIRROR_PRV_START = 0;
248}
249
250if (isdefinedsymbol(CS5_SPACE_MIRROR_LENGTH))
251{
252    define symbol CS5_SPACE_MIRROR_PRV_LENGTH = CS5_SPACE_MIRROR_LENGTH;
253}
254else
255{
256    define symbol CS5_SPACE_MIRROR_PRV_LENGTH = 0;
257}
258
259
260if (isdefinedsymbol(xSPI0_CS0_SPACE_START))
261{
262    define symbol xSPI0_CS0_SPACE_PRV_START = xSPI0_CS0_SPACE_START;
263}
264else
265{
266    define symbol xSPI0_CS0_SPACE_PRV_START = 0;
267}
268
269if (isdefinedsymbol(xSPI0_CS0_SPACE_LENGTH))
270{
271    define symbol xSPI0_CS0_SPACE_PRV_LENGTH = xSPI0_CS0_SPACE_LENGTH;
272}
273else
274{
275    define symbol xSPI0_CS0_SPACE_PRV_LENGTH = 0;
276}
277
278if (isdefinedsymbol(xSPI0_CS1_SPACE_START))
279{
280    define symbol xSPI0_CS1_SPACE_PRV_START = xSPI0_CS1_SPACE_START;
281}
282else
283{
284    define symbol xSPI0_CS1_SPACE_PRV_START = 0;
285}
286
287if (isdefinedsymbol(xSPI0_CS1_SPACE_LENGTH))
288{
289    define symbol xSPI0_CS1_SPACE_PRV_LENGTH = xSPI0_CS1_SPACE_LENGTH;
290}
291else
292{
293    define symbol xSPI0_CS1_SPACE_PRV_LENGTH = 0;
294}
295
296if (isdefinedsymbol(xSPI1_CS0_SPACE_START))
297{
298    define symbol xSPI1_CS0_SPACE_PRV_START = xSPI1_CS0_SPACE_START;
299}
300else
301{
302    define symbol xSPI1_CS0_SPACE_PRV_START = 0;
303}
304
305if (isdefinedsymbol(xSPI1_CS0_SPACE_LENGTH))
306{
307    define symbol xSPI1_CS0_SPACE_PRV_LENGTH = xSPI1_CS0_SPACE_LENGTH;
308}
309else
310{
311    define symbol xSPI1_CS0_SPACE_PRV_LENGTH = 0;
312}
313
314if (isdefinedsymbol(xSPI1_CS1_SPACE_START))
315{
316    define symbol xSPI1_CS1_SPACE_PRV_START = xSPI1_CS1_SPACE_START;
317}
318else
319{
320    define symbol xSPI1_CS1_SPACE_PRV_START = 0;
321}
322
323if (isdefinedsymbol(xSPI1_CS1_SPACE_LENGTH))
324{
325    define symbol xSPI1_CS1_SPACE_PRV_LENGTH = xSPI1_CS1_SPACE_LENGTH;
326}
327else
328{
329    define symbol xSPI1_CS1_SPACE_PRV_LENGTH = 0;
330}
331
332if (isdefinedsymbol(CS0_SPACE_START))
333{
334    define symbol CS0_SPACE_PRV_START = CS0_SPACE_START;
335}
336else
337{
338    define symbol CS0_SPACE_PRV_START = 0;
339}
340
341if (isdefinedsymbol(CS0_SPACE_LENGTH))
342{
343    define symbol CS0_SPACE_PRV_LENGTH = CS0_SPACE_LENGTH;
344}
345else
346{
347    define symbol CS0_SPACE_PRV_LENGTH = 0;
348}
349
350if (isdefinedsymbol(CS2_SPACE_START))
351{
352    define symbol CS2_SPACE_PRV_START = CS2_SPACE_START;
353}
354else
355{
356    define symbol CS2_SPACE_PRV_START = 0;
357}
358
359if (isdefinedsymbol(CS2_SPACE_LENGTH))
360{
361    define symbol CS2_SPACE_PRV_LENGTH = CS2_SPACE_LENGTH;
362}
363else
364{
365    define symbol CS2_SPACE_PRV_LENGTH = 0;
366}
367
368if (isdefinedsymbol(CS3_SPACE_START))
369{
370    define symbol CS3_SPACE_PRV_START = CS3_SPACE_START;
371}
372else
373{
374    define symbol CS3_SPACE_PRV_START = 0;
375}
376
377if (isdefinedsymbol(CS3_SPACE_LENGTH))
378{
379    define symbol CS3_SPACE_PRV_LENGTH = CS3_SPACE_LENGTH;
380}
381else
382{
383    define symbol CS3_SPACE_PRV_LENGTH = 0;
384}
385
386if (isdefinedsymbol(CS5_SPACE_START))
387{
388    define symbol CS5_SPACE_PRV_START = CS5_SPACE_START;
389}
390else
391{
392    define symbol CS5_SPACE_PRV_START = 0;
393}
394
395if (isdefinedsymbol(CS5_SPACE_LENGTH))
396{
397    define symbol CS5_SPACE_PRV_LENGTH = CS5_SPACE_LENGTH;
398}
399else
400{
401    define symbol CS5_SPACE_PRV_LENGTH = 0;
402}
403
404define symbol SYSTEM_RAM_END_OFFSET        = 0x00048000;
405define symbol FLASH_ADDRESS                = xSPI0_CS0_SPACE_PRV_START;
406
407/*
408define symbol INTVEC_ADDRESS               = ATCM_PRV_START;
409define symbol RAM_ADDRESS                  = (ATCM_PRV_START + 0x100);
410define symbol RAM_END_ADDRESS              = (ATCM_PRV_START + ATCM_PRV_LENGTH - 1);
411define symbol LOADER_STACK_ADDRESS         = (BTCM_PRV_START + 0x2000);
412define symbol LOADER_STACK_END_ADDRESS     = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1);
413define symbol DATA_NONCACHE_OFFSET         = 0x00048000;
414define symbol DATA_NONCACHE_END_OFFSET     = 0x00044000;
415define symbol DMAC_LINK_MODE_OFFSET        = 0x00044000;
416define symbol DMAC_LINK_MODE_END_OFFSET    = 0x00040000;
417define symbol NONCACHE_BUFFER_OFFSET       = 0x00020000;
418define symbol NONCACHE_BUFFER_END_OFFSET   = 0;
419*/
420/************* Override define symbol to place EtherCAT protocol into SystemRAM ************/
421define symbol INTVEC_ADDRESS               = SYSTEM_RAM_PRV_START;
422define symbol RAM_ADDRESS                  = (SYSTEM_RAM_PRV_START + 0x100);
423define symbol RAM_END_ADDRESS              = (SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - 1);
424define symbol LOADER_STACK_ADDRESS         = (BTCM_PRV_START + 0x2000);
425define symbol LOADER_STACK_END_ADDRESS     = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1);
426define symbol DATA_NONCACHE_OFFSET         = 0x00048000;
427define symbol DATA_NONCACHE_END_OFFSET     = 0x00044000;
428define symbol DMAC_LINK_MODE_OFFSET        = 0x00044000;
429define symbol DMAC_LINK_MODE_END_OFFSET    = 0x00040000;
430define symbol NONCACHE_BUFFER_OFFSET       = 0x00020000;
431define symbol NONCACHE_BUFFER_END_OFFSET   = 0;
432/*********************************************************************************************/
433
434/*###ICF### Section handled by ICF editor, don't touch! ****/
435/*-Editor annotation file-*/
436/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */
437/*-Specials-*/
438define symbol __ICFEDIT_intvec_start__ = INTVEC_ADDRESS;
439/*-Memory Regions-*/
440define symbol __ICFEDIT_region_ROM_start__ = FLASH_ADDRESS + 0x20100;
441define symbol __ICFEDIT_region_ROM_end__   = FLASH_ADDRESS + 0x6FFFF;
442define symbol __ICFEDIT_region_RAM_start__ = RAM_ADDRESS;
443define symbol __ICFEDIT_region_RAM_end__   = RAM_END_ADDRESS;
444/**** End of ICF editor section. ###ICF###*/
445
446/*-Sizes-*/
447define symbol __ICFEDIT_size_cstack__ = 0x200;
448/**** End of ICF editor section. ###ICF###*/
449
450define memory mem with size = 4G;
451define region ROM_region    = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
452define region RAM_region    = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
453
454define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
455
456define symbol __region_D_LOADER_STACK_start__     = LOADER_STACK_ADDRESS;
457define symbol __region_D_LOADER_STACK_end__       = LOADER_STACK_END_ADDRESS;
458
459define symbol __region_DATA_NONCACHE_start__          = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_OFFSET;
460define symbol __region_DATA_NONCACHE_end__            = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_END_OFFSET - 1;
461define symbol __region_DMAC_LINK_MODE_start__         = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_OFFSET;
462define symbol __region_DMAC_LINK_MODE_end__           = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_END_OFFSET - 1;
463define symbol __region_SHARED_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00040000;
464define symbol __region_SHARED_NONCACHE_BUFFER_end__   = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00020000 - 1;
465define symbol __region_NONCACHE_BUFFER_start__        = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_OFFSET;
466define symbol __region_NONCACHE_BUFFER_end__          = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_END_OFFSET - 1;
467
468define symbol __region_ATCM_start__              = ATCM_PRV_START;
469define symbol __region_ATCM_end__                = ATCM_PRV_START + ATCM_PRV_LENGTH - 1;
470define symbol __region_BTCM_start__              = BTCM_PRV_START;
471define symbol __region_BTCM_end__                = BTCM_PRV_START + BTCM_PRV_LENGTH - 1;
472define symbol __region_SYSTEM_RAM_start__        = SYSTEM_RAM_PRV_START;
473define symbol __region_SYSTEM_RAM_end__          = SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
474define symbol __region_SYSTEM_RAM_MIRROR_start__ = SYSTEM_RAM_MIRROR_PRV_START;
475define symbol __region_SYSTEM_RAM_MIRROR_end__   = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1;
476
477define symbol __region_XSPI0_CS0_MIRROR_start__ = xSPI0_CS0_SPACE_MIRROR_PRV_START;
478define symbol __region_XSPI0_CS0_MIRROR_end__   = xSPI0_CS0_SPACE_MIRROR_PRV_START + xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
479define symbol __region_XSPI0_CS1_MIRROR_start__ = xSPI0_CS1_SPACE_MIRROR_PRV_START;
480define symbol __region_XSPI0_CS1_MIRROR_end__   = xSPI0_CS1_SPACE_MIRROR_PRV_START + xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
481define symbol __region_XSPI1_CS0_MIRROR_start__ = xSPI1_CS0_SPACE_MIRROR_PRV_START;
482define symbol __region_XSPI1_CS0_MIRROR_end__   = xSPI1_CS0_SPACE_MIRROR_PRV_START + xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH - 1;
483define symbol __region_XSPI1_CS1_MIRROR_start__ = xSPI1_CS1_SPACE_MIRROR_PRV_START;
484define symbol __region_XSPI1_CS1_MIRROR_end__   = xSPI1_CS1_SPACE_MIRROR_PRV_START + xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH - 1;
485define symbol __region_CS0_MIRROR_start__       = CS0_SPACE_MIRROR_PRV_START;
486define symbol __region_CS0_MIRROR_end__         = CS0_SPACE_MIRROR_PRV_START + CS0_SPACE_MIRROR_PRV_LENGTH - 1;
487define symbol __region_CS2_MIRROR_start__       = CS2_SPACE_MIRROR_PRV_START;
488define symbol __region_CS2_MIRROR_end__         = CS2_SPACE_MIRROR_PRV_START + CS2_SPACE_MIRROR_PRV_LENGTH - 1;
489define symbol __region_CS3_MIRROR_start__       = CS3_SPACE_MIRROR_PRV_START;
490define symbol __region_CS3_MIRROR_end__         = CS3_SPACE_MIRROR_PRV_START + CS3_SPACE_MIRROR_PRV_LENGTH - 1;
491define symbol __region_CS5_MIRROR_start__       = CS5_SPACE_MIRROR_PRV_START;
492define symbol __region_CS5_MIRROR_end__         = CS5_SPACE_MIRROR_PRV_START + CS5_SPACE_MIRROR_PRV_LENGTH - 1;
493define symbol __region_XSPI0_CS0_start__        = xSPI0_CS0_SPACE_PRV_START;
494define symbol __region_XSPI0_CS0_end__          = xSPI0_CS0_SPACE_PRV_START + xSPI0_CS0_SPACE_PRV_LENGTH - 1;
495define symbol __region_XSPI0_CS1_start__        = xSPI0_CS1_SPACE_PRV_START;
496define symbol __region_XSPI0_CS1_end__          = xSPI0_CS1_SPACE_PRV_START + xSPI0_CS1_SPACE_PRV_LENGTH - 1;
497define symbol __region_XSPI1_CS0_start__        = xSPI1_CS0_SPACE_PRV_START;
498define symbol __region_XSPI1_CS0_end__          = xSPI1_CS0_SPACE_PRV_START + xSPI1_CS0_SPACE_PRV_LENGTH - 1;
499define symbol __region_XSPI1_CS1_start__        = xSPI1_CS1_SPACE_PRV_START;
500define symbol __region_XSPI1_CS1_end__          = xSPI1_CS1_SPACE_PRV_START + xSPI1_CS1_SPACE_PRV_LENGTH - 1;
501define symbol __region_CS0_start__              = CS0_SPACE_PRV_START;
502define symbol __region_CS0_end__                = CS0_SPACE_PRV_START + CS0_SPACE_PRV_LENGTH - 1;
503define symbol __region_CS2_start__              = CS2_SPACE_PRV_START;
504define symbol __region_CS2_end__                = CS2_SPACE_PRV_START + CS2_SPACE_PRV_LENGTH - 1;
505define symbol __region_CS3_start__              = CS3_SPACE_PRV_START;
506define symbol __region_CS3_end__                = CS3_SPACE_PRV_START + CS3_SPACE_PRV_LENGTH - 1;
507define symbol __region_CS5_start__              = CS5_SPACE_PRV_START;
508define symbol __region_CS5_end__                = CS5_SPACE_PRV_START + CS5_SPACE_PRV_LENGTH - 1;
509
510/************** SPI boot mode setting **************/
511define symbol __region_LDR_PARAM_start__        = FLASH_ADDRESS;
512define symbol __region_LDR_PARAM_end__          = FLASH_ADDRESS + 0x0000004B;
513define symbol __region_S_LOADER_STACK_start__   = FLASH_ADDRESS + 0x0000004C;
514define symbol __region_S_LOADER_STACK_end__     = FLASH_ADDRESS + 0x0000804B;
515
516define symbol __region_S_intvec_start__         = FLASH_ADDRESS + 0x20000;
517define symbol __region_S_intvec_end__           = FLASH_ADDRESS + 0x200FF;
518define symbol __region_S_RAM_start__            = FLASH_ADDRESS + 0x70000;
519define symbol __region_S_RAM_end__              = FLASH_ADDRESS + 0x7FFFF;
520/****************************************************/
521
522define region D_LOADER_STACK_region  = mem:[from __region_D_LOADER_STACK_start__   to __region_D_LOADER_STACK_end__];
523
524define region LDR_PARAM_region  = mem:[from __region_LDR_PARAM_start__   to __region_LDR_PARAM_end__];
525define region S_LOADER_STACK_region  = mem:[from __region_S_LOADER_STACK_start__   to __region_S_LOADER_STACK_end__];
526
527define region S_intvec_region = mem:[from __region_S_intvec_start__  to __region_S_intvec_end__];
528define region S_RAM_region    = mem:[from __region_S_RAM_start__  to __region_S_RAM_end__];
529
530define region DATA_NONCACHE_region           = mem:[from __region_DATA_NONCACHE_start__   to __region_DATA_NONCACHE_end__];
531define region DMAC_LINK_MODE_region          = mem:[from __region_DMAC_LINK_MODE_start__   to __region_DMAC_LINK_MODE_end__];
532define region SHARED_NONCACHE_BUFFER_region  = mem:[from __region_SHARED_NONCACHE_BUFFER_start__   to __region_SHARED_NONCACHE_BUFFER_end__];
533define region NONCACHE_BUFFER_region         = mem:[from __region_NONCACHE_BUFFER_start__   to __region_NONCACHE_BUFFER_end__];
534
535define region ATCM_region              = mem:[from __region_ATCM_start__  to __region_ATCM_end__ ];
536define region BTCM_region              = mem:[from __region_BTCM_start__  to __region_BTCM_end__ ];
537define region SYSTEM_RAM_region        = mem:[from __region_SYSTEM_RAM_start__  to __region_SYSTEM_RAM_end__ ];
538define region SYSTEM_RAM_MIRROR_region = mem:[from __region_SYSTEM_RAM_MIRROR_start__  to __region_SYSTEM_RAM_MIRROR_end__ ];
539define region XSPI0_CS0_MIRROR_region  = mem:[from __region_XSPI0_CS0_MIRROR_start__  to __region_XSPI0_CS0_MIRROR_end__ ];
540define region XSPI0_CS1_MIRROR_region  = mem:[from __region_XSPI0_CS1_MIRROR_start__  to __region_XSPI0_CS1_MIRROR_end__ ];
541define region XSPI1_CS0_MIRROR_region  = mem:[from __region_XSPI1_CS0_MIRROR_start__  to __region_XSPI1_CS0_MIRROR_end__ ];
542define region XSPI1_CS1_MIRROR_region  = mem:[from __region_XSPI1_CS1_MIRROR_start__  to __region_XSPI1_CS1_MIRROR_end__ ];
543define region CS0_MIRROR_region        = mem:[from __region_CS0_MIRROR_start__  to __region_CS0_MIRROR_end__ ];
544define region CS2_MIRROR_region        = mem:[from __region_CS2_MIRROR_start__  to __region_CS2_MIRROR_end__ ];
545define region CS3_MIRROR_region        = mem:[from __region_CS3_MIRROR_start__  to __region_CS3_MIRROR_end__ ];
546define region CS5_MIRROR_region        = mem:[from __region_CS5_MIRROR_start__  to __region_CS5_MIRROR_end__ ];
547define region XSPI0_CS0_region         = mem:[from __region_XSPI0_CS0_start__  to __region_XSPI0_CS0_end__ ];
548define region XSPI0_CS1_region         = mem:[from __region_XSPI0_CS1_start__  to __region_XSPI0_CS1_end__ ];
549define region XSPI1_CS0_region         = mem:[from __region_XSPI1_CS0_start__  to __region_XSPI1_CS0_end__ ];
550define region XSPI1_CS1_region         = mem:[from __region_XSPI1_CS1_start__  to __region_XSPI1_CS1_end__ ];
551define region CS0_region               = mem:[from __region_CS0_start__  to __region_CS0_end__ ];
552define region CS2_region               = mem:[from __region_CS2_start__  to __region_CS2_end__ ];
553define region CS3_region               = mem:[from __region_CS3_start__  to __region_CS3_end__ ];
554define region CS5_region               = mem:[from __region_CS5_start__  to __region_CS5_end__ ];
555
556define block LDR_PRG_RBLOCK with fixed order
557                             { ro code section .loader_text_init object startup_core.o,
558                               ro code object startup_core.o,
559                               ro code object system_core.o,
560                               ro code object startup.o,
561                               ro code object system.o,
562                               ro code object bsp_clocks.o,
563                               ro code object bsp_irq_core.o,
564                               ro code object bsp_irq.o,
565                               ro code object bsp_register_protection.o,
566                               ro code object r_ioport.o,
567                               ro code object bsp_cache.o,
568                               ro code section .warm_start_init }
569                               except { ro code section .intvec_init,
570                                        ro code section .reset_handler_init };
571define block LDR_PRG_WBLOCK with fixed order
572                             { rw code section .loader_text object startup_core.o,
573                               rw code object startup_core.o,
574                               rw code object system_core.o,
575                               rw code object startup.o,
576                               rw code object system.o,
577                               rw code object bsp_clocks.o,
578                               rw code object bsp_irq_core.o,
579                               rw code object bsp_irq.o,
580                               rw code object bsp_register_protection.o,
581                               rw code object r_ioport.o,
582                               rw code object bsp_cache.o,
583                               rw code section .warm_start }
584                               except { rw code section .intvec,
585                                        rw code section .reset_handler };
586define block LDR_DATA_ZBLOCK with alignment = 4
587                             { section .bss object startup_core.o,
588                               section .bss object system_core.o,
589                               section .bss object startup.o,
590                               section .bss object system.o,
591                               section .bss object bsp_clocks.o,
592                               section .bss object bsp_irq_core.o,
593                               section .bss object bsp_irq.o,
594                               section .bss object bsp_register_protection.o,
595                               section .bss object r_ioport.o,
596                               section .bss object bsp_cache.o,
597                               section .bss object bsp_io.o };
598define block LDR_DATA_RBLOCK with fixed order, alignment = 4
599                             { section .data_init object startup_core.o,
600                               section .data_init object system_core.o,
601                               section .data_init object startup.o,
602                               section .data_init object system.o,
603                               section .data_init object bsp_clocks.o,
604                               section .data_init object bsp_irq_core.o,
605                               section .data_init object bsp_irq.o,
606                               section .data_init object bsp_register_protection.o,
607                               section .data_init object r_ioport.o,
608                               section .data_init object bsp_cache.o,
609                               section .rodata_init object system_core.o };
610define block LDR_DATA_WBLOCK with fixed order, alignment = 4
611                             { section .data object startup_core.o,
612                               section .data object system_core.o,
613                               section .data object startup.o,
614                               section .data object system.o,
615                               section .data object bsp_clocks.o,
616                               section .data object bsp_irq_core.o,
617                               section .data object bsp_irq.o,
618                               section .data object bsp_register_protection.o,
619                               section .data object r_ioport.o,
620                               section .data object bsp_cache.o,
621                               section .rodata object system_core.o };
622
623define block HEAP_BLOCK with alignment = 8 { rw section HEAP };
624define block THREAD_STACK with alignment = 8 { rw section .stack* };
625define block SYS_STACK with alignment = 8 { rw section .sys_stack };
626define block SVC_STACK with alignment = 8 { rw section .svc_stack };
627define block IRQ_STACK with alignment = 8 { rw section .irq_stack };
628define block FIQ_STACK with alignment = 8 { rw section .fiq_stack };
629define block UND_STACK with alignment = 8 { rw section .und_stack };
630define block ABT_STACK with alignment = 8 { rw section .abt_stack };
631
632define block VECTOR_RBLOCK with alignment = 32 { ro code section .intvec_init};
633define block VECTOR_WBLOCK with alignment = 32 { rw code section .intvec};
634define block USER_PRG_RBLOCK with alignment = 4 { ro code };
635define block USER_PRG_WBLOCK with alignment = 4 { rw code };
636define block USER_DATA_ZBLOCK with alignment = 4 { section .bss };
637define block USER_DATA_RBLOCK with fixed order, alignment = 4
638                              { section .data_init,
639                                section __DLIB_PERTHREAD_init,
640                                section .rodata_init,
641                                section .version_init };
642define block USER_DATA_WBLOCK with fixed order, alignment = 4
643                              { section .data,
644                                section __DLIB_PERTHREAD,
645                                section .rodata,
646                                section .version };
647define block USER_DATA_NONCACHE_RBLOCK with alignment = 4 { section .data_noncache_init };
648define block USER_DATA_NONCACHE_WBLOCK with alignment = 4 { section .data_noncache };
649define block DMAC_LINK_MODE_ZBLOCK with alignment = 4 { section .dmac_link_mode* };
650define block SHARED_NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .shared_noncache_buffer* };
651define block NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .noncache_buffer* };
652
653initialize manually  { ro code object startup_core.o,
654                       ro code object system_core.o,
655                       ro code object startup.o,
656                       ro code object system.o,
657                       ro code object bsp_clocks.o,
658                       ro code object bsp_irq_core.o,
659                       ro code object bsp_irq.o,
660                       ro code object bsp_register_protection.o,
661                       ro code object r_ioport.o,
662                       ro code object bsp_cache.o,
663                       ro code section .intvec,
664                       ro code section .reset_handler,
665                       ro code section .warm_start,
666                       ro code,
667                       section .data,
668                       section __DLIB_PERTHREAD,
669                       section .rodata,
670                       section .version,
671                       section .data_noncache };
672
673do not initialize   { section .noinit,
674                      section .bss,
675                      section .dmac_link_mode*,
676                      section .shared_noncache_buffer*,
677                      section .noncache_buffer*,
678                      rw section HEAP,
679                      rw section .stack*,
680                      rw section .sys_stack,
681                      rw section .svc_stack,
682                      rw section .irq_stack,
683                      rw section .fiq_stack,
684                      rw section .und_stack,
685                      rw section .abt_stack };
686
687place at address mem: __ICFEDIT_intvec_start__ { block VECTOR_WBLOCK };
688
689place in LDR_PARAM_region { readonly section .loader_param };
690place at start of S_LOADER_STACK_region { block LDR_PRG_RBLOCK };
691place in S_LOADER_STACK_region { section LDR_DATA_RBLOCK, block LDR_DATA_RBLOCK };
692place in S_intvec_region { block VECTOR_RBLOCK };
693place in ROM_region   { block USER_PRG_RBLOCK, readonly };
694place in S_RAM_region { block USER_DATA_RBLOCK, block USER_DATA_NONCACHE_RBLOCK };
695
696place at start of D_LOADER_STACK_region { block LDR_PRG_WBLOCK };
697place in D_LOADER_STACK_region { section LDR_DATA_WBLOCK, block LDR_DATA_WBLOCK,
698                                 section LDR_DATA_ZBLOCK, block LDR_DATA_ZBLOCK };
699place in D_LOADER_STACK_region  { section SYS_STACK, block SYS_STACK,
700                                  section SVC_STACK, block SVC_STACK,
701                                  section IRQ_STACK, block IRQ_STACK,
702                                  section FIQ_STACK, block FIQ_STACK,
703                                  section UND_STACK, block UND_STACK,
704                                  section ABT_STACK, block ABT_STACK };
705place in RAM_region        { block USER_PRG_WBLOCK };
706place in RAM_region        { readwrite, last block CSTACK };
707place in RAM_region        { block USER_DATA_WBLOCK,
708                             block USER_DATA_ZBLOCK };
709place in RAM_region        { section HEAP_BLOCK, block HEAP_BLOCK,
710                             section THREAD_STACK, block THREAD_STACK };
711
712place in DATA_NONCACHE_region { block USER_DATA_NONCACHE_WBLOCK };
713place in DMAC_LINK_MODE_region { block DMAC_LINK_MODE_ZBLOCK };
714place in SHARED_NONCACHE_BUFFER_region { block SHARED_NONCACHE_BUFFER_ZBLOCK };
715place in NONCACHE_BUFFER_region { block NONCACHE_BUFFER_ZBLOCK };
716place in ATCM_region { };
717place in BTCM_region { };
718place in SYSTEM_RAM_region { };
719place in SYSTEM_RAM_MIRROR_region { };
720place in XSPI0_CS0_MIRROR_region { };
721place in XSPI0_CS1_MIRROR_region { };
722place in XSPI1_CS0_MIRROR_region { };
723place in XSPI1_CS1_MIRROR_region { };
724place in CS0_MIRROR_region { };
725place in CS2_MIRROR_region { };
726place in CS3_MIRROR_region { };
727place in CS5_MIRROR_region { };
728place in XSPI0_CS0_region { };
729place in XSPI0_CS1_region { };
730place in XSPI1_CS0_region { };
731place in XSPI1_CS1_region { };
732place in CS0_region { };
733place in CS2_region { };
734place in CS3_region { };
735place in CS5_region { };
736