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