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 binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> main.sbin 140 binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> main.sbin 141 142 main_defs (RW) : ORIGIN = AFTER(main), LENGTH = 0x0 > main_defs.sbin 143 main_table (RW) : ORIGIN = AFTER(main), LENGTH = 0x0 > main_table.sbin 144 overlay_0 (RWXO): ORIGIN = 0x03f00000, LENGTH = 0x0 > overlay_0.sbin 145 overlay_1 (RWXO): ORIGIN = AFTER(main), LENGTH = 0x0 > overlay_1.sbin 146 overlay_2 (RWXO): ORIGIN = AFTER(overlay_1), LENGTH = 0x0 > overlay_2.sbin 147 dummy.MAIN_EX (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 148 arena.MAIN (RW) : ORIGIN = AFTER(main,overlay_1,overlay_2), LENGTH = 0x0 149 arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX), LENGTH = 0x0 150 arena.ITCM (RW) : ORIGIN = AFTER(ITCM), LENGTH = 0x0 151 arena.DTCM (RW) : ORIGIN = AFTER(DTCM), LENGTH = 0x0 152 binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files 153 check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check 154 check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check 155} 156 157FORCE_ACTIVE 158{ 159 SVC_SoftReset 160} 161 162KEEP_SECTION 163{ 164 .sinit 165} 166 167SECTIONS 168{ 169 ############################ STATIC ################################# 170 .main: 171 { 172 ALIGNALL(4); . = ALIGN(32); # Fit to cache line 173 174 # 175 # TEXT BLOCK: READ ONLY 176 # 177 SDK_STATIC_START =.; 178 SDK_STATIC_TEXT_START =.; 179 #:::::::::: text/rodata 180 libsyscall.a (.text) 181 crt0.o (.text) 182 crt0.o (.rodata) 183 # 184 # Added .version section. 185 # The information included in this section will be needed for Lotcheck purposes. Be sure to leave it in this position. 186 # 187 # 188 * (.version) 189 OBJECT(NitroMain,*) 190 *.o (.text) 191 . = ALIGN(4); 192 * (.exception) 193 . = ALIGN(4); 194 SDK_STATIC_ETABLE_START =.; 195 EXCEPTION 196 SDK_STATIC_ETABLE_END =.; 197 . = ALIGN(4); 198 . = ALIGN(4); 199 . = ALIGN(4); 200 201 SDK_STATIC_SINIT_START =.; 202 #:::::::::: ctor 203 *.axxx (.ctor) 204 WRITEW 0; 205 #:::::::::: ctor 206 SDK_STATIC_SINIT_END =.; 207 208 #:::::::::: text/rodata 209 . = ALIGN(32); 210 SDK_STATIC_TEXT_END =.; 211 212 # 213 # DATA BLOCK: READ WRITE 214 # 215 SDK_STATIC_DATA_START =.; 216 #:::::::::: Data 217 . = ALIGN(4); 218 . = ALIGN(4); 219 SDK_OVERLAY_DIGEST =.; 220 # NO DIGEST 221 SDK_OVERLAY_DIGEST_END =.; 222 #:::::::::: Data 223 . = ALIGN(32); 224 SDK_STATIC_DATA_END =.; 225 SDK_STATIC_END =.; 226 227 SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; 228 SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; 229 SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; 230 __sinit__ = SDK_STATIC_SINIT_START; # For static initializer 231 __exception_table_start__ = SDK_STATIC_ETABLE_START; # For exception table 232 __exception_table_end__ = SDK_STATIC_ETABLE_END; # For exception table 233 } > main 234 235 .main.bss: 236 { 237 ALIGNALL(4); . = ALIGN(32); 238 239 # 240 # BSS BLOCK 241 # 242 SDK_STATIC_BSS_START =.; 243 #:::::::::: bss 244 . = ALIGN(4); 245 . = ALIGN(4); 246 #:::::::::: bss 247 . = ALIGN(32); 248 SDK_STATIC_BSS_END = .; 249 SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; 250 251 } >> main 252 253 254 ############################ AUTOLOADS ############################## 255 SDK_AUTOLOAD.ITCM.START = 0x01ff8000; 256 SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; 257 SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; 258 SDK_AUTOLOAD.ITCM.SIZE = 0; 259 SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; 260 SDK_AUTOLOAD.DTCM.START = 0x027e0000; 261 SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; 262 SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; 263 SDK_AUTOLOAD.DTCM.SIZE = 0; 264 SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; 265 SDK_AUTOLOAD_START = SDK_STATIC_END; 266 SDK_AUTOLOAD_SIZE = 0; 267 SDK_AUTOLOAD_NUMBER = 0; 268 269 270 SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; 271 SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; 272 SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; 273 SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; 274 SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; 275 SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; 276 SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; 277 SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; 278 SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; 279 SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; 280 281 ############################ AUTOLOAD_INFO ########################## 282 .binary.AUTOLOAD_INFO: 283 { 284 } > binary.AUTOLOAD_INFO 285 286 SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; 287 SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 288 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 289 290 ############################ STATIC_FOOTER ########################## 291 .binary.STATIC_FOOTER: 292 { 293 WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE 294 WRITEW _start_ModuleParams - ADDR(.main); 295 WRITEW 0; # NO DIGEST 296 } > binary.STATIC_FOOTER 297 298 ############################ OVERLAYS ############################### 299 SDK_OVERLAY_NUMBER = 3; 300 301 .overlay_0: 302 { 303 ALIGNALL(4); . = ALIGN(32); 304 305 # 306 # TEXT BLOCK: READ ONLY 307 # 308 SDK_OVERLAY_overlay_0_ID =0; ### SEGMENT overlay_0 OVERLAY ID 309 SDK_OVERLAY.overlay_0.ID =0; 310 SDK_OVERLAY.overlay_0.START =.; 311 SDK_OVERLAY.overlay_0.TEXT_START =.; 312 #:::::::::: text/rodata 313 aaa.o (.text) 314 bbb.o (.text) 315 . = ALIGN(4); 316 aaa.o (.rodata) 317 bbb.o (.rodata) 318 . = ALIGN(4); 319 aaa.o (.init) 320 bbb.o (.init) 321 . = ALIGN(4); 322 SDK_OVERLAY.overlay_0.SINIT_START =.; 323 #:::::::::: ctor 324 aaa.o (.ctor) 325 bbb.o (.ctor) 326 aaa.o (.sinit) 327 bbb.o (.sinit) 328 WRITEW 0; 329 #:::::::::: ctor 330 SDK_OVERLAY.overlay_0.SINIT_END =.; 331 332 #:::::::::: text/rodata 333 . = ALIGN(32); 334 SDK_OVERLAY.overlay_0.TEXT_END =.; 335 336 # 337 # DATA BLOCK: READ WRITE 338 # 339 SDK_OVERLAY.overlay_0.DATA_START =.; 340 #:::::::::: Data 341 aaa.o (.sdata) 342 bbb.o (.sdata) 343 . = ALIGN(4); 344 aaa.o (.data) 345 bbb.o (.data) 346 . = ALIGN(4); 347 #:::::::::: Data 348 . = ALIGN(32); 349 SDK_OVERLAY.overlay_0.DATA_END =.; 350 SDK_OVERLAY.overlay_0.END =.; 351 352 SDK_OVERLAY.overlay_0.TEXT_SIZE = SDK_OVERLAY.overlay_0.TEXT_END - SDK_OVERLAY.overlay_0.TEXT_START; 353 SDK_OVERLAY.overlay_0.DATA_SIZE = SDK_OVERLAY.overlay_0.DATA_END - SDK_OVERLAY.overlay_0.DATA_START; 354 SDK_OVERLAY.overlay_0.SIZE = SDK_OVERLAY.overlay_0.END - SDK_OVERLAY.overlay_0.START; 355 356 } > overlay_0 357 358 .overlay_0.bss: 359 { 360 ALIGNALL(4); . = ALIGN(32); 361 362 # 363 # BSS BLOCK 364 # 365 SDK_OVERLAY.overlay_0.BSS_START = .; 366 #:::::::::: bss 367 aaa.o (.bss) 368 bbb.o (.bss) 369 . = ALIGN(4); 370 aaa.o (.sbss) 371 bbb.o (.sbss) 372 . = ALIGN(4); 373 #:::::::::: bss 374 . = ALIGN(32); 375 SDK_OVERLAY.overlay_0.BSS_END = .; 376 377 SDK_OVERLAY.overlay_0.BSS_SIZE = SDK_OVERLAY.overlay_0.BSS_END - SDK_OVERLAY.overlay_0.BSS_START; 378 379 } >> overlay_0 380 381 .overlay_1: 382 { 383 ALIGNALL(4); . = ALIGN(32); 384 385 # 386 # TEXT BLOCK: READ ONLY 387 # 388 SDK_OVERLAY_overlay_1_ID =1; ### SEGMENT overlay_1 OVERLAY ID 389 SDK_OVERLAY.overlay_1.ID =1; 390 SDK_OVERLAY.overlay_1.START =.; 391 SDK_OVERLAY.overlay_1.TEXT_START =.; 392 #:::::::::: text/rodata 393 ccc.o (.text) 394 ddd.o (.text) 395 . = ALIGN(4); 396 ccc.o (.rodata) 397 ddd.o (.rodata) 398 . = ALIGN(4); 399 ccc.o (.init) 400 ddd.o (.init) 401 . = ALIGN(4); 402 SDK_OVERLAY.overlay_1.SINIT_START =.; 403 #:::::::::: ctor 404 ccc.o (.ctor) 405 ddd.o (.ctor) 406 ccc.o (.sinit) 407 ddd.o (.sinit) 408 WRITEW 0; 409 #:::::::::: ctor 410 SDK_OVERLAY.overlay_1.SINIT_END =.; 411 412 #:::::::::: text/rodata 413 . = ALIGN(32); 414 SDK_OVERLAY.overlay_1.TEXT_END =.; 415 416 # 417 # DATA BLOCK: READ WRITE 418 # 419 SDK_OVERLAY.overlay_1.DATA_START =.; 420 #:::::::::: Data 421 ccc.o (.sdata) 422 ddd.o (.sdata) 423 . = ALIGN(4); 424 ccc.o (.data) 425 ddd.o (.data) 426 . = ALIGN(4); 427 #:::::::::: Data 428 . = ALIGN(32); 429 SDK_OVERLAY.overlay_1.DATA_END =.; 430 SDK_OVERLAY.overlay_1.END =.; 431 432 SDK_OVERLAY.overlay_1.TEXT_SIZE = SDK_OVERLAY.overlay_1.TEXT_END - SDK_OVERLAY.overlay_1.TEXT_START; 433 SDK_OVERLAY.overlay_1.DATA_SIZE = SDK_OVERLAY.overlay_1.DATA_END - SDK_OVERLAY.overlay_1.DATA_START; 434 SDK_OVERLAY.overlay_1.SIZE = SDK_OVERLAY.overlay_1.END - SDK_OVERLAY.overlay_1.START; 435 436 } > overlay_1 437 438 .overlay_1.bss: 439 { 440 ALIGNALL(4); . = ALIGN(32); 441 442 # 443 # BSS BLOCK 444 # 445 SDK_OVERLAY.overlay_1.BSS_START = .; 446 #:::::::::: bss 447 ccc.o (.bss) 448 ddd.o (.bss) 449 . = ALIGN(4); 450 ccc.o (.sbss) 451 ddd.o (.sbss) 452 . = ALIGN(4); 453 #:::::::::: bss 454 . = ALIGN(32); 455 SDK_OVERLAY.overlay_1.BSS_END = .; 456 457 SDK_OVERLAY.overlay_1.BSS_SIZE = SDK_OVERLAY.overlay_1.BSS_END - SDK_OVERLAY.overlay_1.BSS_START; 458 459 } >> overlay_1 460 461 .overlay_2: 462 { 463 ALIGNALL(4); . = ALIGN(32); 464 465 # 466 # TEXT BLOCK: READ ONLY 467 # 468 SDK_OVERLAY_overlay_2_ID =2; ### SEGMENT overlay_2 OVERLAY ID 469 SDK_OVERLAY.overlay_2.ID =2; 470 SDK_OVERLAY.overlay_2.START =.; 471 SDK_OVERLAY.overlay_2.TEXT_START =.; 472 #:::::::::: text/rodata 473 eee.o (.text) 474 fff.o (.text) 475 . = ALIGN(4); 476 eee.o (.rodata) 477 fff.o (.rodata) 478 . = ALIGN(4); 479 eee.o (.init) 480 fff.o (.init) 481 . = ALIGN(4); 482 SDK_OVERLAY.overlay_2.SINIT_START =.; 483 #:::::::::: ctor 484 eee.o (.ctor) 485 fff.o (.ctor) 486 eee.o (.sinit) 487 fff.o (.sinit) 488 WRITEW 0; 489 #:::::::::: ctor 490 SDK_OVERLAY.overlay_2.SINIT_END =.; 491 492 #:::::::::: text/rodata 493 . = ALIGN(32); 494 SDK_OVERLAY.overlay_2.TEXT_END =.; 495 496 # 497 # DATA BLOCK: READ WRITE 498 # 499 SDK_OVERLAY.overlay_2.DATA_START =.; 500 #:::::::::: Data 501 eee.o (.sdata) 502 fff.o (.sdata) 503 . = ALIGN(4); 504 eee.o (.data) 505 fff.o (.data) 506 . = ALIGN(4); 507 #:::::::::: Data 508 . = ALIGN(32); 509 SDK_OVERLAY.overlay_2.DATA_END =.; 510 SDK_OVERLAY.overlay_2.END =.; 511 512 SDK_OVERLAY.overlay_2.TEXT_SIZE = SDK_OVERLAY.overlay_2.TEXT_END - SDK_OVERLAY.overlay_2.TEXT_START; 513 SDK_OVERLAY.overlay_2.DATA_SIZE = SDK_OVERLAY.overlay_2.DATA_END - SDK_OVERLAY.overlay_2.DATA_START; 514 SDK_OVERLAY.overlay_2.SIZE = SDK_OVERLAY.overlay_2.END - SDK_OVERLAY.overlay_2.START; 515 516 } > overlay_2 517 518 .overlay_2.bss: 519 { 520 ALIGNALL(4); . = ALIGN(32); 521 522 # 523 # BSS BLOCK 524 # 525 SDK_OVERLAY.overlay_2.BSS_START = .; 526 #:::::::::: bss 527 eee.o (.bss) 528 fff.o (.bss) 529 . = ALIGN(4); 530 eee.o (.sbss) 531 fff.o (.sbss) 532 . = ALIGN(4); 533 #:::::::::: bss 534 . = ALIGN(32); 535 SDK_OVERLAY.overlay_2.BSS_END = .; 536 537 SDK_OVERLAY.overlay_2.BSS_SIZE = SDK_OVERLAY.overlay_2.BSS_END - SDK_OVERLAY.overlay_2.BSS_START; 538 539 } >> overlay_2 540 541 542 ############################ MAIN EX ################################## 543 # MAIN EX Area 544 .dummy.MAIN_EX: 545 { 546 . = ALIGN(32); 547 } > dummy.MAIN_EX 548 549 ############################ ARENA ################################## 550 .arena.MAIN: 551 { 552 . = ALIGN(32); 553 SDK_SECTION_ARENA_START =.; 554 } > arena.MAIN 555 556 .arena.MAIN_EX: 557 { 558 . = ALIGN(32); 559 SDK_SECTION_ARENA_EX_START =.; 560 } > arena.MAIN_EX 561 562 .arena.ITCM: 563 { 564 . = ALIGN(32); 565 SDK_SECTION_ARENA_ITCM_START =.; 566 } > arena.ITCM 567 568 .arena.DTCM: 569 { 570 . = ALIGN(32); 571 SDK_SECTION_ARENA_DTCM_START =.; 572 } > arena.DTCM 573 574 ############################ OVERLAYDEFS ############################ 575 .main_defs: 576 { 577 ### main module information 578 WRITEW ADDR(.main); # Load address 579 WRITEW _start; # Entry address 580 WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # Size of module 581 WRITEW _start_AutoloadDoneCallback; # Callback autoload done 582 583 ### overlay filename 584 WRITES ("overlay_0.sbin"); # Overlay 0 585 WRITES ("overlay_1.sbin"); # Overlay 1 586 WRITES ("overlay_2.sbin"); # Overlay 2 587 588 } > main_defs 589 590 591 ############################ OVERLAYTABLE ########################### 592 .main_table: 593 { 594 # Overlay 0 595 WRITEW 0; # Overlay ID 596 WRITEW ADDR(.overlay_0); # Load address 597 WRITEW SDK_OVERLAY.overlay_0.SIZE; # Size of module 598 WRITEW SDK_OVERLAY.overlay_0.BSS_SIZE; # Size of bss 599 WRITEW SDK_OVERLAY.overlay_0.SINIT_START; # Start address of static init 600 WRITEW SDK_OVERLAY.overlay_0.SINIT_END; # End address of static init 601 WRITEW 0; # ROM file ID 602 WRITEW 0; # Reserved 603 604 # Overlay 1 605 WRITEW 1; # Overlay ID 606 WRITEW ADDR(.overlay_1); # Load address 607 WRITEW SDK_OVERLAY.overlay_1.SIZE; # Size of module 608 WRITEW SDK_OVERLAY.overlay_1.BSS_SIZE; # Size of bss 609 WRITEW SDK_OVERLAY.overlay_1.SINIT_START; # Start address of static init 610 WRITEW SDK_OVERLAY.overlay_1.SINIT_END; # End address of static init 611 WRITEW 1; # ROM file ID 612 WRITEW 0; # Reserved 613 614 # Overlay 2 615 WRITEW 2; # Overlay ID 616 WRITEW ADDR(.overlay_2); # Load address 617 WRITEW SDK_OVERLAY.overlay_2.SIZE; # Size of module 618 WRITEW SDK_OVERLAY.overlay_2.BSS_SIZE; # Size of bss 619 WRITEW SDK_OVERLAY.overlay_2.SINIT_START; # Start address of static init 620 WRITEW SDK_OVERLAY.overlay_2.SINIT_END; # End address of static init 621 WRITEW 2; # ROM file ID 622 WRITEW 0; # Reserved 623 624 625 } > main_table 626 627 628 ############################ OTHERS ################################# 629 SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; 630 SDK_IRQ_STACKSIZE = 1024; # Allocated in DTCM 631 SDK_SYS_STACKSIZE = 8192; # When 0 means all remains of DTCM 632 633 # Module filelist 634 .binary.MODULE_FILES: 635 { 636 WRITES ("main.sbin"); 637 WRITES ("main_defs.sbin"); 638 WRITES ("main_table.sbin"); 639 } > binary.MODULE_FILES 640 641 # ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM 642 .check.ITCM: 643 { 644 . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; 645 } > check.ITCM 646 647 SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; 648 .check.DTCM: 649 { 650 . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; 651 . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 652 } > check.DTCM 653 654} 655