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 ITCM (RWX) : ORIGIN = 0x01ff8000, LENGTH = 0x0 >> main.sbin 140 DTCM (RWX) : ORIGIN = 0x023e0000, LENGTH = 0x0 >> main.sbin 141 binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> main.sbin 142 binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> main.sbin 143 144 main_defs (RW) : ORIGIN = AFTER(main), LENGTH = 0x0 > main_defs.sbin 145 main_table (RW) : ORIGIN = AFTER(main), LENGTH = 0x0 > main_table.sbin 146 main_overlay_1 (RWXO): ORIGIN = AFTER(main), LENGTH = 0x0 > main_overlay_1.sbin 147 main_overlay_2 (RWXO): ORIGIN = AFTER(main), LENGTH = 0x0 > main_overlay_2.sbin 148 main_itcm_1 (RWXO): ORIGIN = AFTER(ITCM), LENGTH = 0x0 > main_itcm_1.sbin 149 main_dtcm_1 (RWXO): ORIGIN = AFTER(DTCM), LENGTH = 0x0 > main_dtcm_1.sbin 150 main_dtcm_2 (RWXO): ORIGIN = AFTER(DTCM), LENGTH = 0x0 > main_dtcm_2.sbin 151 MAIN_EX (RWXO): ORIGIN = 0x02400000, LENGTH = 0x0 > MAIN_EX.sbin 152 MAIN_EX_2 (RWXO): ORIGIN = AFTER(MAIN_EX), LENGTH = 0x0 > MAIN_EX_2.sbin 153 dummy.MAIN_EX (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 154 arena.MAIN (RW) : ORIGIN = AFTER(main,main_overlay_1,main_overlay_2), LENGTH = 0x0 155 arena.MAIN_EX (RW) : ORIGIN = AFTER(dummy.MAIN_EX,MAIN_EX,MAIN_EX_2), LENGTH = 0x0 156 arena.ITCM (RW) : ORIGIN = AFTER(ITCM,main_itcm_1), LENGTH = 0x0 157 arena.DTCM (RW) : ORIGIN = AFTER(DTCM,main_dtcm_1,main_dtcm_2), LENGTH = 0x0 158 binary.MODULE_FILES (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files 159 check.ITCM (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check 160 check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check 161} 162 163FORCE_ACTIVE 164{ 165 SVC_SoftReset 166} 167 168KEEP_SECTION 169{ 170 .sinit 171} 172 173SECTIONS 174{ 175 ############################ STATIC ################################# 176 .main: 177 { 178 ALIGNALL(4); . = ALIGN(32); # Fit to cache line 179 180 # 181 # TEXT BLOCK: READ ONLY 182 # 183 SDK_STATIC_START =.; 184 SDK_STATIC_TEXT_START =.; 185 #:::::::::: text/rodata 186 libsyscall.a (.text) 187 crt0.o (.text) 188 crt0.o (.rodata) 189 # 190 # Added .version section. 191 # The information included in this section will be needed for Lotcheck purposes. Be sure to leave it in this position. 192 # 193 # 194 * (.version) 195 OBJECT(NitroMain,*) 196 main_a.o (.text) 197 main_b.o (.text) 198 main_c.o (.text) 199 main_a.a (.text) 200 main_b.a (.text) 201 main_c.a (.text) 202 . = ALIGN(4); 203 * (.exception) 204 . = ALIGN(4); 205 SDK_STATIC_ETABLE_START =.; 206 EXCEPTION 207 SDK_STATIC_ETABLE_END =.; 208 . = ALIGN(4); 209 main_a.o (.init) 210 main_b.o (.init) 211 main_c.o (.init) 212 main_a.a (.init) 213 main_b.a (.init) 214 main_c.a (.init) 215 . = ALIGN(4); 216 main_a.o (.rodata) 217 main_b.o (.rodata) 218 main_c.o (.rodata) 219 main_a.a (.rodata) 220 main_b.a (.rodata) 221 main_c.a (.rodata) 222 . = ALIGN(4); 223 224 SDK_STATIC_SINIT_START =.; 225 #:::::::::: ctor 226 main_a.o (.ctor) 227 main_b.o (.ctor) 228 main_c.o (.ctor) 229 main_a.a (.ctor) 230 main_b.a (.ctor) 231 main_c.a (.ctor) 232 main_a.o (.sinit) 233 main_b.o (.sinit) 234 main_c.o (.sinit) 235 main_a.a (.sinit) 236 main_b.a (.sinit) 237 main_c.a (.sinit) 238 WRITEW 0; 239 #:::::::::: ctor 240 SDK_STATIC_SINIT_END =.; 241 242 #:::::::::: text/rodata 243 . = ALIGN(32); 244 SDK_STATIC_TEXT_END =.; 245 246 # 247 # DATA BLOCK: READ WRITE 248 # 249 SDK_STATIC_DATA_START =.; 250 #:::::::::: Data 251 main_a.o (.sdata) 252 main_b.o (.sdata) 253 main_c.o (.sdata) 254 main_a.a (.sdata) 255 main_b.a (.sdata) 256 main_c.a (.sdata) 257 . = ALIGN(4); 258 main_a.o (.data) 259 main_b.o (.data) 260 main_c.o (.data) 261 main_a.a (.data) 262 main_b.a (.data) 263 main_c.a (.data) 264 . = ALIGN(4); 265 SDK_OVERLAY_DIGEST =.; 266 # NO DIGEST 267 SDK_OVERLAY_DIGEST_END =.; 268 #:::::::::: Data 269 . = ALIGN(32); 270 SDK_STATIC_DATA_END =.; 271 SDK_STATIC_END =.; 272 273 SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; 274 SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; 275 SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; 276 __sinit__ = SDK_STATIC_SINIT_START; # For static initializer 277 __exception_table_start__ = SDK_STATIC_ETABLE_START; # For exception table 278 __exception_table_end__ = SDK_STATIC_ETABLE_END; # For exception table 279 } > main 280 281 .main.bss: 282 { 283 ALIGNALL(4); . = ALIGN(32); 284 285 # 286 # BSS BLOCK 287 # 288 SDK_STATIC_BSS_START =.; 289 #:::::::::: bss 290 main_a.o (.sbss) 291 main_b.o (.sbss) 292 main_c.o (.sbss) 293 main_a.a (.sbss) 294 main_b.a (.sbss) 295 main_c.a (.sbss) 296 . = ALIGN(4); 297 main_a.o (.bss) 298 main_b.o (.bss) 299 main_c.o (.bss) 300 main_a.a (.bss) 301 main_b.a (.bss) 302 main_c.a (.bss) 303 . = ALIGN(4); 304 #:::::::::: bss 305 . = ALIGN(32); 306 SDK_STATIC_BSS_END = .; 307 SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; 308 309 } >> main 310 311 312 ############################ AUTOLOADS ############################## 313 SDK_AUTOLOAD.ITCM.START = 0x01ff8000; 314 SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; 315 SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; 316 SDK_AUTOLOAD.ITCM.SIZE = 0; 317 SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; 318 SDK_AUTOLOAD.DTCM.START = 0x027e0000; 319 SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; 320 SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; 321 SDK_AUTOLOAD.DTCM.SIZE = 0; 322 SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; 323 SDK_AUTOLOAD_START = SDK_STATIC_END; 324 SDK_AUTOLOAD_SIZE = 0; 325 SDK_AUTOLOAD_NUMBER = 2; 326 327 .ITCM: 328 { 329 ALIGNALL(4); . = ALIGN(32); 330 331 # 332 # TEXT BLOCK: READ ONLY 333 # 334 SDK_AUTOLOAD_ITCM_ID =0; 335 SDK_AUTOLOAD.ITCM.ID =0; 336 SDK_AUTOLOAD.ITCM.START =.; 337 SDK_AUTOLOAD.ITCM.TEXT_START =.; 338 #:::::::::: text/rodata 339 . = ALIGN(4); 340 * (.itcm) 341 . = ALIGN(4); 342 . = ALIGN(4); 343 #:::::::::: text/rodata 344 SDK_AUTOLOAD.ITCM.TEXT_END =.; 345 346 # 347 # DATA BLOCK: READ WRITE BLOCK 348 # 349 SDK_AUTOLOAD.ITCM.DATA_START =.; 350 #:::::::::: Data 351 . = ALIGN(4); 352 . = ALIGN(4); 353 . = ALIGN(4); 354 #:::::::::: Data 355 . = ALIGN(32); 356 SDK_AUTOLOAD.ITCM.DATA_END =.; 357 SDK_AUTOLOAD.ITCM.END =.; 358 359 SDK_AUTOLOAD.ITCM.TEXT_SIZE = SDK_AUTOLOAD.ITCM.TEXT_END - SDK_AUTOLOAD.ITCM.TEXT_START; 360 SDK_AUTOLOAD.ITCM.DATA_SIZE = SDK_AUTOLOAD.ITCM.DATA_END - SDK_AUTOLOAD.ITCM.DATA_START; 361 SDK_AUTOLOAD.ITCM.SIZE = SDK_AUTOLOAD.ITCM.END - SDK_AUTOLOAD.ITCM.START; 362 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.ITCM.SIZE; 363 364 } > ITCM 365 366 .ITCM.bss: 367 { 368 ALIGNALL(4); . = ALIGN(32); 369 370 # 371 # BSS BLOCK 372 # 373 SDK_AUTOLOAD.ITCM.BSS_START = .; 374 #:::::::::: bss 375 . = ALIGN(4); 376 . = ALIGN(4); 377 . = ALIGN(4); 378 * (.itcm.bss) 379 . = ALIGN(4); 380 #:::::::::: bss 381 . = ALIGN(32); 382 SDK_AUTOLOAD.ITCM.BSS_END = .; 383 384 SDK_AUTOLOAD.ITCM.BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_END - SDK_AUTOLOAD.ITCM.BSS_START; 385 386 } >> ITCM 387 388 .DTCM: 389 { 390 ALIGNALL(4); . = ALIGN(32); 391 392 # 393 # TEXT BLOCK: READ ONLY 394 # 395 SDK_AUTOLOAD_DTCM_ID =1; 396 SDK_AUTOLOAD.DTCM.ID =1; 397 SDK_AUTOLOAD.DTCM.START =.; 398 SDK_AUTOLOAD.DTCM.TEXT_START =.; 399 #:::::::::: text/rodata 400 . = ALIGN(4); 401 . = ALIGN(4); 402 . = ALIGN(4); 403 #:::::::::: text/rodata 404 SDK_AUTOLOAD.DTCM.TEXT_END =.; 405 406 # 407 # DATA BLOCK: READ WRITE BLOCK 408 # 409 SDK_AUTOLOAD.DTCM.DATA_START =.; 410 #:::::::::: Data 411 . = ALIGN(4); 412 . = ALIGN(4); 413 * (.dtcm) 414 . = ALIGN(4); 415 #:::::::::: Data 416 . = ALIGN(32); 417 SDK_AUTOLOAD.DTCM.DATA_END =.; 418 SDK_AUTOLOAD.DTCM.END =.; 419 420 SDK_AUTOLOAD.DTCM.TEXT_SIZE = SDK_AUTOLOAD.DTCM.TEXT_END - SDK_AUTOLOAD.DTCM.TEXT_START; 421 SDK_AUTOLOAD.DTCM.DATA_SIZE = SDK_AUTOLOAD.DTCM.DATA_END - SDK_AUTOLOAD.DTCM.DATA_START; 422 SDK_AUTOLOAD.DTCM.SIZE = SDK_AUTOLOAD.DTCM.END - SDK_AUTOLOAD.DTCM.START; 423 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.DTCM.SIZE; 424 425 } > DTCM 426 427 .DTCM.bss: 428 { 429 ALIGNALL(4); . = ALIGN(32); 430 431 # 432 # BSS BLOCK 433 # 434 SDK_AUTOLOAD.DTCM.BSS_START = .; 435 #:::::::::: bss 436 . = ALIGN(4); 437 . = ALIGN(4); 438 * (.dtcm.bss) 439 . = ALIGN(4); 440 . = ALIGN(4); 441 #:::::::::: bss 442 . = ALIGN(32); 443 SDK_AUTOLOAD.DTCM.BSS_END = .; 444 445 SDK_AUTOLOAD.DTCM.BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_END - SDK_AUTOLOAD.DTCM.BSS_START; 446 447 } >> DTCM 448 449 450 SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; 451 SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; 452 SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; 453 SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; 454 SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; 455 SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; 456 SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; 457 SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; 458 SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; 459 SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; 460 461 ############################ AUTOLOAD_INFO ########################## 462 .binary.AUTOLOAD_INFO: 463 { 464 WRITEW ADDR(.ITCM); 465 WRITEW SDK_AUTOLOAD.ITCM.SIZE; 466 WRITEW SDK_AUTOLOAD.ITCM.BSS_SIZE; 467 WRITEW ADDR(.DTCM); 468 WRITEW SDK_AUTOLOAD.DTCM.SIZE; 469 WRITEW SDK_AUTOLOAD.DTCM.BSS_SIZE; 470 } > binary.AUTOLOAD_INFO 471 472 SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; 473 SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 474 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 475 476 ############################ STATIC_FOOTER ########################## 477 .binary.STATIC_FOOTER: 478 { 479 WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE 480 WRITEW _start_ModuleParams - ADDR(.main); 481 WRITEW 0; # NO DIGEST 482 } > binary.STATIC_FOOTER 483 484 ############################ OVERLAYS ############################### 485 SDK_OVERLAY_NUMBER = 7; 486 487 .main_overlay_1: 488 { 489 ALIGNALL(4); . = ALIGN(32); 490 491 # 492 # TEXT BLOCK: READ ONLY 493 # 494 SDK_OVERLAY_main_overlay_1_ID =0; ### SEGMENT main_overlay_1 OVERLAY ID 495 SDK_OVERLAY.main_overlay_1.ID =0; 496 SDK_OVERLAY.main_overlay_1.START =.; 497 SDK_OVERLAY.main_overlay_1.TEXT_START =.; 498 #:::::::::: text/rodata 499 func_1.o (.text) 500 . = ALIGN(4); 501 func_1.o (.rodata) 502 . = ALIGN(4); 503 func_1.o (.init) 504 . = ALIGN(4); 505 SDK_OVERLAY.main_overlay_1.SINIT_START =.; 506 #:::::::::: ctor 507 func_1.o (.ctor) 508 func_1.o (.sinit) 509 WRITEW 0; 510 #:::::::::: ctor 511 SDK_OVERLAY.main_overlay_1.SINIT_END =.; 512 513 #:::::::::: text/rodata 514 . = ALIGN(32); 515 SDK_OVERLAY.main_overlay_1.TEXT_END =.; 516 517 # 518 # DATA BLOCK: READ WRITE 519 # 520 SDK_OVERLAY.main_overlay_1.DATA_START =.; 521 #:::::::::: Data 522 func_1.o (.sdata) 523 . = ALIGN(4); 524 func_1.o (.data) 525 . = ALIGN(4); 526 #:::::::::: Data 527 . = ALIGN(32); 528 SDK_OVERLAY.main_overlay_1.DATA_END =.; 529 SDK_OVERLAY.main_overlay_1.END =.; 530 531 SDK_OVERLAY.main_overlay_1.TEXT_SIZE = SDK_OVERLAY.main_overlay_1.TEXT_END - SDK_OVERLAY.main_overlay_1.TEXT_START; 532 SDK_OVERLAY.main_overlay_1.DATA_SIZE = SDK_OVERLAY.main_overlay_1.DATA_END - SDK_OVERLAY.main_overlay_1.DATA_START; 533 SDK_OVERLAY.main_overlay_1.SIZE = SDK_OVERLAY.main_overlay_1.END - SDK_OVERLAY.main_overlay_1.START; 534 535 } > main_overlay_1 536 537 .main_overlay_1.bss: 538 { 539 ALIGNALL(4); . = ALIGN(32); 540 541 # 542 # BSS BLOCK 543 # 544 SDK_OVERLAY.main_overlay_1.BSS_START = .; 545 #:::::::::: bss 546 func_1.o (.bss) 547 . = ALIGN(4); 548 func_1.o (.sbss) 549 . = ALIGN(4); 550 #:::::::::: bss 551 . = ALIGN(32); 552 SDK_OVERLAY.main_overlay_1.BSS_END = .; 553 554 SDK_OVERLAY.main_overlay_1.BSS_SIZE = SDK_OVERLAY.main_overlay_1.BSS_END - SDK_OVERLAY.main_overlay_1.BSS_START; 555 556 } >> main_overlay_1 557 558 .main_overlay_2: 559 { 560 ALIGNALL(4); . = ALIGN(32); 561 562 # 563 # TEXT BLOCK: READ ONLY 564 # 565 SDK_OVERLAY_main_overlay_2_ID =1; ### SEGMENT main_overlay_2 OVERLAY ID 566 SDK_OVERLAY.main_overlay_2.ID =1; 567 SDK_OVERLAY.main_overlay_2.START =.; 568 SDK_OVERLAY.main_overlay_2.TEXT_START =.; 569 #:::::::::: text/rodata 570 func_2.o (.text) 571 . = ALIGN(4); 572 func_2.o (.rodata) 573 . = ALIGN(4); 574 func_2.o (.init) 575 . = ALIGN(4); 576 SDK_OVERLAY.main_overlay_2.SINIT_START =.; 577 #:::::::::: ctor 578 func_2.o (.ctor) 579 func_2.o (.sinit) 580 WRITEW 0; 581 #:::::::::: ctor 582 SDK_OVERLAY.main_overlay_2.SINIT_END =.; 583 584 #:::::::::: text/rodata 585 . = ALIGN(32); 586 SDK_OVERLAY.main_overlay_2.TEXT_END =.; 587 588 # 589 # DATA BLOCK: READ WRITE 590 # 591 SDK_OVERLAY.main_overlay_2.DATA_START =.; 592 #:::::::::: Data 593 func_2.o (.sdata) 594 . = ALIGN(4); 595 func_2.o (.data) 596 . = ALIGN(4); 597 #:::::::::: Data 598 . = ALIGN(32); 599 SDK_OVERLAY.main_overlay_2.DATA_END =.; 600 SDK_OVERLAY.main_overlay_2.END =.; 601 602 SDK_OVERLAY.main_overlay_2.TEXT_SIZE = SDK_OVERLAY.main_overlay_2.TEXT_END - SDK_OVERLAY.main_overlay_2.TEXT_START; 603 SDK_OVERLAY.main_overlay_2.DATA_SIZE = SDK_OVERLAY.main_overlay_2.DATA_END - SDK_OVERLAY.main_overlay_2.DATA_START; 604 SDK_OVERLAY.main_overlay_2.SIZE = SDK_OVERLAY.main_overlay_2.END - SDK_OVERLAY.main_overlay_2.START; 605 606 } > main_overlay_2 607 608 .main_overlay_2.bss: 609 { 610 ALIGNALL(4); . = ALIGN(32); 611 612 # 613 # BSS BLOCK 614 # 615 SDK_OVERLAY.main_overlay_2.BSS_START = .; 616 #:::::::::: bss 617 func_2.o (.bss) 618 . = ALIGN(4); 619 func_2.o (.sbss) 620 . = ALIGN(4); 621 #:::::::::: bss 622 . = ALIGN(32); 623 SDK_OVERLAY.main_overlay_2.BSS_END = .; 624 625 SDK_OVERLAY.main_overlay_2.BSS_SIZE = SDK_OVERLAY.main_overlay_2.BSS_END - SDK_OVERLAY.main_overlay_2.BSS_START; 626 627 } >> main_overlay_2 628 629 .main_itcm_1: 630 { 631 ALIGNALL(4); . = ALIGN(32); 632 633 # 634 # TEXT BLOCK: READ ONLY 635 # 636 SDK_OVERLAY_main_itcm_1_ID =2; ### SEGMENT main_itcm_1 OVERLAY ID 637 SDK_OVERLAY.main_itcm_1.ID =2; 638 SDK_OVERLAY.main_itcm_1.START =.; 639 SDK_OVERLAY.main_itcm_1.TEXT_START =.; 640 #:::::::::: text/rodata 641 func_3.o (.text) 642 . = ALIGN(4); 643 func_3.o (.rodata) 644 . = ALIGN(4); 645 func_3.o (.init) 646 . = ALIGN(4); 647 SDK_OVERLAY.main_itcm_1.SINIT_START =.; 648 #:::::::::: ctor 649 func_3.o (.ctor) 650 func_3.o (.sinit) 651 WRITEW 0; 652 #:::::::::: ctor 653 SDK_OVERLAY.main_itcm_1.SINIT_END =.; 654 655 #:::::::::: text/rodata 656 . = ALIGN(32); 657 SDK_OVERLAY.main_itcm_1.TEXT_END =.; 658 659 # 660 # DATA BLOCK: READ WRITE 661 # 662 SDK_OVERLAY.main_itcm_1.DATA_START =.; 663 #:::::::::: Data 664 func_3.o (.sdata) 665 . = ALIGN(4); 666 func_3.o (.data) 667 . = ALIGN(4); 668 #:::::::::: Data 669 . = ALIGN(32); 670 SDK_OVERLAY.main_itcm_1.DATA_END =.; 671 SDK_OVERLAY.main_itcm_1.END =.; 672 673 SDK_OVERLAY.main_itcm_1.TEXT_SIZE = SDK_OVERLAY.main_itcm_1.TEXT_END - SDK_OVERLAY.main_itcm_1.TEXT_START; 674 SDK_OVERLAY.main_itcm_1.DATA_SIZE = SDK_OVERLAY.main_itcm_1.DATA_END - SDK_OVERLAY.main_itcm_1.DATA_START; 675 SDK_OVERLAY.main_itcm_1.SIZE = SDK_OVERLAY.main_itcm_1.END - SDK_OVERLAY.main_itcm_1.START; 676 677 } > main_itcm_1 678 679 .main_itcm_1.bss: 680 { 681 ALIGNALL(4); . = ALIGN(32); 682 683 # 684 # BSS BLOCK 685 # 686 SDK_OVERLAY.main_itcm_1.BSS_START = .; 687 #:::::::::: bss 688 func_3.o (.bss) 689 . = ALIGN(4); 690 func_3.o (.sbss) 691 . = ALIGN(4); 692 #:::::::::: bss 693 . = ALIGN(32); 694 SDK_OVERLAY.main_itcm_1.BSS_END = .; 695 696 SDK_OVERLAY.main_itcm_1.BSS_SIZE = SDK_OVERLAY.main_itcm_1.BSS_END - SDK_OVERLAY.main_itcm_1.BSS_START; 697 698 } >> main_itcm_1 699 700 .main_dtcm_1: 701 { 702 ALIGNALL(4); . = ALIGN(32); 703 704 # 705 # TEXT BLOCK: READ ONLY 706 # 707 SDK_OVERLAY_main_dtcm_1_ID =3; ### SEGMENT main_dtcm_1 OVERLAY ID 708 SDK_OVERLAY.main_dtcm_1.ID =3; 709 SDK_OVERLAY.main_dtcm_1.START =.; 710 SDK_OVERLAY.main_dtcm_1.TEXT_START =.; 711 #:::::::::: text/rodata 712 func_4.o (.text) 713 . = ALIGN(4); 714 func_4.o (.rodata) 715 . = ALIGN(4); 716 func_4.o (.init) 717 . = ALIGN(4); 718 SDK_OVERLAY.main_dtcm_1.SINIT_START =.; 719 #:::::::::: ctor 720 func_4.o (.ctor) 721 func_4.o (.sinit) 722 WRITEW 0; 723 #:::::::::: ctor 724 SDK_OVERLAY.main_dtcm_1.SINIT_END =.; 725 726 #:::::::::: text/rodata 727 . = ALIGN(32); 728 SDK_OVERLAY.main_dtcm_1.TEXT_END =.; 729 730 # 731 # DATA BLOCK: READ WRITE 732 # 733 SDK_OVERLAY.main_dtcm_1.DATA_START =.; 734 #:::::::::: Data 735 func_4.o (.sdata) 736 . = ALIGN(4); 737 func_4.o (.data) 738 . = ALIGN(4); 739 #:::::::::: Data 740 . = ALIGN(32); 741 SDK_OVERLAY.main_dtcm_1.DATA_END =.; 742 SDK_OVERLAY.main_dtcm_1.END =.; 743 744 SDK_OVERLAY.main_dtcm_1.TEXT_SIZE = SDK_OVERLAY.main_dtcm_1.TEXT_END - SDK_OVERLAY.main_dtcm_1.TEXT_START; 745 SDK_OVERLAY.main_dtcm_1.DATA_SIZE = SDK_OVERLAY.main_dtcm_1.DATA_END - SDK_OVERLAY.main_dtcm_1.DATA_START; 746 SDK_OVERLAY.main_dtcm_1.SIZE = SDK_OVERLAY.main_dtcm_1.END - SDK_OVERLAY.main_dtcm_1.START; 747 748 } > main_dtcm_1 749 750 .main_dtcm_1.bss: 751 { 752 ALIGNALL(4); . = ALIGN(32); 753 754 # 755 # BSS BLOCK 756 # 757 SDK_OVERLAY.main_dtcm_1.BSS_START = .; 758 #:::::::::: bss 759 func_4.o (.bss) 760 . = ALIGN(4); 761 func_4.o (.sbss) 762 . = ALIGN(4); 763 #:::::::::: bss 764 . = ALIGN(32); 765 SDK_OVERLAY.main_dtcm_1.BSS_END = .; 766 767 SDK_OVERLAY.main_dtcm_1.BSS_SIZE = SDK_OVERLAY.main_dtcm_1.BSS_END - SDK_OVERLAY.main_dtcm_1.BSS_START; 768 769 } >> main_dtcm_1 770 771 .main_dtcm_2: 772 { 773 ALIGNALL(4); . = ALIGN(32); 774 775 # 776 # TEXT BLOCK: READ ONLY 777 # 778 SDK_OVERLAY_main_dtcm_2_ID =4; ### SEGMENT main_dtcm_2 OVERLAY ID 779 SDK_OVERLAY.main_dtcm_2.ID =4; 780 SDK_OVERLAY.main_dtcm_2.START =.; 781 SDK_OVERLAY.main_dtcm_2.TEXT_START =.; 782 #:::::::::: text/rodata 783 func_5.o (.text) 784 . = ALIGN(4); 785 func_5.o (.rodata) 786 . = ALIGN(4); 787 func_5.o (.init) 788 . = ALIGN(4); 789 SDK_OVERLAY.main_dtcm_2.SINIT_START =.; 790 #:::::::::: ctor 791 func_5.o (.ctor) 792 func_5.o (.sinit) 793 WRITEW 0; 794 #:::::::::: ctor 795 SDK_OVERLAY.main_dtcm_2.SINIT_END =.; 796 797 #:::::::::: text/rodata 798 . = ALIGN(32); 799 SDK_OVERLAY.main_dtcm_2.TEXT_END =.; 800 801 # 802 # DATA BLOCK: READ WRITE 803 # 804 SDK_OVERLAY.main_dtcm_2.DATA_START =.; 805 #:::::::::: Data 806 func_5.o (.sdata) 807 . = ALIGN(4); 808 func_5.o (.data) 809 . = ALIGN(4); 810 #:::::::::: Data 811 . = ALIGN(32); 812 SDK_OVERLAY.main_dtcm_2.DATA_END =.; 813 SDK_OVERLAY.main_dtcm_2.END =.; 814 815 SDK_OVERLAY.main_dtcm_2.TEXT_SIZE = SDK_OVERLAY.main_dtcm_2.TEXT_END - SDK_OVERLAY.main_dtcm_2.TEXT_START; 816 SDK_OVERLAY.main_dtcm_2.DATA_SIZE = SDK_OVERLAY.main_dtcm_2.DATA_END - SDK_OVERLAY.main_dtcm_2.DATA_START; 817 SDK_OVERLAY.main_dtcm_2.SIZE = SDK_OVERLAY.main_dtcm_2.END - SDK_OVERLAY.main_dtcm_2.START; 818 819 } > main_dtcm_2 820 821 .main_dtcm_2.bss: 822 { 823 ALIGNALL(4); . = ALIGN(32); 824 825 # 826 # BSS BLOCK 827 # 828 SDK_OVERLAY.main_dtcm_2.BSS_START = .; 829 #:::::::::: bss 830 func_5.o (.bss) 831 . = ALIGN(4); 832 func_5.o (.sbss) 833 . = ALIGN(4); 834 #:::::::::: bss 835 . = ALIGN(32); 836 SDK_OVERLAY.main_dtcm_2.BSS_END = .; 837 838 SDK_OVERLAY.main_dtcm_2.BSS_SIZE = SDK_OVERLAY.main_dtcm_2.BSS_END - SDK_OVERLAY.main_dtcm_2.BSS_START; 839 840 } >> main_dtcm_2 841 842 .MAIN_EX: 843 { 844 ALIGNALL(4); . = ALIGN(32); 845 846 # 847 # TEXT BLOCK: READ ONLY 848 # 849 SDK_OVERLAY_MAIN_EX_ID =5; ### SEGMENT MAIN_EX OVERLAY ID 850 SDK_OVERLAY.MAIN_EX.ID =5; 851 SDK_OVERLAY.MAIN_EX.START =.; 852 SDK_OVERLAY.MAIN_EX.TEXT_START =.; 853 #:::::::::: text/rodata 854 ex_1.o (.text) 855 . = ALIGN(4); 856 ex_1.o (.rodata) 857 . = ALIGN(4); 858 ex_1.o (.init) 859 . = ALIGN(4); 860 SDK_OVERLAY.MAIN_EX.SINIT_START =.; 861 #:::::::::: ctor 862 ex_1.o (.ctor) 863 ex_1.o (.sinit) 864 WRITEW 0; 865 #:::::::::: ctor 866 SDK_OVERLAY.MAIN_EX.SINIT_END =.; 867 868 #:::::::::: text/rodata 869 . = ALIGN(32); 870 SDK_OVERLAY.MAIN_EX.TEXT_END =.; 871 872 # 873 # DATA BLOCK: READ WRITE 874 # 875 SDK_OVERLAY.MAIN_EX.DATA_START =.; 876 #:::::::::: Data 877 ex_1.o (.sdata) 878 . = ALIGN(4); 879 ex_1.o (.data) 880 . = ALIGN(4); 881 #:::::::::: Data 882 . = ALIGN(32); 883 SDK_OVERLAY.MAIN_EX.DATA_END =.; 884 SDK_OVERLAY.MAIN_EX.END =.; 885 886 SDK_OVERLAY.MAIN_EX.TEXT_SIZE = SDK_OVERLAY.MAIN_EX.TEXT_END - SDK_OVERLAY.MAIN_EX.TEXT_START; 887 SDK_OVERLAY.MAIN_EX.DATA_SIZE = SDK_OVERLAY.MAIN_EX.DATA_END - SDK_OVERLAY.MAIN_EX.DATA_START; 888 SDK_OVERLAY.MAIN_EX.SIZE = SDK_OVERLAY.MAIN_EX.END - SDK_OVERLAY.MAIN_EX.START; 889 890 } > MAIN_EX 891 892 .MAIN_EX.bss: 893 { 894 ALIGNALL(4); . = ALIGN(32); 895 896 # 897 # BSS BLOCK 898 # 899 SDK_OVERLAY.MAIN_EX.BSS_START = .; 900 #:::::::::: bss 901 ex_1.o (.bss) 902 . = ALIGN(4); 903 ex_1.o (.sbss) 904 . = ALIGN(4); 905 #:::::::::: bss 906 . = ALIGN(32); 907 SDK_OVERLAY.MAIN_EX.BSS_END = .; 908 909 SDK_OVERLAY.MAIN_EX.BSS_SIZE = SDK_OVERLAY.MAIN_EX.BSS_END - SDK_OVERLAY.MAIN_EX.BSS_START; 910 911 } >> MAIN_EX 912 913 .MAIN_EX_2: 914 { 915 ALIGNALL(4); . = ALIGN(32); 916 917 # 918 # TEXT BLOCK: READ ONLY 919 # 920 SDK_OVERLAY_MAIN_EX_2_ID =6; ### SEGMENT MAIN_EX_2 OVERLAY ID 921 SDK_OVERLAY.MAIN_EX_2.ID =6; 922 SDK_OVERLAY.MAIN_EX_2.START =.; 923 SDK_OVERLAY.MAIN_EX_2.TEXT_START =.; 924 #:::::::::: text/rodata 925 ex_2.o (.text) 926 . = ALIGN(4); 927 ex_2.o (.rodata) 928 . = ALIGN(4); 929 ex_2.o (.init) 930 . = ALIGN(4); 931 SDK_OVERLAY.MAIN_EX_2.SINIT_START =.; 932 #:::::::::: ctor 933 ex_2.o (.ctor) 934 ex_2.o (.sinit) 935 WRITEW 0; 936 #:::::::::: ctor 937 SDK_OVERLAY.MAIN_EX_2.SINIT_END =.; 938 939 #:::::::::: text/rodata 940 . = ALIGN(32); 941 SDK_OVERLAY.MAIN_EX_2.TEXT_END =.; 942 943 # 944 # DATA BLOCK: READ WRITE 945 # 946 SDK_OVERLAY.MAIN_EX_2.DATA_START =.; 947 #:::::::::: Data 948 ex_2.o (.sdata) 949 . = ALIGN(4); 950 ex_2.o (.data) 951 . = ALIGN(4); 952 #:::::::::: Data 953 . = ALIGN(32); 954 SDK_OVERLAY.MAIN_EX_2.DATA_END =.; 955 SDK_OVERLAY.MAIN_EX_2.END =.; 956 957 SDK_OVERLAY.MAIN_EX_2.TEXT_SIZE = SDK_OVERLAY.MAIN_EX_2.TEXT_END - SDK_OVERLAY.MAIN_EX_2.TEXT_START; 958 SDK_OVERLAY.MAIN_EX_2.DATA_SIZE = SDK_OVERLAY.MAIN_EX_2.DATA_END - SDK_OVERLAY.MAIN_EX_2.DATA_START; 959 SDK_OVERLAY.MAIN_EX_2.SIZE = SDK_OVERLAY.MAIN_EX_2.END - SDK_OVERLAY.MAIN_EX_2.START; 960 961 } > MAIN_EX_2 962 963 .MAIN_EX_2.bss: 964 { 965 ALIGNALL(4); . = ALIGN(32); 966 967 # 968 # BSS BLOCK 969 # 970 SDK_OVERLAY.MAIN_EX_2.BSS_START = .; 971 #:::::::::: bss 972 ex_2.o (.bss) 973 . = ALIGN(4); 974 ex_2.o (.sbss) 975 . = ALIGN(4); 976 #:::::::::: bss 977 . = ALIGN(32); 978 SDK_OVERLAY.MAIN_EX_2.BSS_END = .; 979 980 SDK_OVERLAY.MAIN_EX_2.BSS_SIZE = SDK_OVERLAY.MAIN_EX_2.BSS_END - SDK_OVERLAY.MAIN_EX_2.BSS_START; 981 982 } >> MAIN_EX_2 983 984 985 ############################ MAIN EX ################################## 986 # MAIN EX Area 987 .dummy.MAIN_EX: 988 { 989 . = ALIGN(32); 990 } > dummy.MAIN_EX 991 992 ############################ ARENA ################################## 993 .arena.MAIN: 994 { 995 . = ALIGN(32); 996 SDK_SECTION_ARENA_START =.; 997 } > arena.MAIN 998 999 .arena.MAIN_EX: 1000 { 1001 . = ALIGN(32); 1002 SDK_SECTION_ARENA_EX_START =.; 1003 } > arena.MAIN_EX 1004 1005 .arena.ITCM: 1006 { 1007 . = ALIGN(32); 1008 SDK_SECTION_ARENA_ITCM_START =.; 1009 } > arena.ITCM 1010 1011 .arena.DTCM: 1012 { 1013 . = ALIGN(32); 1014 SDK_SECTION_ARENA_DTCM_START =.; 1015 } > arena.DTCM 1016 1017 ############################ OVERLAYDEFS ############################ 1018 .main_defs: 1019 { 1020 ### main module information 1021 WRITEW ADDR(.main); # Load address 1022 WRITEW _start; # Entry address 1023 WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # Size of module 1024 WRITEW _start_AutoloadDoneCallback; # Callback autoload done 1025 1026 ### overlay filename 1027 WRITES ("main_overlay_1.sbin"); # Overlay 0 1028 WRITES ("main_overlay_2.sbin"); # Overlay 1 1029 WRITES ("main_itcm_1.sbin"); # Overlay 2 1030 WRITES ("main_dtcm_1.sbin"); # Overlay 3 1031 WRITES ("main_dtcm_2.sbin"); # Overlay 4 1032 WRITES ("MAIN_EX.sbin"); # Overlay 5 1033 WRITES ("MAIN_EX_2.sbin"); # Overlay 6 1034 1035 } > main_defs 1036 1037 1038 ############################ OVERLAYTABLE ########################### 1039 .main_table: 1040 { 1041 # Overlay 0 1042 WRITEW 0; # Overlay ID 1043 WRITEW ADDR(.main_overlay_1); # Load address 1044 WRITEW SDK_OVERLAY.main_overlay_1.SIZE; # Size of module 1045 WRITEW SDK_OVERLAY.main_overlay_1.BSS_SIZE; # Size of bss 1046 WRITEW SDK_OVERLAY.main_overlay_1.SINIT_START; # Start address of static init 1047 WRITEW SDK_OVERLAY.main_overlay_1.SINIT_END; # End address of static init 1048 WRITEW 0; # ROM file ID 1049 WRITEW 0; # Reserved 1050 1051 # Overlay 1 1052 WRITEW 1; # Overlay ID 1053 WRITEW ADDR(.main_overlay_2); # Load address 1054 WRITEW SDK_OVERLAY.main_overlay_2.SIZE; # Size of module 1055 WRITEW SDK_OVERLAY.main_overlay_2.BSS_SIZE; # Size of bss 1056 WRITEW SDK_OVERLAY.main_overlay_2.SINIT_START; # Start address of static init 1057 WRITEW SDK_OVERLAY.main_overlay_2.SINIT_END; # End address of static init 1058 WRITEW 1; # ROM file ID 1059 WRITEW 0; # Reserved 1060 1061 # Overlay 2 1062 WRITEW 2; # Overlay ID 1063 WRITEW ADDR(.main_itcm_1); # Load address 1064 WRITEW SDK_OVERLAY.main_itcm_1.SIZE; # Size of module 1065 WRITEW SDK_OVERLAY.main_itcm_1.BSS_SIZE; # Size of bss 1066 WRITEW SDK_OVERLAY.main_itcm_1.SINIT_START; # Start address of static init 1067 WRITEW SDK_OVERLAY.main_itcm_1.SINIT_END; # End address of static init 1068 WRITEW 2; # ROM file ID 1069 WRITEW 0; # Reserved 1070 1071 # Overlay 3 1072 WRITEW 3; # Overlay ID 1073 WRITEW ADDR(.main_dtcm_1); # Load address 1074 WRITEW SDK_OVERLAY.main_dtcm_1.SIZE; # Size of module 1075 WRITEW SDK_OVERLAY.main_dtcm_1.BSS_SIZE; # Size of bss 1076 WRITEW SDK_OVERLAY.main_dtcm_1.SINIT_START; # Start address of static init 1077 WRITEW SDK_OVERLAY.main_dtcm_1.SINIT_END; # End address of static init 1078 WRITEW 3; # ROM file ID 1079 WRITEW 0; # Reserved 1080 1081 # Overlay 4 1082 WRITEW 4; # Overlay ID 1083 WRITEW ADDR(.main_dtcm_2); # Load address 1084 WRITEW SDK_OVERLAY.main_dtcm_2.SIZE; # Size of module 1085 WRITEW SDK_OVERLAY.main_dtcm_2.BSS_SIZE; # Size of bss 1086 WRITEW SDK_OVERLAY.main_dtcm_2.SINIT_START; # Start address of static init 1087 WRITEW SDK_OVERLAY.main_dtcm_2.SINIT_END; # End address of static init 1088 WRITEW 4; # ROM file ID 1089 WRITEW 0; # Reserved 1090 1091 # Overlay 5 1092 WRITEW 5; # Overlay ID 1093 WRITEW ADDR(.MAIN_EX); # Load address 1094 WRITEW SDK_OVERLAY.MAIN_EX.SIZE; # Size of module 1095 WRITEW SDK_OVERLAY.MAIN_EX.BSS_SIZE; # Size of bss 1096 WRITEW SDK_OVERLAY.MAIN_EX.SINIT_START; # Start address of static init 1097 WRITEW SDK_OVERLAY.MAIN_EX.SINIT_END; # End address of static init 1098 WRITEW 5; # ROM file ID 1099 WRITEW 0; # Reserved 1100 1101 # Overlay 6 1102 WRITEW 6; # Overlay ID 1103 WRITEW ADDR(.MAIN_EX_2); # Load address 1104 WRITEW SDK_OVERLAY.MAIN_EX_2.SIZE; # Size of module 1105 WRITEW SDK_OVERLAY.MAIN_EX_2.BSS_SIZE; # Size of bss 1106 WRITEW SDK_OVERLAY.MAIN_EX_2.SINIT_START; # Start address of static init 1107 WRITEW SDK_OVERLAY.MAIN_EX_2.SINIT_END; # End address of static init 1108 WRITEW 6; # ROM file ID 1109 WRITEW 0; # Reserved 1110 1111 1112 } > main_table 1113 1114 1115 ############################ OTHERS ################################# 1116 SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; 1117 SDK_IRQ_STACKSIZE = 2048; # Allocated in DTCM 1118 SDK_SYS_STACKSIZE = 0; # When 0 means all remains of DTCM 1119 1120 # Module filelist 1121 .binary.MODULE_FILES: 1122 { 1123 WRITES ("main.sbin"); 1124 WRITES ("main_defs.sbin"); 1125 WRITES ("main_table.sbin"); 1126 } > binary.MODULE_FILES 1127 1128 # ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM 1129 .check.ITCM: 1130 { 1131 . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; 1132 } > check.ITCM 1133 1134 SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; 1135 .check.DTCM: 1136 { 1137 . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; 1138 . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 1139 } > check.DTCM 1140 1141} 1142