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