1#---------------------------------------------------------------------------
2#  Project:  NitroSDK - tools - makelcf
3#  File:     ARM9-TS.lcf.template
4#
5#  Copyright 2003-2008 Nintendo. All rights reserved.
6#
7#  These coded instructions, statements, and computer programs contain
8#  proprietary information of Nintendo of America Inc. and/or Nintendo
9#  Company Ltd., and are protected by Federal copyright law. They may
10#  not be disclosed to third parties or copied or duplicated in any form,
11#  in whole or in part, without the prior written consent of Nintendo.
12#
13#  $Log: ARM9-TS.lcf.template,v $
14#  Revision 1.39  2007/04/12 00:11:41  yasu
15#  Updated copyright year
16#
17#  Revision 1.38  2007/04/10 14:05:45  yasu
18#  Support for multiple uses of SEARCH_SYMBOL
19#
20#  Revision 1.37  2006/07/20 07:29:12  kitase_hirotake
21#  Added the description explaining the version section
22#
23#  Revision 1.36  2006/07/18 11:11:01  yasu
24#  There is an error in the way check.xTCM gets the OVERLAY region size in the TCM region overflow check. Because it is not currently clear how to accurately calculate this, the addition of the OVERLAY region was cut out.
25#
26#
27#
28#  Revision 1.35  2006/05/10 03:19:47  yasu
29#  Added support for the CodeWarrior 2.x overlay expansion
30#
31#  Revision 1.34  2006/04/06 09:02:36  kitase_hirotake
32#  Support for .itcm.bss and .dtcm.bss
33#
34#  Revision 1.33  2006/03/30 23:59:22  yasu
35#  Updated copyright year
36#
37#  Revision 1.32  2006/03/29 13:14:22  yasu
38#  Support for overlays in CWVER 2.x
39#
40#  Revision 1.31  2005/11/24 01:16:47  yada
41#  Changed start address of mainEX arena from 0x2400000 to 0x23e0000
42#
43#  Revision 1.30  2005/09/02 04:14:22  yasu
44#  Old symbols were redefined so they can be used even under SDK2.2
45#
46#  Revision 1.29  2005/08/31 09:34:57  yasu
47#  Corrected a problem where code would not function normally when using section names such as section_BSS
48#
49#  Revision 1.28  2005/08/26 11:22:16  yasu
50#  Overlay support for ITCM/DTCM
51#
52#  Revision 1.27  2005/06/20 12:29:20  yasu
53#  Changed Surffix to Suffix
54#
55#  Revision 1.26  2005/06/14 09:03:42  yada
56#  Fix specific to negative value of SDK_STACKSIZE
57#
58#  Revision 1.25  2005/04/13 12:51:00  terui
59#  Changed SDK_AUTOLOAD.DTCM.START 0x027c0000 to 0x027e0000
60#
61#  Revision 1.24  2005/03/30 00:02:14  yosizaki
62#  Fixed copyright header
63#
64#  Revision 1.23  2005/03/25 12:54:59  yasu
65#  Added the .version section
66#
67#  Revision 1.22  2004/10/03 02:00:56  yasu
68#  Output component file list for compstatic tool
69#
70#  Revision 1.21  2004/09/27 05:28:21  yasu
71#  Added support for .sinit
72#
73#  Revision 1.20  2004/09/09 11:49:20  yasu
74#  Added support for compstatic in default
75#
76#  Revision 1.19  2004/09/06 06:40:00  yasu
77#  Added labels for digest
78#
79#  Revision 1.18  2004/08/20 06:19:59  yasu
80#  DTCM moves to 0x027c0000 at default
81#
82#  Revision 1.17  2004/08/02 10:38:53  yasu
83#  Added autoload-done callback address in overlaydefs
84#
85#  Revision 1.16  2004/07/26 02:22:32  yasu
86#  Changed DTCM address to 0x023c0000
87#
88#  Revision 1.15  2004/07/26 00:08:27  yasu
89#  Fixed label of exception table
90#
91#  Revision 1.14  2004/07/24 05:42:25  yasu
92#  Set default values for SDK_AUTOGEN_xTCM_START
93#
94#  Revision 1.13  2004/07/23 11:32:14  yasu
95#  Defined labels for __exception_table_start__ and _end__
96#
97#  Revision 1.12  2004/07/12 12:21:08  yasu
98#  Checked size of ITCM/DTCM
99#
100#  Revision 1.11  2004/07/10 04:10:26  yasu
101#  Added support for command 'Library'
102#
103#  Revision 1.10  2004/07/02 08:13:02  yasu
104#  Added support for OBJECT( )
105#
106#  Revision 1.9	 2004/07/01 12:54:38  yasu
107#  Added support for ITCM/DTCM/WRAM autoload
108#
109#  Revision 1.8	 2004/07/01 10:41:46  yasu
110#  Added support for autoload
111#
112#  Revision 1.7	 2004/06/02 07:35:37  yasu
113#  Set libsyscall.a in FORCE_ACTIVE
114#  Put NitroMain at the top of ROM image
115#
116#  Revision 1.6	 2004/06/02 04:56:28  yasu
117#  Revised to match the new ROM map of TS
118#
119#  Revision 1.5	 2004/06/01 06:12:00  miya
120#  Added padding at top of ROM image
121#
122#  Revision 1.4	 2004/04/26 12:16:48  yasu
123#  Added KEEP_SECTIONS
124#
125#  Revision 1.3	 2004/04/20 07:41:32  yasu
126#  Set STATICINIT instead of .ctor temporarily
127#
128#  Revision 1.2	 2004/04/14 07:16:42  yasu
129#  Added ALIGN(32) for convenience to handle cache line
130#
131#  Revision 1.1	 2004/04/06 01:59:54  yasu
132#  Newly added
133#
134#  $NoKeywords: $
135#---------------------------------------------------------------------------
136MEMORY
137{
138	main		(RWX) : ORIGIN = 0x02000000,   LENGTH = 0x0 >  main.sbin
139	ITCM		(RWX) : ORIGIN = 0x01ff8000, LENGTH = 0x0 >> main.sbin
140	DTCM		(RWX) : ORIGIN = 0x023e0000, LENGTH = 0x0 >> main.sbin
141	binary.AUTOLOAD_INFO		(RWX) : ORIGIN = 0, LENGTH = 0x0 >> main.sbin
142	binary.STATIC_FOOTER		(RWX) : ORIGIN = 0, LENGTH = 0x0 >> main.sbin
143
144	main_defs	(RW)  : ORIGIN = AFTER(main), LENGTH = 0x0 > main_defs.sbin
145	main_table	(RW)  : ORIGIN = AFTER(main), LENGTH = 0x0 > main_table.sbin
146	main_overlay_1		(RWXO): ORIGIN = AFTER(main), LENGTH = 0x0 > main_overlay_1.sbin
147	main_overlay_2		(RWXO): ORIGIN = AFTER(main), LENGTH = 0x0 > main_overlay_2.sbin
148	main_itcm_1		(RWXO): ORIGIN = AFTER(ITCM), LENGTH = 0x0 > main_itcm_1.sbin
149	main_dtcm_1		(RWXO): ORIGIN = AFTER(DTCM), LENGTH = 0x0 > main_dtcm_1.sbin
150	main_dtcm_2		(RWXO): ORIGIN = AFTER(DTCM), LENGTH = 0x0 > main_dtcm_2.sbin
151	MAIN_EX		(RWXO): ORIGIN = 0x02400000, LENGTH = 0x0 > MAIN_EX.sbin
152	MAIN_EX_2		(RWXO): ORIGIN = AFTER(MAIN_EX), LENGTH = 0x0 > MAIN_EX_2.sbin
153	dummy.MAIN_EX		(RW)  : ORIGIN = 0x023e0000, LENGTH = 0x0
154	arena.MAIN			(RW)  : ORIGIN = AFTER(main,main_overlay_1,main_overlay_2), LENGTH = 0x0
155	arena.MAIN_EX		(RW)  : ORIGIN = AFTER(dummy.MAIN_EX,MAIN_EX,MAIN_EX_2), LENGTH = 0x0
156	arena.ITCM		(RW)  : ORIGIN = AFTER(ITCM,main_itcm_1), LENGTH = 0x0
157	arena.DTCM		(RW)  : ORIGIN = AFTER(DTCM,main_dtcm_1,main_dtcm_2), LENGTH = 0x0
158	binary.MODULE_FILES		(RW)  : ORIGIN = 0x0, LENGTH = 0x0     > component.files
159	check.ITCM			(RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check
160	check.DTCM			(RW)  : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check
161}
162
163FORCE_ACTIVE
164{
165	SVC_SoftReset
166}
167
168KEEP_SECTION
169{
170	.sinit
171}
172
173SECTIONS
174{
175	############################ STATIC #################################
176	.main:
177	{
178	ALIGNALL(4);			. = ALIGN(32);	# Fit to cache line
179
180	#
181	#  TEXT BLOCK: READ ONLY
182	#
183	SDK_STATIC_START		=.;
184	SDK_STATIC_TEXT_START		=.;
185					#:::::::::: text/rodata
186					libsyscall.a (.text)
187					crt0.o (.text)
188					crt0.o (.rodata)
189					#
190					# Added .version section.
191					# The information included in this section will be needed for Lotcheck purposes. Be sure to leave it in this position.
192					#
193					#
194					* (.version)
195					OBJECT(NitroMain,*)
196					main_a.o (.text)
197					main_b.o (.text)
198					main_c.o (.text)
199					main_a.a (.text)
200					main_b.a (.text)
201					main_c.a (.text)
202					. = ALIGN(4);
203					* (.exception)
204					. = ALIGN(4);
205	SDK_STATIC_ETABLE_START		=.;
206					EXCEPTION
207	SDK_STATIC_ETABLE_END		=.;
208					. = ALIGN(4);
209					main_a.o (.init)
210					main_b.o (.init)
211					main_c.o (.init)
212					main_a.a (.init)
213					main_b.a (.init)
214					main_c.a (.init)
215					. = ALIGN(4);
216					main_a.o (.rodata)
217					main_b.o (.rodata)
218					main_c.o (.rodata)
219					main_a.a (.rodata)
220					main_b.a (.rodata)
221					main_c.a (.rodata)
222					. = ALIGN(4);
223
224	SDK_STATIC_SINIT_START		=.;
225					#:::::::::: ctor
226					main_a.o (.ctor)
227					main_b.o (.ctor)
228					main_c.o (.ctor)
229					main_a.a (.ctor)
230					main_b.a (.ctor)
231					main_c.a (.ctor)
232					main_a.o (.sinit)
233					main_b.o (.sinit)
234					main_c.o (.sinit)
235					main_a.a (.sinit)
236					main_b.a (.sinit)
237					main_c.a (.sinit)
238					WRITEW	0;
239					#:::::::::: ctor
240	SDK_STATIC_SINIT_END		=.;
241
242					#:::::::::: text/rodata
243					. = ALIGN(32);
244	SDK_STATIC_TEXT_END		=.;
245
246	#
247	#  DATA BLOCK: READ WRITE
248	#
249	SDK_STATIC_DATA_START		=.;
250					#:::::::::: Data
251					main_a.o (.sdata)
252					main_b.o (.sdata)
253					main_c.o (.sdata)
254					main_a.a (.sdata)
255					main_b.a (.sdata)
256					main_c.a (.sdata)
257					. = ALIGN(4);
258					main_a.o (.data)
259					main_b.o (.data)
260					main_c.o (.data)
261					main_a.a (.data)
262					main_b.a (.data)
263					main_c.a (.data)
264					. = ALIGN(4);
265	SDK_OVERLAY_DIGEST		=.;
266					# NO DIGEST
267	SDK_OVERLAY_DIGEST_END		=.;
268					#:::::::::: Data
269					. = ALIGN(32);
270	SDK_STATIC_DATA_END		=.;
271	SDK_STATIC_END			=.;
272
273	SDK_STATIC_TEXT_SIZE		= SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START;
274	SDK_STATIC_DATA_SIZE		= SDK_STATIC_DATA_END - SDK_STATIC_DATA_START;
275	SDK_STATIC_SIZE			= SDK_STATIC_END      - SDK_STATIC_START;
276	__sinit__			= SDK_STATIC_SINIT_START;	# For static initializer
277	__exception_table_start__	= SDK_STATIC_ETABLE_START;	# For exception table
278	__exception_table_end__		= SDK_STATIC_ETABLE_END;	# For exception table
279	} > main
280
281	.main.bss:
282	{
283	ALIGNALL(4);			. = ALIGN(32);
284
285	#
286	#  BSS BLOCK
287	#
288	SDK_STATIC_BSS_START		=.;
289					#:::::::::: bss
290					main_a.o (.sbss)
291					main_b.o (.sbss)
292					main_c.o (.sbss)
293					main_a.a (.sbss)
294					main_b.a (.sbss)
295					main_c.a (.sbss)
296					. = ALIGN(4);
297					main_a.o (.bss)
298					main_b.o (.bss)
299					main_c.o (.bss)
300					main_a.a (.bss)
301					main_b.a (.bss)
302					main_c.a (.bss)
303					. = ALIGN(4);
304					#:::::::::: bss
305					. = ALIGN(32);
306	SDK_STATIC_BSS_END		= .;
307	SDK_STATIC_BSS_SIZE		= SDK_STATIC_BSS_END - SDK_STATIC_BSS_START;
308
309	} >> main
310
311
312	############################ AUTOLOADS ##############################
313	SDK_AUTOLOAD.ITCM.START			= 0x01ff8000;
314	SDK_AUTOLOAD.ITCM.END			= SDK_AUTOLOAD.ITCM.START;
315	SDK_AUTOLOAD.ITCM.BSS_END		= SDK_AUTOLOAD.ITCM.START;
316	SDK_AUTOLOAD.ITCM.SIZE			= 0;
317	SDK_AUTOLOAD.ITCM.BSS_SIZE		= 0;
318	SDK_AUTOLOAD.DTCM.START			= 0x027e0000;
319	SDK_AUTOLOAD.DTCM.END			= SDK_AUTOLOAD.DTCM.START;
320	SDK_AUTOLOAD.DTCM.BSS_END		= SDK_AUTOLOAD.DTCM.START;
321	SDK_AUTOLOAD.DTCM.SIZE			= 0;
322	SDK_AUTOLOAD.DTCM.BSS_SIZE		= 0;
323	SDK_AUTOLOAD_START			= SDK_STATIC_END;
324	SDK_AUTOLOAD_SIZE			= 0;
325	SDK_AUTOLOAD_NUMBER			= 2;
326
327	.ITCM:
328	{
329	ALIGNALL(4);				. = ALIGN(32);
330
331	#
332	#   TEXT BLOCK: READ ONLY
333	#
334	SDK_AUTOLOAD_ITCM_ID		=0;
335	SDK_AUTOLOAD.ITCM.ID		=0;
336	SDK_AUTOLOAD.ITCM.START	=.;
337	SDK_AUTOLOAD.ITCM.TEXT_START	=.;
338						#:::::::::: text/rodata
339						. = ALIGN(4);
340						* (.itcm)
341						. = ALIGN(4);
342						. = ALIGN(4);
343						#:::::::::: text/rodata
344	SDK_AUTOLOAD.ITCM.TEXT_END	=.;
345
346	#
347	#  DATA BLOCK: READ WRITE BLOCK
348	#
349	SDK_AUTOLOAD.ITCM.DATA_START	=.;
350						#:::::::::: Data
351						. = ALIGN(4);
352						. = ALIGN(4);
353						. = ALIGN(4);
354						#:::::::::: Data
355						. = ALIGN(32);
356	SDK_AUTOLOAD.ITCM.DATA_END	=.;
357	SDK_AUTOLOAD.ITCM.END	=.;
358
359	SDK_AUTOLOAD.ITCM.TEXT_SIZE	= SDK_AUTOLOAD.ITCM.TEXT_END - SDK_AUTOLOAD.ITCM.TEXT_START;
360	SDK_AUTOLOAD.ITCM.DATA_SIZE	= SDK_AUTOLOAD.ITCM.DATA_END - SDK_AUTOLOAD.ITCM.DATA_START;
361	SDK_AUTOLOAD.ITCM.SIZE	= SDK_AUTOLOAD.ITCM.END	- SDK_AUTOLOAD.ITCM.START;
362	SDK_AUTOLOAD_SIZE			= SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.ITCM.SIZE;
363
364	} > ITCM
365
366	.ITCM.bss:
367	{
368	ALIGNALL(4);				. = ALIGN(32);
369
370	#
371	#  BSS BLOCK
372	#
373	SDK_AUTOLOAD.ITCM.BSS_START	= .;
374						#:::::::::: bss
375						. = ALIGN(4);
376						. = ALIGN(4);
377						. = ALIGN(4);
378						* (.itcm.bss)
379						. = ALIGN(4);
380						#:::::::::: bss
381						. = ALIGN(32);
382	SDK_AUTOLOAD.ITCM.BSS_END	= .;
383
384	SDK_AUTOLOAD.ITCM.BSS_SIZE	= SDK_AUTOLOAD.ITCM.BSS_END - SDK_AUTOLOAD.ITCM.BSS_START;
385
386	} >> ITCM
387
388	.DTCM:
389	{
390	ALIGNALL(4);				. = ALIGN(32);
391
392	#
393	#   TEXT BLOCK: READ ONLY
394	#
395	SDK_AUTOLOAD_DTCM_ID		=1;
396	SDK_AUTOLOAD.DTCM.ID		=1;
397	SDK_AUTOLOAD.DTCM.START	=.;
398	SDK_AUTOLOAD.DTCM.TEXT_START	=.;
399						#:::::::::: text/rodata
400						. = ALIGN(4);
401						. = ALIGN(4);
402						. = ALIGN(4);
403						#:::::::::: text/rodata
404	SDK_AUTOLOAD.DTCM.TEXT_END	=.;
405
406	#
407	#  DATA BLOCK: READ WRITE BLOCK
408	#
409	SDK_AUTOLOAD.DTCM.DATA_START	=.;
410						#:::::::::: Data
411						. = ALIGN(4);
412						. = ALIGN(4);
413						* (.dtcm)
414						. = ALIGN(4);
415						#:::::::::: Data
416						. = ALIGN(32);
417	SDK_AUTOLOAD.DTCM.DATA_END	=.;
418	SDK_AUTOLOAD.DTCM.END	=.;
419
420	SDK_AUTOLOAD.DTCM.TEXT_SIZE	= SDK_AUTOLOAD.DTCM.TEXT_END - SDK_AUTOLOAD.DTCM.TEXT_START;
421	SDK_AUTOLOAD.DTCM.DATA_SIZE	= SDK_AUTOLOAD.DTCM.DATA_END - SDK_AUTOLOAD.DTCM.DATA_START;
422	SDK_AUTOLOAD.DTCM.SIZE	= SDK_AUTOLOAD.DTCM.END	- SDK_AUTOLOAD.DTCM.START;
423	SDK_AUTOLOAD_SIZE			= SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.DTCM.SIZE;
424
425	} > DTCM
426
427	.DTCM.bss:
428	{
429	ALIGNALL(4);				. = ALIGN(32);
430
431	#
432	#  BSS BLOCK
433	#
434	SDK_AUTOLOAD.DTCM.BSS_START	= .;
435						#:::::::::: bss
436						. = ALIGN(4);
437						. = ALIGN(4);
438						* (.dtcm.bss)
439						. = ALIGN(4);
440						. = ALIGN(4);
441						#:::::::::: bss
442						. = ALIGN(32);
443	SDK_AUTOLOAD.DTCM.BSS_END	= .;
444
445	SDK_AUTOLOAD.DTCM.BSS_SIZE	= SDK_AUTOLOAD.DTCM.BSS_END - SDK_AUTOLOAD.DTCM.BSS_START;
446
447	} >> DTCM
448
449
450	SDK_AUTOLOAD_ITCM_START			= SDK_AUTOLOAD.ITCM.START;
451	SDK_AUTOLOAD_ITCM_END			= SDK_AUTOLOAD.ITCM.END;
452	SDK_AUTOLOAD_ITCM_BSS_END		= SDK_AUTOLOAD.ITCM.BSS_END;
453	SDK_AUTOLOAD_ITCM_SIZE			= SDK_AUTOLOAD.ITCM.SIZE;
454	SDK_AUTOLOAD_ITCM_BSS_SIZE		= SDK_AUTOLOAD.ITCM.BSS_SIZE;
455	SDK_AUTOLOAD_DTCM_START			= SDK_AUTOLOAD.DTCM.START;
456	SDK_AUTOLOAD_DTCM_END			= SDK_AUTOLOAD.DTCM.END;
457	SDK_AUTOLOAD_DTCM_BSS_END		= SDK_AUTOLOAD.DTCM.BSS_END;
458	SDK_AUTOLOAD_DTCM_SIZE			= SDK_AUTOLOAD.DTCM.SIZE;
459	SDK_AUTOLOAD_DTCM_BSS_SIZE		= SDK_AUTOLOAD.DTCM.BSS_SIZE;
460
461	############################ AUTOLOAD_INFO ##########################
462	.binary.AUTOLOAD_INFO:
463	{
464		WRITEW ADDR(.ITCM);
465		WRITEW SDK_AUTOLOAD.ITCM.SIZE;
466		WRITEW SDK_AUTOLOAD.ITCM.BSS_SIZE;
467		WRITEW ADDR(.DTCM);
468		WRITEW SDK_AUTOLOAD.DTCM.SIZE;
469		WRITEW SDK_AUTOLOAD.DTCM.BSS_SIZE;
470	} > binary.AUTOLOAD_INFO
471
472	SDK_AUTOLOAD_LIST			= SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE;
473	SDK_AUTOLOAD_LIST_END			= SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO);
474	SDK_AUTOLOAD_SIZE			= SDK_AUTOLOAD_SIZE  + SIZEOF(.binary.AUTOLOAD_INFO);
475
476	############################ STATIC_FOOTER ##########################
477	.binary.STATIC_FOOTER:
478	{
479		WRITEW 0xdec00621;		# LE(0x2106C0DE) = NITRO CODE
480		WRITEW _start_ModuleParams - ADDR(.main);
481		WRITEW 0;			# NO DIGEST
482	} > binary.STATIC_FOOTER
483
484	############################ OVERLAYS ###############################
485	SDK_OVERLAY_NUMBER			= 7;
486
487	.main_overlay_1:
488	{
489	ALIGNALL(4);				. = ALIGN(32);
490
491	#
492	#   TEXT BLOCK: READ ONLY
493	#
494	SDK_OVERLAY_main_overlay_1_ID		=0;	### SEGMENT main_overlay_1 OVERLAY ID
495	SDK_OVERLAY.main_overlay_1.ID		=0;
496	SDK_OVERLAY.main_overlay_1.START	=.;
497	SDK_OVERLAY.main_overlay_1.TEXT_START	=.;
498						#:::::::::: text/rodata
499						func_1.o (.text)
500						. = ALIGN(4);
501						func_1.o (.rodata)
502						. = ALIGN(4);
503						func_1.o (.init)
504						. = ALIGN(4);
505	SDK_OVERLAY.main_overlay_1.SINIT_START	=.;
506						#:::::::::: ctor
507						func_1.o (.ctor)
508						func_1.o (.sinit)
509						WRITEW	0;
510						#:::::::::: ctor
511	SDK_OVERLAY.main_overlay_1.SINIT_END	=.;
512
513						#:::::::::: text/rodata
514						. = ALIGN(32);
515	SDK_OVERLAY.main_overlay_1.TEXT_END	=.;
516
517	#
518	#  DATA BLOCK: READ WRITE
519	#
520	SDK_OVERLAY.main_overlay_1.DATA_START	=.;
521						#:::::::::: Data
522						func_1.o (.sdata)
523						. = ALIGN(4);
524						func_1.o (.data)
525						. = ALIGN(4);
526						#:::::::::: Data
527						. = ALIGN(32);
528	SDK_OVERLAY.main_overlay_1.DATA_END	=.;
529	SDK_OVERLAY.main_overlay_1.END		=.;
530
531	SDK_OVERLAY.main_overlay_1.TEXT_SIZE	= SDK_OVERLAY.main_overlay_1.TEXT_END - SDK_OVERLAY.main_overlay_1.TEXT_START;
532	SDK_OVERLAY.main_overlay_1.DATA_SIZE	= SDK_OVERLAY.main_overlay_1.DATA_END - SDK_OVERLAY.main_overlay_1.DATA_START;
533	SDK_OVERLAY.main_overlay_1.SIZE		= SDK_OVERLAY.main_overlay_1.END      - SDK_OVERLAY.main_overlay_1.START;
534
535	} > main_overlay_1
536
537	.main_overlay_1.bss:
538	{
539	ALIGNALL(4);				. = ALIGN(32);
540
541	#
542	#  BSS BLOCK
543	#
544	SDK_OVERLAY.main_overlay_1.BSS_START	= .;
545						#:::::::::: bss
546						func_1.o (.bss)
547						. = ALIGN(4);
548						func_1.o (.sbss)
549						. = ALIGN(4);
550						#:::::::::: bss
551						. = ALIGN(32);
552	SDK_OVERLAY.main_overlay_1.BSS_END	= .;
553
554	SDK_OVERLAY.main_overlay_1.BSS_SIZE	= SDK_OVERLAY.main_overlay_1.BSS_END - SDK_OVERLAY.main_overlay_1.BSS_START;
555
556	} >> main_overlay_1
557
558	.main_overlay_2:
559	{
560	ALIGNALL(4);				. = ALIGN(32);
561
562	#
563	#   TEXT BLOCK: READ ONLY
564	#
565	SDK_OVERLAY_main_overlay_2_ID		=1;	### SEGMENT main_overlay_2 OVERLAY ID
566	SDK_OVERLAY.main_overlay_2.ID		=1;
567	SDK_OVERLAY.main_overlay_2.START	=.;
568	SDK_OVERLAY.main_overlay_2.TEXT_START	=.;
569						#:::::::::: text/rodata
570						func_2.o (.text)
571						. = ALIGN(4);
572						func_2.o (.rodata)
573						. = ALIGN(4);
574						func_2.o (.init)
575						. = ALIGN(4);
576	SDK_OVERLAY.main_overlay_2.SINIT_START	=.;
577						#:::::::::: ctor
578						func_2.o (.ctor)
579						func_2.o (.sinit)
580						WRITEW	0;
581						#:::::::::: ctor
582	SDK_OVERLAY.main_overlay_2.SINIT_END	=.;
583
584						#:::::::::: text/rodata
585						. = ALIGN(32);
586	SDK_OVERLAY.main_overlay_2.TEXT_END	=.;
587
588	#
589	#  DATA BLOCK: READ WRITE
590	#
591	SDK_OVERLAY.main_overlay_2.DATA_START	=.;
592						#:::::::::: Data
593						func_2.o (.sdata)
594						. = ALIGN(4);
595						func_2.o (.data)
596						. = ALIGN(4);
597						#:::::::::: Data
598						. = ALIGN(32);
599	SDK_OVERLAY.main_overlay_2.DATA_END	=.;
600	SDK_OVERLAY.main_overlay_2.END		=.;
601
602	SDK_OVERLAY.main_overlay_2.TEXT_SIZE	= SDK_OVERLAY.main_overlay_2.TEXT_END - SDK_OVERLAY.main_overlay_2.TEXT_START;
603	SDK_OVERLAY.main_overlay_2.DATA_SIZE	= SDK_OVERLAY.main_overlay_2.DATA_END - SDK_OVERLAY.main_overlay_2.DATA_START;
604	SDK_OVERLAY.main_overlay_2.SIZE		= SDK_OVERLAY.main_overlay_2.END      - SDK_OVERLAY.main_overlay_2.START;
605
606	} > main_overlay_2
607
608	.main_overlay_2.bss:
609	{
610	ALIGNALL(4);				. = ALIGN(32);
611
612	#
613	#  BSS BLOCK
614	#
615	SDK_OVERLAY.main_overlay_2.BSS_START	= .;
616						#:::::::::: bss
617						func_2.o (.bss)
618						. = ALIGN(4);
619						func_2.o (.sbss)
620						. = ALIGN(4);
621						#:::::::::: bss
622						. = ALIGN(32);
623	SDK_OVERLAY.main_overlay_2.BSS_END	= .;
624
625	SDK_OVERLAY.main_overlay_2.BSS_SIZE	= SDK_OVERLAY.main_overlay_2.BSS_END - SDK_OVERLAY.main_overlay_2.BSS_START;
626
627	} >> main_overlay_2
628
629	.main_itcm_1:
630	{
631	ALIGNALL(4);				. = ALIGN(32);
632
633	#
634	#   TEXT BLOCK: READ ONLY
635	#
636	SDK_OVERLAY_main_itcm_1_ID		=2;	### SEGMENT main_itcm_1 OVERLAY ID
637	SDK_OVERLAY.main_itcm_1.ID		=2;
638	SDK_OVERLAY.main_itcm_1.START	=.;
639	SDK_OVERLAY.main_itcm_1.TEXT_START	=.;
640						#:::::::::: text/rodata
641						func_3.o (.text)
642						. = ALIGN(4);
643						func_3.o (.rodata)
644						. = ALIGN(4);
645						func_3.o (.init)
646						. = ALIGN(4);
647	SDK_OVERLAY.main_itcm_1.SINIT_START	=.;
648						#:::::::::: ctor
649						func_3.o (.ctor)
650						func_3.o (.sinit)
651						WRITEW	0;
652						#:::::::::: ctor
653	SDK_OVERLAY.main_itcm_1.SINIT_END	=.;
654
655						#:::::::::: text/rodata
656						. = ALIGN(32);
657	SDK_OVERLAY.main_itcm_1.TEXT_END	=.;
658
659	#
660	#  DATA BLOCK: READ WRITE
661	#
662	SDK_OVERLAY.main_itcm_1.DATA_START	=.;
663						#:::::::::: Data
664						func_3.o (.sdata)
665						. = ALIGN(4);
666						func_3.o (.data)
667						. = ALIGN(4);
668						#:::::::::: Data
669						. = ALIGN(32);
670	SDK_OVERLAY.main_itcm_1.DATA_END	=.;
671	SDK_OVERLAY.main_itcm_1.END		=.;
672
673	SDK_OVERLAY.main_itcm_1.TEXT_SIZE	= SDK_OVERLAY.main_itcm_1.TEXT_END - SDK_OVERLAY.main_itcm_1.TEXT_START;
674	SDK_OVERLAY.main_itcm_1.DATA_SIZE	= SDK_OVERLAY.main_itcm_1.DATA_END - SDK_OVERLAY.main_itcm_1.DATA_START;
675	SDK_OVERLAY.main_itcm_1.SIZE		= SDK_OVERLAY.main_itcm_1.END      - SDK_OVERLAY.main_itcm_1.START;
676
677	} > main_itcm_1
678
679	.main_itcm_1.bss:
680	{
681	ALIGNALL(4);				. = ALIGN(32);
682
683	#
684	#  BSS BLOCK
685	#
686	SDK_OVERLAY.main_itcm_1.BSS_START	= .;
687						#:::::::::: bss
688						func_3.o (.bss)
689						. = ALIGN(4);
690						func_3.o (.sbss)
691						. = ALIGN(4);
692						#:::::::::: bss
693						. = ALIGN(32);
694	SDK_OVERLAY.main_itcm_1.BSS_END	= .;
695
696	SDK_OVERLAY.main_itcm_1.BSS_SIZE	= SDK_OVERLAY.main_itcm_1.BSS_END - SDK_OVERLAY.main_itcm_1.BSS_START;
697
698	} >> main_itcm_1
699
700	.main_dtcm_1:
701	{
702	ALIGNALL(4);				. = ALIGN(32);
703
704	#
705	#   TEXT BLOCK: READ ONLY
706	#
707	SDK_OVERLAY_main_dtcm_1_ID		=3;	### SEGMENT main_dtcm_1 OVERLAY ID
708	SDK_OVERLAY.main_dtcm_1.ID		=3;
709	SDK_OVERLAY.main_dtcm_1.START	=.;
710	SDK_OVERLAY.main_dtcm_1.TEXT_START	=.;
711						#:::::::::: text/rodata
712						func_4.o (.text)
713						. = ALIGN(4);
714						func_4.o (.rodata)
715						. = ALIGN(4);
716						func_4.o (.init)
717						. = ALIGN(4);
718	SDK_OVERLAY.main_dtcm_1.SINIT_START	=.;
719						#:::::::::: ctor
720						func_4.o (.ctor)
721						func_4.o (.sinit)
722						WRITEW	0;
723						#:::::::::: ctor
724	SDK_OVERLAY.main_dtcm_1.SINIT_END	=.;
725
726						#:::::::::: text/rodata
727						. = ALIGN(32);
728	SDK_OVERLAY.main_dtcm_1.TEXT_END	=.;
729
730	#
731	#  DATA BLOCK: READ WRITE
732	#
733	SDK_OVERLAY.main_dtcm_1.DATA_START	=.;
734						#:::::::::: Data
735						func_4.o (.sdata)
736						. = ALIGN(4);
737						func_4.o (.data)
738						. = ALIGN(4);
739						#:::::::::: Data
740						. = ALIGN(32);
741	SDK_OVERLAY.main_dtcm_1.DATA_END	=.;
742	SDK_OVERLAY.main_dtcm_1.END		=.;
743
744	SDK_OVERLAY.main_dtcm_1.TEXT_SIZE	= SDK_OVERLAY.main_dtcm_1.TEXT_END - SDK_OVERLAY.main_dtcm_1.TEXT_START;
745	SDK_OVERLAY.main_dtcm_1.DATA_SIZE	= SDK_OVERLAY.main_dtcm_1.DATA_END - SDK_OVERLAY.main_dtcm_1.DATA_START;
746	SDK_OVERLAY.main_dtcm_1.SIZE		= SDK_OVERLAY.main_dtcm_1.END      - SDK_OVERLAY.main_dtcm_1.START;
747
748	} > main_dtcm_1
749
750	.main_dtcm_1.bss:
751	{
752	ALIGNALL(4);				. = ALIGN(32);
753
754	#
755	#  BSS BLOCK
756	#
757	SDK_OVERLAY.main_dtcm_1.BSS_START	= .;
758						#:::::::::: bss
759						func_4.o (.bss)
760						. = ALIGN(4);
761						func_4.o (.sbss)
762						. = ALIGN(4);
763						#:::::::::: bss
764						. = ALIGN(32);
765	SDK_OVERLAY.main_dtcm_1.BSS_END	= .;
766
767	SDK_OVERLAY.main_dtcm_1.BSS_SIZE	= SDK_OVERLAY.main_dtcm_1.BSS_END - SDK_OVERLAY.main_dtcm_1.BSS_START;
768
769	} >> main_dtcm_1
770
771	.main_dtcm_2:
772	{
773	ALIGNALL(4);				. = ALIGN(32);
774
775	#
776	#   TEXT BLOCK: READ ONLY
777	#
778	SDK_OVERLAY_main_dtcm_2_ID		=4;	### SEGMENT main_dtcm_2 OVERLAY ID
779	SDK_OVERLAY.main_dtcm_2.ID		=4;
780	SDK_OVERLAY.main_dtcm_2.START	=.;
781	SDK_OVERLAY.main_dtcm_2.TEXT_START	=.;
782						#:::::::::: text/rodata
783						func_5.o (.text)
784						. = ALIGN(4);
785						func_5.o (.rodata)
786						. = ALIGN(4);
787						func_5.o (.init)
788						. = ALIGN(4);
789	SDK_OVERLAY.main_dtcm_2.SINIT_START	=.;
790						#:::::::::: ctor
791						func_5.o (.ctor)
792						func_5.o (.sinit)
793						WRITEW	0;
794						#:::::::::: ctor
795	SDK_OVERLAY.main_dtcm_2.SINIT_END	=.;
796
797						#:::::::::: text/rodata
798						. = ALIGN(32);
799	SDK_OVERLAY.main_dtcm_2.TEXT_END	=.;
800
801	#
802	#  DATA BLOCK: READ WRITE
803	#
804	SDK_OVERLAY.main_dtcm_2.DATA_START	=.;
805						#:::::::::: Data
806						func_5.o (.sdata)
807						. = ALIGN(4);
808						func_5.o (.data)
809						. = ALIGN(4);
810						#:::::::::: Data
811						. = ALIGN(32);
812	SDK_OVERLAY.main_dtcm_2.DATA_END	=.;
813	SDK_OVERLAY.main_dtcm_2.END		=.;
814
815	SDK_OVERLAY.main_dtcm_2.TEXT_SIZE	= SDK_OVERLAY.main_dtcm_2.TEXT_END - SDK_OVERLAY.main_dtcm_2.TEXT_START;
816	SDK_OVERLAY.main_dtcm_2.DATA_SIZE	= SDK_OVERLAY.main_dtcm_2.DATA_END - SDK_OVERLAY.main_dtcm_2.DATA_START;
817	SDK_OVERLAY.main_dtcm_2.SIZE		= SDK_OVERLAY.main_dtcm_2.END      - SDK_OVERLAY.main_dtcm_2.START;
818
819	} > main_dtcm_2
820
821	.main_dtcm_2.bss:
822	{
823	ALIGNALL(4);				. = ALIGN(32);
824
825	#
826	#  BSS BLOCK
827	#
828	SDK_OVERLAY.main_dtcm_2.BSS_START	= .;
829						#:::::::::: bss
830						func_5.o (.bss)
831						. = ALIGN(4);
832						func_5.o (.sbss)
833						. = ALIGN(4);
834						#:::::::::: bss
835						. = ALIGN(32);
836	SDK_OVERLAY.main_dtcm_2.BSS_END	= .;
837
838	SDK_OVERLAY.main_dtcm_2.BSS_SIZE	= SDK_OVERLAY.main_dtcm_2.BSS_END - SDK_OVERLAY.main_dtcm_2.BSS_START;
839
840	} >> main_dtcm_2
841
842	.MAIN_EX:
843	{
844	ALIGNALL(4);				. = ALIGN(32);
845
846	#
847	#   TEXT BLOCK: READ ONLY
848	#
849	SDK_OVERLAY_MAIN_EX_ID		=5;	### SEGMENT MAIN_EX OVERLAY ID
850	SDK_OVERLAY.MAIN_EX.ID		=5;
851	SDK_OVERLAY.MAIN_EX.START	=.;
852	SDK_OVERLAY.MAIN_EX.TEXT_START	=.;
853						#:::::::::: text/rodata
854						ex_1.o (.text)
855						. = ALIGN(4);
856						ex_1.o (.rodata)
857						. = ALIGN(4);
858						ex_1.o (.init)
859						. = ALIGN(4);
860	SDK_OVERLAY.MAIN_EX.SINIT_START	=.;
861						#:::::::::: ctor
862						ex_1.o (.ctor)
863						ex_1.o (.sinit)
864						WRITEW	0;
865						#:::::::::: ctor
866	SDK_OVERLAY.MAIN_EX.SINIT_END	=.;
867
868						#:::::::::: text/rodata
869						. = ALIGN(32);
870	SDK_OVERLAY.MAIN_EX.TEXT_END	=.;
871
872	#
873	#  DATA BLOCK: READ WRITE
874	#
875	SDK_OVERLAY.MAIN_EX.DATA_START	=.;
876						#:::::::::: Data
877						ex_1.o (.sdata)
878						. = ALIGN(4);
879						ex_1.o (.data)
880						. = ALIGN(4);
881						#:::::::::: Data
882						. = ALIGN(32);
883	SDK_OVERLAY.MAIN_EX.DATA_END	=.;
884	SDK_OVERLAY.MAIN_EX.END		=.;
885
886	SDK_OVERLAY.MAIN_EX.TEXT_SIZE	= SDK_OVERLAY.MAIN_EX.TEXT_END - SDK_OVERLAY.MAIN_EX.TEXT_START;
887	SDK_OVERLAY.MAIN_EX.DATA_SIZE	= SDK_OVERLAY.MAIN_EX.DATA_END - SDK_OVERLAY.MAIN_EX.DATA_START;
888	SDK_OVERLAY.MAIN_EX.SIZE		= SDK_OVERLAY.MAIN_EX.END      - SDK_OVERLAY.MAIN_EX.START;
889
890	} > MAIN_EX
891
892	.MAIN_EX.bss:
893	{
894	ALIGNALL(4);				. = ALIGN(32);
895
896	#
897	#  BSS BLOCK
898	#
899	SDK_OVERLAY.MAIN_EX.BSS_START	= .;
900						#:::::::::: bss
901						ex_1.o (.bss)
902						. = ALIGN(4);
903						ex_1.o (.sbss)
904						. = ALIGN(4);
905						#:::::::::: bss
906						. = ALIGN(32);
907	SDK_OVERLAY.MAIN_EX.BSS_END	= .;
908
909	SDK_OVERLAY.MAIN_EX.BSS_SIZE	= SDK_OVERLAY.MAIN_EX.BSS_END - SDK_OVERLAY.MAIN_EX.BSS_START;
910
911	} >> MAIN_EX
912
913	.MAIN_EX_2:
914	{
915	ALIGNALL(4);				. = ALIGN(32);
916
917	#
918	#   TEXT BLOCK: READ ONLY
919	#
920	SDK_OVERLAY_MAIN_EX_2_ID		=6;	### SEGMENT MAIN_EX_2 OVERLAY ID
921	SDK_OVERLAY.MAIN_EX_2.ID		=6;
922	SDK_OVERLAY.MAIN_EX_2.START	=.;
923	SDK_OVERLAY.MAIN_EX_2.TEXT_START	=.;
924						#:::::::::: text/rodata
925						ex_2.o (.text)
926						. = ALIGN(4);
927						ex_2.o (.rodata)
928						. = ALIGN(4);
929						ex_2.o (.init)
930						. = ALIGN(4);
931	SDK_OVERLAY.MAIN_EX_2.SINIT_START	=.;
932						#:::::::::: ctor
933						ex_2.o (.ctor)
934						ex_2.o (.sinit)
935						WRITEW	0;
936						#:::::::::: ctor
937	SDK_OVERLAY.MAIN_EX_2.SINIT_END	=.;
938
939						#:::::::::: text/rodata
940						. = ALIGN(32);
941	SDK_OVERLAY.MAIN_EX_2.TEXT_END	=.;
942
943	#
944	#  DATA BLOCK: READ WRITE
945	#
946	SDK_OVERLAY.MAIN_EX_2.DATA_START	=.;
947						#:::::::::: Data
948						ex_2.o (.sdata)
949						. = ALIGN(4);
950						ex_2.o (.data)
951						. = ALIGN(4);
952						#:::::::::: Data
953						. = ALIGN(32);
954	SDK_OVERLAY.MAIN_EX_2.DATA_END	=.;
955	SDK_OVERLAY.MAIN_EX_2.END		=.;
956
957	SDK_OVERLAY.MAIN_EX_2.TEXT_SIZE	= SDK_OVERLAY.MAIN_EX_2.TEXT_END - SDK_OVERLAY.MAIN_EX_2.TEXT_START;
958	SDK_OVERLAY.MAIN_EX_2.DATA_SIZE	= SDK_OVERLAY.MAIN_EX_2.DATA_END - SDK_OVERLAY.MAIN_EX_2.DATA_START;
959	SDK_OVERLAY.MAIN_EX_2.SIZE		= SDK_OVERLAY.MAIN_EX_2.END      - SDK_OVERLAY.MAIN_EX_2.START;
960
961	} > MAIN_EX_2
962
963	.MAIN_EX_2.bss:
964	{
965	ALIGNALL(4);				. = ALIGN(32);
966
967	#
968	#  BSS BLOCK
969	#
970	SDK_OVERLAY.MAIN_EX_2.BSS_START	= .;
971						#:::::::::: bss
972						ex_2.o (.bss)
973						. = ALIGN(4);
974						ex_2.o (.sbss)
975						. = ALIGN(4);
976						#:::::::::: bss
977						. = ALIGN(32);
978	SDK_OVERLAY.MAIN_EX_2.BSS_END	= .;
979
980	SDK_OVERLAY.MAIN_EX_2.BSS_SIZE	= SDK_OVERLAY.MAIN_EX_2.BSS_END - SDK_OVERLAY.MAIN_EX_2.BSS_START;
981
982	} >> MAIN_EX_2
983
984
985	############################ MAIN EX ##################################
986	# MAIN EX Area
987	.dummy.MAIN_EX:
988	{
989		. = ALIGN(32);
990	} > dummy.MAIN_EX
991
992	############################ ARENA ##################################
993	.arena.MAIN:
994	{
995						. = ALIGN(32);
996		SDK_SECTION_ARENA_START		=.;
997	} > arena.MAIN
998
999	.arena.MAIN_EX:
1000	{
1001						. = ALIGN(32);
1002		SDK_SECTION_ARENA_EX_START	=.;
1003	} > arena.MAIN_EX
1004
1005	.arena.ITCM:
1006	{
1007						. = ALIGN(32);
1008		SDK_SECTION_ARENA_ITCM_START	=.;
1009	} > arena.ITCM
1010
1011	.arena.DTCM:
1012	{
1013						. = ALIGN(32);
1014		SDK_SECTION_ARENA_DTCM_START	=.;
1015	} > arena.DTCM
1016
1017	############################ OVERLAYDEFS ############################
1018	.main_defs:
1019	{
1020		###  main module information
1021		WRITEW ADDR(.main);			# Load address
1022		WRITEW _start;					# Entry address
1023		WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE;	# Size of module
1024		WRITEW _start_AutoloadDoneCallback;		# Callback autoload done
1025
1026		###  overlay filename
1027		WRITES ("main_overlay_1.sbin");	# Overlay 0
1028		WRITES ("main_overlay_2.sbin");	# Overlay 1
1029		WRITES ("main_itcm_1.sbin");	# Overlay 2
1030		WRITES ("main_dtcm_1.sbin");	# Overlay 3
1031		WRITES ("main_dtcm_2.sbin");	# Overlay 4
1032		WRITES ("MAIN_EX.sbin");	# Overlay 5
1033		WRITES ("MAIN_EX_2.sbin");	# Overlay 6
1034
1035	} > main_defs
1036
1037
1038	############################ OVERLAYTABLE ###########################
1039	.main_table:
1040	{
1041		#	 Overlay 0
1042		WRITEW 0;				# Overlay ID
1043		WRITEW ADDR(.main_overlay_1);			# Load address
1044		WRITEW SDK_OVERLAY.main_overlay_1.SIZE;		# Size of module
1045		WRITEW SDK_OVERLAY.main_overlay_1.BSS_SIZE;	# Size of bss
1046		WRITEW SDK_OVERLAY.main_overlay_1.SINIT_START;	# Start address of static init
1047		WRITEW SDK_OVERLAY.main_overlay_1.SINIT_END;	# End address of static init
1048		WRITEW 0;				# ROM file ID
1049		WRITEW 0;					# Reserved
1050
1051		#	 Overlay 1
1052		WRITEW 1;				# Overlay ID
1053		WRITEW ADDR(.main_overlay_2);			# Load address
1054		WRITEW SDK_OVERLAY.main_overlay_2.SIZE;		# Size of module
1055		WRITEW SDK_OVERLAY.main_overlay_2.BSS_SIZE;	# Size of bss
1056		WRITEW SDK_OVERLAY.main_overlay_2.SINIT_START;	# Start address of static init
1057		WRITEW SDK_OVERLAY.main_overlay_2.SINIT_END;	# End address of static init
1058		WRITEW 1;				# ROM file ID
1059		WRITEW 0;					# Reserved
1060
1061		#	 Overlay 2
1062		WRITEW 2;				# Overlay ID
1063		WRITEW ADDR(.main_itcm_1);			# Load address
1064		WRITEW SDK_OVERLAY.main_itcm_1.SIZE;		# Size of module
1065		WRITEW SDK_OVERLAY.main_itcm_1.BSS_SIZE;	# Size of bss
1066		WRITEW SDK_OVERLAY.main_itcm_1.SINIT_START;	# Start address of static init
1067		WRITEW SDK_OVERLAY.main_itcm_1.SINIT_END;	# End address of static init
1068		WRITEW 2;				# ROM file ID
1069		WRITEW 0;					# Reserved
1070
1071		#	 Overlay 3
1072		WRITEW 3;				# Overlay ID
1073		WRITEW ADDR(.main_dtcm_1);			# Load address
1074		WRITEW SDK_OVERLAY.main_dtcm_1.SIZE;		# Size of module
1075		WRITEW SDK_OVERLAY.main_dtcm_1.BSS_SIZE;	# Size of bss
1076		WRITEW SDK_OVERLAY.main_dtcm_1.SINIT_START;	# Start address of static init
1077		WRITEW SDK_OVERLAY.main_dtcm_1.SINIT_END;	# End address of static init
1078		WRITEW 3;				# ROM file ID
1079		WRITEW 0;					# Reserved
1080
1081		#	 Overlay 4
1082		WRITEW 4;				# Overlay ID
1083		WRITEW ADDR(.main_dtcm_2);			# Load address
1084		WRITEW SDK_OVERLAY.main_dtcm_2.SIZE;		# Size of module
1085		WRITEW SDK_OVERLAY.main_dtcm_2.BSS_SIZE;	# Size of bss
1086		WRITEW SDK_OVERLAY.main_dtcm_2.SINIT_START;	# Start address of static init
1087		WRITEW SDK_OVERLAY.main_dtcm_2.SINIT_END;	# End address of static init
1088		WRITEW 4;				# ROM file ID
1089		WRITEW 0;					# Reserved
1090
1091		#	 Overlay 5
1092		WRITEW 5;				# Overlay ID
1093		WRITEW ADDR(.MAIN_EX);			# Load address
1094		WRITEW SDK_OVERLAY.MAIN_EX.SIZE;		# Size of module
1095		WRITEW SDK_OVERLAY.MAIN_EX.BSS_SIZE;	# Size of bss
1096		WRITEW SDK_OVERLAY.MAIN_EX.SINIT_START;	# Start address of static init
1097		WRITEW SDK_OVERLAY.MAIN_EX.SINIT_END;	# End address of static init
1098		WRITEW 5;				# ROM file ID
1099		WRITEW 0;					# Reserved
1100
1101		#	 Overlay 6
1102		WRITEW 6;				# Overlay ID
1103		WRITEW ADDR(.MAIN_EX_2);			# Load address
1104		WRITEW SDK_OVERLAY.MAIN_EX_2.SIZE;		# Size of module
1105		WRITEW SDK_OVERLAY.MAIN_EX_2.BSS_SIZE;	# Size of bss
1106		WRITEW SDK_OVERLAY.MAIN_EX_2.SINIT_START;	# Start address of static init
1107		WRITEW SDK_OVERLAY.MAIN_EX_2.SINIT_END;	# End address of static init
1108		WRITEW 6;				# ROM file ID
1109		WRITEW 0;					# Reserved
1110
1111
1112	} > main_table
1113
1114
1115	############################ OTHERS #################################
1116	SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START;
1117	SDK_IRQ_STACKSIZE = 2048;	# Allocated in DTCM
1118	SDK_SYS_STACKSIZE = 0;		# When 0 means all remains of DTCM
1119
1120	# Module filelist
1121	.binary.MODULE_FILES:
1122	{
1123		WRITES ("main.sbin");
1124		WRITES ("main_defs.sbin");
1125		WRITES ("main_table.sbin");
1126	} > binary.MODULE_FILES
1127
1128	# ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM
1129	.check.ITCM:
1130	{
1131		. = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE;
1132	} > check.ITCM
1133
1134	SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1;
1135	.check.DTCM:
1136	{
1137		. = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE;
1138		. = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN;
1139	} > check.DTCM
1140
1141}
1142