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