1#--------------------------------------------------------------------------- 2# Project: NitroSDK - tools - makelcf 3# File: ARM9-TS-C.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-C.lcf.template,v $ 14# Revision 1.3 2006/07/20 07:29:12 kitase_hirotake 15# Added the description explaining the version section 16# 17# Revision 1.2 2006/03/30 00:31:29 yasu 18# Revised NUMBER_OVERLAYS to NUMBER.OVERLAYS 19# 20# Revision 1.1 2005/09/05 01:38:31 yasu 21# Recorded template before editing tags 22# 23# Revision 1.11 2005/08/26 11:22:16 yasu 24# Overlay support for ITCM/DTCM 25# 26# Revision 1.10 2005/06/20 12:29:20 yasu 27# Changed Surffix to Suffix 28# 29# Revision 1.9 2005/06/14 09:03:42 yada 30# Fix specific to negative value of SDK_STACKSIZE 31# 32# Revision 1.8 2005/04/13 12:52:22 terui 33# Change SDK_AUTOLOAD_DTCM_START 0x027c0000 -> 0x027e0000 34# 35# Revision 1.7 2005/03/25 12:54:59 yasu 36# Added the .version section 37# 38# Revision 1.6 2005/01/14 03:35:32 yasu 39# Support sinit 40# 41# Revision 1.5 2004/11/05 04:23:32 yasu 42# Added OverlayTable digest 43# 44# Revision 1.4 2004/10/03 02:00:56 yasu 45# Output component file list for compstatic tool 46# 47# Revision 1.3 2004/09/09 11:49:20 yasu 48# Added support for compstatic in default 49# 50# Revision 1.2 2004/09/09 03:15:45 yasu 51# Fixed typo 52# 53# Revision 1.1 2004/09/01 07:49:39 yasu 54# Added support for NITRO_COMPRESS 55# 56# $NoKeywords: $ 57#--------------------------------------------------------------------------- 58MEMORY 59{ 60 <STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.SUFFIX> 61 <FOREACH.AUTOLOADS> 62 <AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 63 <END.AUTOLOADS> 64 AUTOLOAD_INFO__ (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 65 STATIC_FOOTER__ (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 66 67 <PROPERTY.OVERLAYDEFS> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX> 68 <PROPERTY.OVERLAYTABLE> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX> 69 <FOREACH.OVERLAYS> 70 <OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.SUFFIX> 71 <END.OVERLAYS> 72 MAIN_EX__ (RW) : ORIGIN = 0x02400000, LENGTH = 0x0 73 ARENA__ (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS=MAIN>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 74 ARENA_EX__ (RW) : ORIGIN = AFTER(MAIN_EX__<FOREACH.OVERLAYS=MAINEX>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 75 ARENA_ITCM__ (RW) : ORIGIN = AFTER(ITCM<FOREACH.OVERLAYS=ITCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 76 ARENA_DTCM__ (RW) : ORIGIN = AFTER(DTCM<FOREACH.OVERLAYS=DTCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 77 MODULE_FILES__ (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files 78 ITCM__ (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check 79 DTCM__ (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check 80} 81 82FORCE_ACTIVE 83{ 84 SVC_SoftReset 85} 86 87KEEP_SECTION 88{ 89 .sinit 90} 91 92SECTIONS 93{ 94 ############################ STATIC ################################# 95 .<STATIC.NAME>: 96 { 97 ALIGNALL(4); . = ALIGN(32); # Fit to cache line 98 99 # 100 # TEXT BLOCK: READ ONLY 101 # 102 SDK_STATIC_START =.; 103 SDK_STATIC_TEXT_START =.; 104 #:::::::::: text/rodata 105 libsyscall.a (.text) 106 crt0.o (.text) 107 crt0.o (.rodata) 108 # 109 # Added .version section. 110 # The information included in this section will be needed for Lotcheck purposes. Be sure to leave it in this position. 111 # 112 # 113 * (.version) 114 OBJECT(NitroMain,*) 115 <FOREACH.STATIC.OBJECTS=.text> 116 <STATIC.OBJECT=.text:t> 117 <END.STATIC.OBJECTS> 118 <FOREACH.STATIC.LIBRARIES=.text> 119 <STATIC.LIBRARY=.text:t> 120 <END.STATIC.LIBRARIES> 121 . = ALIGN(4); 122 * (.exception) 123 . = ALIGN(4); 124 SDK_STATIC_ETABLE_START =.; 125 EXCEPTION 126 SDK_STATIC_ETABLE_END =.; 127 . = ALIGN(4); 128 <FOREACH.STATIC.OBJECTS=.init> 129 <STATIC.OBJECT=.init:t> 130 <END.STATIC.OBJECTS> 131 <FOREACH.STATIC.LIBRARIES=.init> 132 <STATIC.LIBRARY=.init:t> 133 <END.STATIC.LIBRARIES> 134 . = ALIGN(4); 135 <FOREACH.STATIC.OBJECTS=.rodata> 136 <STATIC.OBJECT=.rodata:t> 137 <END.STATIC.OBJECTS> 138 <FOREACH.STATIC.LIBRARIES=.rodata> 139 <STATIC.LIBRARY=.rodata:t> 140 <END.STATIC.LIBRARIES> 141 . = ALIGN(4); 142 143 SDK_STATIC_SINIT_START =.; 144 #:::::::::: ctor 145 <FOREACH.STATIC.OBJECTS=.ctor> 146 <STATIC.OBJECT=.ctor:t> 147 <END.STATIC.OBJECTS> 148 <FOREACH.STATIC.LIBRARIES=.ctor> 149 <STATIC.LIBRARY=.ctor:t> 150 <END.STATIC.LIBRARIES> 151 <FOREACH.STATIC.OBJECTS=.sinit> 152 <STATIC.OBJECT=.sinit:t> 153 <END.STATIC.OBJECTS> 154 <FOREACH.STATIC.LIBRARIES=.sinit> 155 <STATIC.LIBRARY=.sinit:t> 156 <END.STATIC.LIBRARIES> 157 WRITEW 0; 158 #:::::::::: ctor 159 SDK_STATIC_SINIT_END =.; 160 161 #:::::::::: text/rodata 162 . = ALIGN(32); 163 SDK_STATIC_TEXT_END =.; 164 165 # 166 # DATA BLOCK: READ WRITE 167 # 168 SDK_STATIC_DATA_START =.; 169 #:::::::::: Data 170 <FOREACH.STATIC.OBJECTS=.sdata> 171 <STATIC.OBJECT=.sdata:t> 172 <END.STATIC.OBJECTS> 173 <FOREACH.STATIC.LIBRARIES=.sdata> 174 <STATIC.LIBRARY=.sdata:t> 175 <END.STATIC.LIBRARIES> 176 . = ALIGN(4); 177 <FOREACH.STATIC.OBJECTS=.data> 178 <STATIC.OBJECT=.data:t> 179 <END.STATIC.OBJECTS> 180 <FOREACH.STATIC.LIBRARIES=.data> 181 <STATIC.LIBRARY=.data:t> 182 <END.STATIC.LIBRARIES> 183 . = ALIGN(4); 184 185 SDK_OVERLAYTABLE_DIGEST =.; 186 . = . + 20; 187 SDK_OVERLAYTABLE_DIGEST_END =.; 188 SDK_OVERLAY_DIGEST =.; 189 . = . + <NUMBER.OVERLAYS> * 20; 190 SDK_OVERLAY_DIGEST_END =.; 191 192 #:::::::::: Data 193 . = ALIGN(32); 194 SDK_STATIC_DATA_END =.; 195 SDK_STATIC_END =.; 196 197 SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; 198 SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; 199 SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; 200 __sinit__ = SDK_STATIC_SINIT_START; # for static initializer 201 __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table 202 __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table 203 } > <STATIC.NAME> 204 205 .<STATIC.NAME>_bss: 206 { 207 ALIGNALL(4); . = ALIGN(32); 208 209 # 210 # BSS BLOCK 211 # 212 SDK_STATIC_BSS_START =.; 213 #:::::::::: bss 214 <FOREACH.STATIC.OBJECTS=.sbss> 215 <STATIC.OBJECT=.sbss:t> 216 <END.STATIC.OBJECTS> 217 <FOREACH.STATIC.LIBRARIES=.sbss> 218 <STATIC.LIBRARY=.sbss:t> 219 <END.STATIC.LIBRARIES> 220 . = ALIGN(4); 221 <FOREACH.STATIC.OBJECTS=.bss> 222 <STATIC.OBJECT=.bss:t> 223 <END.STATIC.OBJECTS> 224 <FOREACH.STATIC.LIBRARIES=.bss> 225 <STATIC.LIBRARY=.bss:t> 226 <END.STATIC.LIBRARIES> 227 . = ALIGN(4); 228 #:::::::::: bss 229 . = ALIGN(32); 230 SDK_STATIC_BSS_END = .; 231 SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; 232 233 } >> <STATIC.NAME> 234 235 236 ############################ AUTOLOADS ############################## 237 SDK_AUTOLOAD_ITCM_START = 0x01ff8000; 238 SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD_ITCM_START; 239 SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD_ITCM_START; 240 SDK_AUTOLOAD_DTCM_START = 0x027e0000; 241 SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD_DTCM_START; 242 SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD_DTCM_START; 243 SDK_AUTOLOAD_START = SDK_STATIC_END; 244 SDK_AUTOLOAD_SIZE = 0; 245 SDK_AUTOLOAD_NUMBER = <NUMBER.AUTOLOADS>; 246 247<FOREACH.AUTOLOADS> 248 .<AUTOLOAD.NAME>: 249 { 250 ALIGNALL(4); . = ALIGN(32); 251 252 # 253 # TEXT BLOCK: READ ONLY 254 # 255 SDK_AUTOLOAD_<AUTOLOAD.NAME>_ID =<AUTOLOAD.ID>; 256 SDK_AUTOLOAD_<AUTOLOAD.NAME>_START =.; 257 SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_START =.; 258 #:::::::::: text/rodata 259 <FOREACH.AUTOLOAD.OBJECTS=.text> 260 <AUTOLOAD.OBJECT=.text:t> 261 <END.AUTOLOAD.OBJECTS> 262 <FOREACH.AUTOLOAD.LIBRARIES=.text> 263 <AUTOLOAD.LIBRARY=.text:t> 264 <END.AUTOLOAD.LIBRARIES> 265 . = ALIGN(4); 266 <FOREACH.AUTOLOAD.OBJECTS=.itcm> 267 <AUTOLOAD.OBJECT=.itcm:t> 268 <END.AUTOLOAD.OBJECTS> 269 <FOREACH.AUTOLOAD.LIBRARIES=.itcm> 270 <AUTOLOAD.LIBRARY=.itcm:t> 271 <END.AUTOLOAD.LIBRARIES> 272 . = ALIGN(4); 273 <FOREACH.AUTOLOAD.OBJECTS=.rodata> 274 <AUTOLOAD.OBJECT=.rodata:t> 275 <END.AUTOLOAD.OBJECTS> 276 <FOREACH.AUTOLOAD.LIBRARIES=.rodata> 277 <AUTOLOAD.LIBRARY=.rodata:t> 278 <END.AUTOLOAD.LIBRARIES> 279 . = ALIGN(4); 280 #:::::::::: text/rodata 281 SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_END =.; 282 283 # 284 # DATA BLOCK: READ WRITE BLOCK 285 # 286 SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_START =.; 287 #:::::::::: Data 288 <FOREACH.AUTOLOAD.OBJECTS=.sdata> 289 <AUTOLOAD.OBJECT=.sdata:t> 290 <END.AUTOLOAD.OBJECTS> 291 <FOREACH.AUTOLOAD.LIBRARIES=.sdata> 292 <AUTOLOAD.LIBRARY=.sdata:t> 293 <END.AUTOLOAD.LIBRARIES> 294 . = ALIGN(4); 295 <FOREACH.AUTOLOAD.OBJECTS=.data> 296 <AUTOLOAD.OBJECT=.data:t> 297 <END.AUTOLOAD.OBJECTS> 298 <FOREACH.AUTOLOAD.LIBRARIES=.data> 299 <AUTOLOAD.LIBRARY=.data:t> 300 <END.AUTOLOAD.LIBRARIES> 301 . = ALIGN(4); 302 <FOREACH.AUTOLOAD.OBJECTS=.dtcm> 303 <AUTOLOAD.OBJECT=.dtcm:t> 304 <END.AUTOLOAD.OBJECTS> 305 <FOREACH.AUTOLOAD.LIBRARIES=.dtcm> 306 <AUTOLOAD.LIBRARY=.dtcm:t> 307 <END.AUTOLOAD.LIBRARIES> 308 . = ALIGN(4); 309 #:::::::::: Data 310 . = ALIGN(32); 311 SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_END =.; 312 SDK_AUTOLOAD_<AUTOLOAD.NAME>_END =.; 313 314 SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_START; 315 SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_START; 316 SDK_AUTOLOAD_<AUTOLOAD.NAME>_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_START; 317 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD_<AUTOLOAD.NAME>_SIZE; 318 319 } > <AUTOLOAD.NAME> 320 321 .<AUTOLOAD.NAME>_bss: 322 { 323 ALIGNALL(4); . = ALIGN(32); 324 325 # 326 # BSS BLOCK 327 # 328 SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_START = .; 329 #:::::::::: bss 330 <FOREACH.AUTOLOAD.OBJECTS=.sbss> 331 <AUTOLOAD.OBJECT=.sbss:t> 332 <END.AUTOLOAD.OBJECTS> 333 <FOREACH.AUTOLOAD.LIBRARIES=.sbss> 334 <AUTOLOAD.LIBRARY=.sbss:t> 335 <END.AUTOLOAD.LIBRARIES> 336 . = ALIGN(4); 337 <FOREACH.AUTOLOAD.OBJECTS=.bss> 338 <AUTOLOAD.OBJECT=.bss:t> 339 <END.AUTOLOAD.OBJECTS> 340 <FOREACH.AUTOLOAD.LIBRARIES=.bss> 341 <AUTOLOAD.LIBRARY=.bss:t> 342 <END.AUTOLOAD.LIBRARIES> 343 . = ALIGN(4); 344 #:::::::::: bss 345 . = ALIGN(32); 346 SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_END = .; 347 348 SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_START; 349 350 } >> <AUTOLOAD.NAME> 351 352<END.AUTOLOADS> 353 354 ############################ AUTOLOAD_INFO ########################## 355 .AUTOLOAD_INFO__: 356 { 357<FOREACH.AUTOLOADS> 358 WRITEW ADDR(.<AUTOLOAD.NAME>); 359 WRITEW SDK_AUTOLOAD_<AUTOLOAD.NAME>_SIZE; 360 WRITEW SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_SIZE; 361<END.AUTOLOADS> 362 } > AUTOLOAD_INFO__ 363 364 SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; 365 SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.AUTOLOAD_INFO__); 366 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.AUTOLOAD_INFO__); 367 368 ############################ STATIC_FOOTER ########################## 369 .STATIC_FOOTER__: 370 { 371 WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE 372 WRITEW _start_ModuleParams - ADDR(.<STATIC.NAME>); 373 WRITEW SDK_OVERLAY_DIGEST - ADDR(.<STATIC.NAME>); 374 } > STATIC_FOOTER__ 375 376 ############################ OVERLAYS ############################### 377 SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>; 378 379<FOREACH.OVERLAYS> 380 .<OVERLAY.NAME>: 381 { 382 ALIGNALL(4); . = ALIGN(32); 383 384 # 385 # TEXT BLOCK: READ ONLY 386 # 387 SDK_OVERLAY_<OVERLAY.NAME>_ID =<OVERLAY.ID>; ### SEGMENT <OVERLAY.NAME> OVERLAY ID 388 SDK_OVERLAY_<OVERLAY.NAME>_START =.; 389 SDK_OVERLAY_<OVERLAY.NAME>_TEXT_START =.; 390 #:::::::::: text/rodata 391 <FOREACH.OVERLAY.OBJECTS=.text> 392 <OVERLAY.OBJECT=.text:t> 393 <END.OVERLAY.OBJECTS> 394 <FOREACH.OVERLAY.LIBRARIES=.text> 395 <OVERLAY.LIBRARY=.text:t> 396 <END.OVERLAY.LIBRARIES> 397 . = ALIGN(4); 398 <FOREACH.OVERLAY.OBJECTS=.rodata> 399 <OVERLAY.OBJECT=.rodata:t> 400 <END.OVERLAY.OBJECTS> 401 <FOREACH.OVERLAY.LIBRARIES=.rodata> 402 <OVERLAY.LIBRARY=.rodata:t> 403 <END.OVERLAY.LIBRARIES> 404 . = ALIGN(4); 405 <FOREACH.OVERLAY.OBJECTS=.init> 406 <OVERLAY.OBJECT=.init:t> 407 <END.OVERLAY.OBJECTS> 408 <FOREACH.OVERLAY.LIBRARIES=.init> 409 <OVERLAY.LIBRARY=.init:t> 410 <END.OVERLAY.LIBRARIES> 411 . = ALIGN(4); 412 SDK_OVERLAY_<OVERLAY.NAME>_SINIT_START =.; 413 #:::::::::: ctor 414 <FOREACH.OVERLAY.OBJECTS=.ctor> 415 <OVERLAY.OBJECT=.ctor:t> 416 <END.OVERLAY.OBJECTS> 417 <FOREACH.OVERLAY.LIBRARIES=.ctor> 418 <OVERLAY.LIBRARY=.ctor:t> 419 <END.OVERLAY.LIBRARIES> 420 <FOREACH.OVERLAY.OBJECTS=.sinit> 421 <OVERLAY.OBJECT=.sinit:t> 422 <END.OVERLAY.OBJECTS> 423 <FOREACH.OVERLAY.LIBRARIES=.sinit> 424 <OVERLAY.LIBRARY=.sinit:t> 425 <END.OVERLAY.LIBRARIES> 426 WRITEW 0; 427 #:::::::::: ctor 428 SDK_OVERLAY_<OVERLAY.NAME>_SINIT_END =.; 429 430 #:::::::::: text/rodata 431 . = ALIGN(32); 432 SDK_OVERLAY_<OVERLAY.NAME>_TEXT_END =.; 433 434 # 435 # DATA BLOCK: READ WRITE 436 # 437 SDK_OVERLAY_<OVERLAY.NAME>_DATA_START =.; 438 #:::::::::: Data 439 <FOREACH.OVERLAY.OBJECTS=.sdata> 440 <OVERLAY.OBJECT=.sdata:t> 441 <END.OVERLAY.OBJECTS> 442 <FOREACH.OVERLAY.LIBRARIES=.sdata> 443 <OVERLAY.LIBRARY=.sdata:t> 444 <END.OVERLAY.LIBRARIES> 445 . = ALIGN(4); 446 <FOREACH.OVERLAY.OBJECTS=.data> 447 <OVERLAY.OBJECT=.data:t> 448 <END.OVERLAY.OBJECTS> 449 <FOREACH.OVERLAY.LIBRARIES=.data> 450 <OVERLAY.LIBRARY=.data:t> 451 <END.OVERLAY.LIBRARIES> 452 . = ALIGN(4); 453 #:::::::::: Data 454 . = ALIGN(32); 455 SDK_OVERLAY_<OVERLAY.NAME>_DATA_END =.; 456 SDK_OVERLAY_<OVERLAY.NAME>_END =.; 457 458 SDK_OVERLAY_<OVERLAY.NAME>_TEXT_SIZE = SDK_OVERLAY_<OVERLAY.NAME>_TEXT_END - SDK_OVERLAY_<OVERLAY.NAME>_TEXT_START; 459 SDK_OVERLAY_<OVERLAY.NAME>_DATA_SIZE = SDK_OVERLAY_<OVERLAY.NAME>_DATA_END - SDK_OVERLAY_<OVERLAY.NAME>_DATA_START; 460 SDK_OVERLAY_<OVERLAY.NAME>_SIZE = SDK_OVERLAY_<OVERLAY.NAME>_END - SDK_OVERLAY_<OVERLAY.NAME>_START; 461 462 } > <OVERLAY.NAME> 463 464 .<OVERLAY.NAME>_bss: 465 { 466 ALIGNALL(4); . = ALIGN(32); 467 468 # 469 # BSS BLOCK 470 # 471 SDK_OVERLAY_<OVERLAY.NAME>_BSS_START = .; 472 #:::::::::: bss 473 <FOREACH.OVERLAY.OBJECTS=.bss> 474 <OVERLAY.OBJECT=.bss:t> 475 <END.OVERLAY.OBJECTS> 476 <FOREACH.OVERLAY.LIBRARIES=.bss> 477 <OVERLAY.LIBRARY=.bss:t> 478 <END.OVERLAY.LIBRARIES> 479 . = ALIGN(4); 480 <FOREACH.OVERLAY.OBJECTS=.sbss> 481 <OVERLAY.OBJECT=.sbss:t> 482 <END.OVERLAY.OBJECTS> 483 <FOREACH.OVERLAY.LIBRARIES=.sbss> 484 <OVERLAY.LIBRARY=.sbss:t> 485 <END.OVERLAY.LIBRARIES> 486 . = ALIGN(4); 487 #:::::::::: bss 488 . = ALIGN(32); 489 SDK_OVERLAY_<OVERLAY.NAME>_BSS_END = .; 490 491 SDK_OVERLAY_<OVERLAY.NAME>_BSS_SIZE = SDK_OVERLAY_<OVERLAY.NAME>_BSS_END - SDK_OVERLAY_<OVERLAY.NAME>_BSS_START; 492 493 } >> <OVERLAY.NAME> 494 495<END.OVERLAYS> 496 497 ############################ MAIN EX ################################## 498 # MAIN EX Area 499 .MAIN_EX__: 500 { 501 . = ALIGN(32); 502 } > MAIN_EX__ 503 504 ############################ ARENA ################################## 505 .ARENA__: 506 { 507 . = ALIGN(32); 508 SDK_SECTION_ARENA_START =.; 509 } > ARENA__ 510 511 .ARENA_EX__: 512 { 513 . = ALIGN(32); 514 SDK_SECTION_ARENA_EX_START =.; 515 } > ARENA_EX__ 516 517 .ARENA_ITCM__: 518 { 519 . = ALIGN(32); 520 SDK_SECTION_ARENA_ITCM_START =.; 521 } > ARENA_ITCM__ 522 523 .ARENA_DTCM__: 524 { 525 . = ALIGN(32); 526 SDK_SECTION_ARENA_DTCM_START =.; 527 } > ARENA_DTCM__ 528 529 ############################ OVERLAYDEFS ############################ 530 .<PROPERTY.OVERLAYDEFS>: 531 { 532 ### <STATIC.NAME> module information 533 WRITEW ADDR(.<STATIC.NAME>); # Load address 534 WRITEW _start; # Entry address 535 WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # Size of module 536 WRITEW _start_AutoloadDoneCallback; # Callback autoload done 537 538 ### overlay filename 539 <FOREACH.OVERLAYS> 540 WRITES ("<OVERLAY.NAME><PROPERTY.SUFFIX>"); # Overlay <OVERLAY.ID> 541 <END.OVERLAYS> 542 543 } > <PROPERTY.OVERLAYDEFS> 544 545 546 ############################ OVERLAYTABLE ########################### 547 .<PROPERTY.OVERLAYTABLE>: 548 { 549 <FOREACH.OVERLAYS> 550 # Overlay <OVERLAY.ID> 551 WRITEW <OVERLAY.ID>; # Overlay ID 552 WRITEW ADDR(.<OVERLAY.NAME>); # Load address 553 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_SIZE; # Size of module 554 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_BSS_SIZE; # Size of bss 555 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_SINIT_START; # Start address of static init 556 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_SINIT_END; # End address of static init 557 WRITEW <OVERLAY.ID>; # ROM file ID 558 WRITEW 0; # Reserved 559 560 <END.OVERLAYS> 561 562 } > <PROPERTY.OVERLAYTABLE> 563 564 565 ############################ OTHERS ################################# 566 SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; 567 SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # Allocated in DTCM 568 SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # When 0 means all remains of DTCM 569 570 # Module filelist 571 .MODULE_FILES__: 572 { 573 WRITES ("<STATIC.NAME><PROPERTY.SUFFIX>"); 574 WRITES ("<PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>"); 575 WRITES ("<PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>"); 576 } > MODULE_FILES__ 577 578 # ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM 579 .ITCM__: 580 { 581 . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; 582<FOREACH.OVERLAYS=ITCM> 583 . = . + SDK_OVERLAY_<OVERLAY.NAME>_SIZE + SDK_OVERLAY_<OVERLAY.NAME>_BSS_SIZE; 584<END.OVERLAYS> 585 } > ITCM__ 586 587 SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; 588 .DTCM__: 589 { 590 . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; 591<FOREACH.OVERLAYS=DTCM> 592 . = . + SDK_OVERLAY_<OVERLAY.NAME>_SIZE + SDK_OVERLAY_<OVERLAY.NAME>_BSS_SIZE; 593<END.OVERLAYS> 594 . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 595 } > DTCM__ 596 597} 598