1#--------------------------------------------------------------------------- 2# Project: TwlSDK - include 3# File: ARM9-TS.lcf.template 4# 5# Copyright 2007-2009 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# $Date:: 2009-11-11#$ 14# $Rev: 11140 $ 15# $Author: kitase_hirotake $ 16#--------------------------------------------------------------------------- 17MEMORY 18{ 19 <STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.FLXSUFFIX> 20 21 <FOREACH.AUTOLOADS> 22 <AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX> 23 <END.AUTOLOADS> 24 binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX> 25 binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.FLXSUFFIX> 26 27 <PROPERTY.OVERLAYDEFS>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.FLXSUFFIX> 28 <PROPERTY.OVERLAYTABLE>F (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.FLXSUFFIX> 29 <FOREACH.OVERLAYS> 30 <OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.FLXSUFFIX> 31 <END.OVERLAYS> 32 33 dummy.MAIN_EX.NITRO (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 34 arena.MAIN.NITRO (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS=MAIN>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 35 arena.MAIN_EX.NITRO (RW) : ORIGIN = AFTER(dummy.MAIN_EX.NITRO<FOREACH.OVERLAYS=MAINEX>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 36 arena.ITCM (RW) : ORIGIN = AFTER(ITCM<FOREACH.OVERLAYS=ITCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 37 arena.DTCM (RW) : ORIGIN = AFTER(DTCM<FOREACH.OVERLAYS=DTCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 38 39 check.ITCM (RW) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check 40 check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check 41 42 binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.LTDSUFFIX> 43 <FOREACH.LTDAUTOLOADS> 44 <LTDAUTOLOAD.NAME> (RWX) : ORIGIN = <LTDAUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX> 45 <END.LTDAUTOLOADS> 46 binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.LTDSUFFIX> 47 48 <PROPERTY.LTDOVERLAYDEFS>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYDEFS><PROPERTY.LTDSUFFIX> 49 <PROPERTY.LTDOVERLAYTABLE>L (RW) : ORIGIN = 0, LENGTH = 0x0 > <PROPERTY.LTDOVERLAYTABLE><PROPERTY.LTDSUFFIX> 50 <FOREACH.LTDOVERLAYS> 51 <LTDOVERLAY.NAME> (RWXO): ORIGIN = <LTDOVERLAY.ADDRESS>, LENGTH = 0x0 > <LTDOVERLAY.NAME><PROPERTY.LTDSUFFIX> 52 <END.LTDOVERLAYS> 53 54 dummy.MAIN_EX.TWL (RW) : ORIGIN = 0x0d000000, LENGTH = 0x0 55 arena.MAIN.TWL (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS=MAIN>,<OVERLAY.NAME><END.OVERLAYS>,LTDMAIN<FOREACH.LTDOVERLAYS=MAIN>,<LTDOVERLAY.NAME><END.LTDOVERLAYS>), LENGTH = 0x0 56 arena.MAIN_EX.TWL (RW) : ORIGIN = AFTER(dummy.MAIN_EX.TWL,<STATIC.NAME><FOREACH.OVERLAYS=MAIN>,<OVERLAY.NAME><END.OVERLAYS>,LTDMAIN<FOREACH.LTDOVERLAYS=MAIN>,<LTDOVERLAY.NAME><END.LTDOVERLAYS><FOREACH.AUTOLOADS>,<AUTOLOAD.NAME><END.AUTOLOADS>), LENGTH = 0x0 57 58 binary.MODULE_FILES (RW) : ORIGIN = 0, LENGTH = 0x0 > component.files 59 binary.COMP_SPEC_LIST (RW) : ORIGIN = 0, LENGTH = 0x0 > compspec.list 60 COMMON__ (RW) : ORIGIN = 0x0, LENGTH = 0x01400 > common.check 61 PARENT__ (RW) : ORIGIN = 0x0, LENGTH = 0x02000 > parent.check 62} 63 64FORCE_ACTIVE 65{ 66 SVC_SoftReset 67} 68 69KEEP_SECTION 70{ 71 .sinit 72} 73 74SECTIONS 75{ 76 ############################ STATIC ################################# 77 .<STATIC.NAME>: 78 { 79 ALIGNALL(4); 80 . = ALIGN(32); # Fit to cache line 81 82 # 83 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 84 # 85 <FOREACH.STATIC.SEARCHSYMBOLS> 86 SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>; 87 <END.STATIC.SEARCHSYMBOLS> 88 89 # 90 # TEXT BLOCK: READ ONLY 91 # 92 SDK_STATIC_START =.; 93 SDK_STATIC_TEXT_START =.; 94 #:::::::::: text/rodata 95 96 #:: Common A ----- 5KB 97 SDK_STATIC_TEXT_COMMON_START =.; 98 libsyscall.a (.text) 99 OBJECT(_start,*) 100 <STATIC.CRT0.OBJECT=.text> 101 <STATIC.CRT0.OBJECT=.rodata> 102 # 103 # Added .version section. 104 # The information included in this section will be needed for Lotcheck purposes. Be sure to leave it in this position. 105 # 106 # 107 * (.version) 108 SDK_STATIC_TEXT_COMMON_END =.; 109 .= SDK_STATIC_START + 5 * 1024; 110 111 #:: Parent Only -- 8KB 112 SDK_STATIC_TEXT_PARENT_START =.; 113 # 114 # Collected .parent section code 115 # Notice that .bss, .data section code is not included! 116 * (.parent) 117 # 118 SDK_STATIC_TEXT_PARENT_END =.; 119 .= SDK_STATIC_START + 13 * 1024; 120 121 #:: Common B ----- 3KB + ... 122 OBJECT(TwlMain,*) 123 <FOREACH.STATIC.FORCES> 124 FORCE_OBJECT<STATIC.FORCE> 125 <END.STATIC.FORCES> 126 <FOREACH.STATIC.OBJECTS=.text> 127 <STATIC.OBJECT=.text:t> 128 <END.STATIC.OBJECTS> 129 <FOREACH.STATIC.LIBRARIES=.text> 130 <STATIC.LIBRARY=.text:t> 131 <END.STATIC.LIBRARIES> 132 * (.exception) 133 . = ALIGN(4); 134 SDK_STATIC_ETABLE_START =.; 135 __exception_table_start__ =.; 136 EXCEPTION 137 __exception_table_end__ =.; 138 SDK_STATIC_ETABLE_END =.; 139 <FOREACH.STATIC.OBJECTS=.rodata> 140 <STATIC.OBJECT=.rodata:t> 141 <END.STATIC.OBJECTS> 142 <FOREACH.STATIC.LIBRARIES=.rodata> 143 <STATIC.LIBRARY=.rodata:t> 144 <END.STATIC.LIBRARIES> 145 <FOREACH.STATIC.OBJECTS=.init> 146 <STATIC.OBJECT=.init:t> 147 <END.STATIC.OBJECTS> 148 <FOREACH.STATIC.LIBRARIES=.init> 149 <STATIC.LIBRARY=.init:t> 150 <END.STATIC.LIBRARIES> 151 . = ALIGN(4); 152 SDK_STATIC_SINIT_START =.; 153 #:::::::::: ctor 154 <FOREACH.STATIC.OBJECTS=.ctor> 155 <STATIC.OBJECT=.ctor:t> 156 <END.STATIC.OBJECTS> 157 <FOREACH.STATIC.LIBRARIES=.ctor> 158 <STATIC.LIBRARY=.ctor:t> 159 <END.STATIC.LIBRARIES> 160 <FOREACH.STATIC.OBJECTS=.sinit> 161 <STATIC.OBJECT=.sinit:t> 162 <END.STATIC.OBJECTS> 163 <FOREACH.STATIC.LIBRARIES=.sinit> 164 <STATIC.LIBRARY=.sinit:t> 165 <END.STATIC.LIBRARIES> 166 WRITEW 0; 167 #:::::::::: ctor 168 SDK_STATIC_SINIT_END =.; 169 #:::::::::: text/rodata 170 SDK_STATIC_TEXT_END =.; 171 172 # 173 # DATA BLOCK: READ WRITE 174 # 175 . = ALIGN(32); # Fit to cache line 176 SDK_STATIC_DATA_START =.; 177 #:::::::::: data 178 <FOREACH.STATIC.OBJECTS=.sdata> 179 <STATIC.OBJECT=.sdata:t> 180 <END.STATIC.OBJECTS> 181 <FOREACH.STATIC.LIBRARIES=.sdata> 182 <STATIC.LIBRARY=.sdata:t> 183 <END.STATIC.LIBRARIES> 184 <FOREACH.STATIC.OBJECTS=.data> 185 <STATIC.OBJECT=.data:t> 186 <END.STATIC.OBJECTS> 187 <FOREACH.STATIC.LIBRARIES=.data> 188 <STATIC.LIBRARY=.data:t> 189 <END.STATIC.LIBRARIES> 190 . = ALIGN(4); 191 192 SDK_LTDOVERLAYTABLE_DIGEST =.; 193 . = . + 20; 194 SDK_LTDOVERLAYTABLE_DIGEST_END =.; 195 SDK_OVERLAYTABLE_DIGEST =.; 196 . = . + 20; 197 SDK_OVERLAYTABLE_DIGEST_END =.; 198 SDK_OVERLAY_DIGEST =.; 199 . = . + <NUMBER.OVERLAYS> * 20; 200 . = . + <NUMBER.LTDOVERLAYS> * 20; 201 SDK_OVERLAY_DIGEST_END =.; 202 #:::::::::: data 203 . = ALIGN(32); 204 SDK_STATIC_DATA_END =.; 205 SDK_STATIC_END =.; 206 207 SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; 208 SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; 209 SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; 210 __sinit__ = SDK_STATIC_SINIT_START; # for static initializer 211 212 } > <STATIC.NAME> 213 214 .<STATIC.NAME>.bss: 215 { 216 ALIGNALL(4); 217 . = ALIGN(32); # Fit to cache line 218 219 # 220 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 221 # 222 <FOREACH.STATIC.SEARCHSYMBOLS> 223 SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>; 224 <END.STATIC.SEARCHSYMBOLS> 225 226 # 227 # BSS BLOCK 228 # 229 SDK_STATIC_BSS_START =.; 230 #:::::::::: bss 231 <FOREACH.STATIC.OBJECTS=.sbss> 232 <STATIC.OBJECT=.sbss:t> 233 <END.STATIC.OBJECTS> 234 <FOREACH.STATIC.LIBRARIES=.sbss> 235 <STATIC.LIBRARY=.sbss:t> 236 <END.STATIC.LIBRARIES> 237 <FOREACH.STATIC.OBJECTS=.bss> 238 <STATIC.OBJECT=.bss:t> 239 <END.STATIC.OBJECTS> 240 <FOREACH.STATIC.LIBRARIES=.bss> 241 <STATIC.LIBRARY=.bss:t> 242 <END.STATIC.LIBRARIES> 243 #:::::::::: bss 244 . = ALIGN(32); 245 SDK_STATIC_BSS_END = .; 246 247 SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; 248 249 } >> <STATIC.NAME> 250 251 252 ############################ AUTOLOADS ############################## 253 SDK_AUTOLOAD.ITCM.START = 0x01ff8000; 254 SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; 255 SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; 256 SDK_AUTOLOAD.ITCM.SIZE = 0; 257 SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; 258 SDK_AUTOLOAD.DTCM.START = 0x02fe0000; 259 SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; 260 SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; 261 SDK_AUTOLOAD.DTCM.SIZE = 0; 262 SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; 263 SDK_AUTOLOAD_START = SDK_STATIC_END; 264 SDK_AUTOLOAD_SIZE = 0; 265 SDK_AUTOLOAD_NUMBER = <NUMBER.AUTOLOADS>; 266 267<FOREACH.AUTOLOADS> 268 .<AUTOLOAD.NAME>: 269 { 270 ALIGNALL(4); 271 . = ALIGN(32); 272 273 # 274 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 275 # 276 <FOREACH.AUTOLOAD.SEARCHSYMBOLS> 277 SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>; 278 <END.AUTOLOAD.SEARCHSYMBOLS> 279 280 # 281 # TEXT BLOCK: READ ONLY 282 # 283 SDK_AUTOLOAD_<AUTOLOAD.NAME>_ID =<AUTOLOAD.ID>; 284 SDK_AUTOLOAD.<AUTOLOAD.NAME>.ID =<AUTOLOAD.ID>; 285 SDK_AUTOLOAD.<AUTOLOAD.NAME>.START =.; 286 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START =.; 287 #:::::::::: text/rodata 288 <FOREACH.AUTOLOAD.FORCES> 289 FORCE_OBJECT<AUTOLOAD.FORCE> 290 <END.AUTOLOAD.FORCES> 291 <FOREACH.AUTOLOAD.OBJECTS=.text> 292 <AUTOLOAD.OBJECT=.text:t> 293 <END.AUTOLOAD.OBJECTS> 294 <FOREACH.AUTOLOAD.LIBRARIES=.text> 295 <AUTOLOAD.LIBRARY=.text:t> 296 <END.AUTOLOAD.LIBRARIES> 297 <FOREACH.AUTOLOAD.OBJECTS=.rodata> 298 <AUTOLOAD.OBJECT=.rodata:t> 299 <END.AUTOLOAD.OBJECTS> 300 <FOREACH.AUTOLOAD.LIBRARIES=.rodata> 301 <AUTOLOAD.LIBRARY=.rodata:t> 302 <END.AUTOLOAD.LIBRARIES> 303 <FOREACH.AUTOLOAD.OBJECTS=.init> 304 <AUTOLOAD.OBJECT=.init:t> 305 <END.AUTOLOAD.OBJECTS> 306 <FOREACH.AUTOLOAD.LIBRARIES=.init> 307 <AUTOLOAD.LIBRARY=.init:t> 308 <END.AUTOLOAD.LIBRARIES> 309 . = ALIGN(4); 310 SDK_AUTOLOAD.<AUTOLOAD.NAME>.SINIT_START = .; 311 #:::::::::: ctor 312 <FOREACH.AUTOLOAD.OBJECTS=.ctor> 313 <AUTOLOAD.OBJECT=.ctor:t> 314 <END.AUTOLOAD.OBJECTS> 315 <FOREACH.AUTOLOAD.LIBRARIES=.ctor> 316 <AUTOLOAD.LIBRARY=.ctor:t> 317 <END.AUTOLOAD.LIBRARIES> 318 <FOREACH.AUTOLOAD.OBJECTS=.sinit> 319 <AUTOLOAD.OBJECT=.sinit:t> 320 <END.AUTOLOAD.OBJECTS> 321 <FOREACH.AUTOLOAD.LIBRARIES=.sinit> 322 <AUTOLOAD.LIBRARY=.sinit:t> 323 <END.AUTOLOAD.LIBRARIES> 324 WRITEW 0; 325 #:::::::::: ctor 326 SDK_AUTOLOAD.<AUTOLOAD.NAME>.SINIT_END = .; 327 #:::::::::: text/rodata 328 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.; 329 330 # 331 # DATA BLOCK: READ WRITE BLOCK 332 # 333 . = ALIGN(32); 334 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START =.; 335 #:::::::::: data 336 <FOREACH.AUTOLOAD.OBJECTS=.itcm> 337 <AUTOLOAD.OBJECT=.itcm:t> 338 <END.AUTOLOAD.OBJECTS> 339 <FOREACH.AUTOLOAD.LIBRARIES=.itcm> 340 <AUTOLOAD.LIBRARY=.itcm:t> 341 <END.AUTOLOAD.LIBRARIES> 342 <FOREACH.AUTOLOAD.OBJECTS=.dtcm> 343 <AUTOLOAD.OBJECT=.dtcm:t> 344 <END.AUTOLOAD.OBJECTS> 345 <FOREACH.AUTOLOAD.LIBRARIES=.dtcm> 346 <AUTOLOAD.LIBRARY=.dtcm:t> 347 <END.AUTOLOAD.LIBRARIES> 348 <FOREACH.AUTOLOAD.OBJECTS=.sdata> 349 <AUTOLOAD.OBJECT=.sdata:t> 350 <END.AUTOLOAD.OBJECTS> 351 <FOREACH.AUTOLOAD.LIBRARIES=.sdata> 352 <AUTOLOAD.LIBRARY=.sdata:t> 353 <END.AUTOLOAD.LIBRARIES> 354 <FOREACH.AUTOLOAD.OBJECTS=.data> 355 <AUTOLOAD.OBJECT=.data:t> 356 <END.AUTOLOAD.OBJECTS> 357 <FOREACH.AUTOLOAD.LIBRARIES=.data> 358 <AUTOLOAD.LIBRARY=.data:t> 359 <END.AUTOLOAD.LIBRARIES> 360 #:::::::::: data 361 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.; 362 . = ALIGN(32); 363 SDK_AUTOLOAD.<AUTOLOAD.NAME>.END =.; 364 365 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START; 366 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START; 367 SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.START; 368 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE; 369 370 } > <AUTOLOAD.NAME> 371 372 .<AUTOLOAD.NAME>.bss: 373 { 374 ALIGNALL(4); 375 . = ALIGN(32); 376 377 # 378 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 379 # 380 <FOREACH.AUTOLOAD.SEARCHSYMBOLS> 381 SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL> 382 <END.AUTOLOAD.SEARCHSYMBOLS> 383 384 # 385 # BSS BLOCK 386 # 387 SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .; 388 #:::::::::: bss 389 <FOREACH.AUTOLOAD.OBJECTS=.itcm> 390 <AUTOLOAD.OBJECT=.itcm.bss:t> 391 <END.AUTOLOAD.OBJECTS> 392 <FOREACH.AUTOLOAD.LIBRARIES=.itcm> 393 <AUTOLOAD.LIBRARY=.itcm.bss:t> 394 <END.AUTOLOAD.LIBRARIES> 395 <FOREACH.AUTOLOAD.OBJECTS=.dtcm> 396 <AUTOLOAD.OBJECT=.dtcm.bss:t> 397 <END.AUTOLOAD.OBJECTS> 398 <FOREACH.AUTOLOAD.LIBRARIES=.dtcm> 399 <AUTOLOAD.LIBRARY=.dtcm.bss:t> 400 <END.AUTOLOAD.LIBRARIES> 401 <FOREACH.AUTOLOAD.OBJECTS=.sbss> 402 <AUTOLOAD.OBJECT=.sbss:t> 403 <END.AUTOLOAD.OBJECTS> 404 <FOREACH.AUTOLOAD.LIBRARIES=.sbss> 405 <AUTOLOAD.LIBRARY=.sbss:t> 406 <END.AUTOLOAD.LIBRARIES> 407 <FOREACH.AUTOLOAD.OBJECTS=.bss> 408 <AUTOLOAD.OBJECT=.bss:t> 409 <END.AUTOLOAD.OBJECTS> 410 <FOREACH.AUTOLOAD.LIBRARIES=.bss> 411 <AUTOLOAD.LIBRARY=.bss:t> 412 <END.AUTOLOAD.LIBRARIES> 413 #:::::::::: bss 414 . = ALIGN(32); 415 SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END = .; 416 417 SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START; 418 419 } >> <AUTOLOAD.NAME> 420 421<END.AUTOLOADS> 422 423 SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; 424 SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; 425 SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; 426 SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; 427 SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; 428 SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; 429 SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; 430 SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; 431 SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; 432 SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; 433 434 ############################ AUTOLOAD_INFO ########################## 435 .binary.AUTOLOAD_INFO: 436 { 437 <FOREACH.AUTOLOADS> 438 WRITEW ADDR(.<AUTOLOAD.NAME>); 439 WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE; 440 WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SINIT_START; 441 WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE; 442 <END.AUTOLOADS> 443 444 } > binary.AUTOLOAD_INFO 445 446 SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; 447 SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 448 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 449 450 ############################ STATIC_FOOTER ########################## 451 .binary.STATIC_FOOTER: 452 { 453 WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE 454 WRITEW _start_ModuleParams - ADDR(.<STATIC.NAME>); 455 WRITEW SDK_OVERLAY_DIGEST - ADDR(.<STATIC.NAME>); 456 WRITEW _start_LtdModuleParams - ADDR(.<STATIC.NAME>); 457 } > binary.STATIC_FOOTER 458 459 ############################ OVERLAYS ############################### 460 SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>; 461 462<FOREACH.OVERLAYS> 463 .<OVERLAY.NAME>:<OVERLAY.NAME> 464 { 465 ALIGNALL(4); 466 . = ALIGN(32); # Fit to cache line 467 468 # 469 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 470 # 471 <FOREACH.OVERLAY.SEARCHSYMBOLS> 472 SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>; 473 <END.OVERLAY.SEARCHSYMBOLS> 474 475 # 476 # TEXT BLOCK: READ ONLY 477 # 478 SDK_OVERLAY_<OVERLAY.NAME>_ID =<OVERLAY.ID>; ### SEGMENT <OVERLAY.NAME> OVERLAY ID 479 SDK_OVERLAY.<OVERLAY.NAME>.ID =<OVERLAY.ID>; 480 SDK_OVERLAY.<OVERLAY.NAME>.START =.; 481 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START =.; 482 #:::::::::: text/rodata 483 <FOREACH.OVERLAY.FORCES> 484 FORCE_OBJECT<OVERLAY.FORCE> 485 <END.OVERLAY.FORCES> 486 <FOREACH.OVERLAY.OBJECTS=.text> 487 <OVERLAY.OBJECT=.text:t> 488 <END.OVERLAY.OBJECTS> 489 <FOREACH.OVERLAY.LIBRARIES=.text> 490 <OVERLAY.LIBRARY=.text:t> 491 <END.OVERLAY.LIBRARIES> 492 <FOREACH.OVERLAY.OBJECTS=.rodata> 493 <OVERLAY.OBJECT=.rodata:t> 494 <END.OVERLAY.OBJECTS> 495 <FOREACH.OVERLAY.LIBRARIES=.rodata> 496 <OVERLAY.LIBRARY=.rodata:t> 497 <END.OVERLAY.LIBRARIES> 498 <FOREACH.OVERLAY.OBJECTS=.init> 499 <OVERLAY.OBJECT=.init:t> 500 <END.OVERLAY.OBJECTS> 501 <FOREACH.OVERLAY.LIBRARIES=.init> 502 <OVERLAY.LIBRARY=.init:t> 503 <END.OVERLAY.LIBRARIES> 504 . = ALIGN(4); 505 SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START =.; 506 #:::::::::: ctor 507 <FOREACH.OVERLAY.OBJECTS=.ctor> 508 <OVERLAY.OBJECT=.ctor:t> 509 <END.OVERLAY.OBJECTS> 510 <FOREACH.OVERLAY.LIBRARIES=.ctor> 511 <OVERLAY.LIBRARY=.ctor:t> 512 <END.OVERLAY.LIBRARIES> 513 <FOREACH.OVERLAY.OBJECTS=.sinit> 514 <OVERLAY.OBJECT=.sinit:t> 515 <END.OVERLAY.OBJECTS> 516 <FOREACH.OVERLAY.LIBRARIES=.sinit> 517 <OVERLAY.LIBRARY=.sinit:t> 518 <END.OVERLAY.LIBRARIES> 519 WRITEW 0; 520 #:::::::::: ctor 521 SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.; 522 #:::::::::: text/rodata 523 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.; 524 525 # 526 # DATA BLOCK: READ WRITE 527 # 528 . = ALIGN(32); 529 SDK_OVERLAY.<OVERLAY.NAME>.DATA_START =.; 530 #:::::::::: data 531 <FOREACH.OVERLAY.OBJECTS=.sdata> 532 <OVERLAY.OBJECT=.sdata:t> 533 <END.OVERLAY.OBJECTS> 534 <FOREACH.OVERLAY.LIBRARIES=.sdata> 535 <OVERLAY.LIBRARY=.sdata:t> 536 <END.OVERLAY.LIBRARIES> 537 <FOREACH.OVERLAY.OBJECTS=.data> 538 <OVERLAY.OBJECT=.data:t> 539 <END.OVERLAY.OBJECTS> 540 <FOREACH.OVERLAY.LIBRARIES=.data> 541 <OVERLAY.LIBRARY=.data:t> 542 <END.OVERLAY.LIBRARIES> 543 #:::::::::: data 544 SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.; 545 . = ALIGN(32); 546 SDK_OVERLAY.<OVERLAY.NAME>.END =.; 547 548 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END - SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START; 549 SDK_OVERLAY.<OVERLAY.NAME>.DATA_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.DATA_END - SDK_OVERLAY.<OVERLAY.NAME>.DATA_START; 550 SDK_OVERLAY.<OVERLAY.NAME>.SIZE = SDK_OVERLAY.<OVERLAY.NAME>.END - SDK_OVERLAY.<OVERLAY.NAME>.START; 551 552 } > <OVERLAY.NAME> 553 554 .<OVERLAY.NAME>.bss:<OVERLAY.NAME> 555 { 556 ALIGNALL(4); 557 . = ALIGN(32); 558 559 # 560 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 561 # 562 <FOREACH.OVERLAY.SEARCHSYMBOLS> 563 SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>; 564 <END.OVERLAY.SEARCHSYMBOLS> 565 566 # 567 # BSS BLOCK 568 # 569 SDK_OVERLAY.<OVERLAY.NAME>.BSS_START = .; 570 #:::::::::: bss 571 <FOREACH.OVERLAY.OBJECTS=.bss> 572 <OVERLAY.OBJECT=.bss:t> 573 <END.OVERLAY.OBJECTS> 574 <FOREACH.OVERLAY.LIBRARIES=.bss> 575 <OVERLAY.LIBRARY=.bss:t> 576 <END.OVERLAY.LIBRARIES> 577 <FOREACH.OVERLAY.OBJECTS=.sbss> 578 <OVERLAY.OBJECT=.sbss:t> 579 <END.OVERLAY.OBJECTS> 580 <FOREACH.OVERLAY.LIBRARIES=.sbss> 581 <OVERLAY.LIBRARY=.sbss:t> 582 <END.OVERLAY.LIBRARIES> 583 #:::::::::: bss 584 . = ALIGN(32); 585 SDK_OVERLAY.<OVERLAY.NAME>.BSS_END = .; 586 587 SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.BSS_END - SDK_OVERLAY.<OVERLAY.NAME>.BSS_START; 588 589 } >> <OVERLAY.NAME> 590 591<END.OVERLAYS> 592 593 ############################ OVERLAYDEFS ############################ 594 .<PROPERTY.OVERLAYDEFS>F: 595 { 596 ### <STATIC.NAME> module information 597 WRITEW ADDR(.<STATIC.NAME>); # load address 598 WRITEW _start; # entry address 599 WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module 600 WRITEW _start_AutoloadDoneCallback; # callback autoload done 601 602 ### overlay filename 603 <FOREACH.OVERLAYS> 604 WRITES ("<OVERLAY.NAME><PROPERTY.FLXSUFFIX>"); # Overlay <OVERLAY.ID> 605 <END.OVERLAYS> 606 607 } > <PROPERTY.OVERLAYDEFS>F 608 609 ############################ OVERLAYTABLE ########################### 610 .<PROPERTY.OVERLAYTABLE>F: 611 { 612 <FOREACH.OVERLAYS> 613 WRITEW <OVERLAY.ID>; # overlay ID 614 WRITEW ADDR(.<OVERLAY.NAME>); # load address 615 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SIZE; # size of module 616 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE; # size of bss 617 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START; # start address of static init 618 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END; # end address of static init 619 WRITEW <OVERLAY.ID>; # ROM file ID 620 WRITEW 0; # compressed state 621 <END.OVERLAYS> 622 623 } > <PROPERTY.OVERLAYTABLE>F 624 625 ############################ ARENA ################################## 626 .dummy.MAIN_EX.NITRO: 627 { 628 . = ALIGN(32); 629 630 } > dummy.MAIN_EX.NITRO 631 632 .arena.MAIN.NITRO: 633 { 634 . = ALIGN(32); 635 SDK_SECTION_ARENA_START =.; 636 637 } > arena.MAIN.NITRO 638 639 .arena.MAIN_EX.NITRO: 640 { 641 . = ALIGN(32); 642 SDK_SECTION_ARENA_EX_START =.; 643 644 } > arena.MAIN_EX.NITRO 645 646 .arena.ITCM: 647 { 648 . = ALIGN(32); 649 SDK_SECTION_ARENA_ITCM_START =.; 650 651 } > arena.ITCM 652 653 .arena.DTCM: 654 { 655 . = ALIGN(32); 656 SDK_SECTION_ARENA_DTCM_START =.; 657 658 } > arena.DTCM 659 660 ############################ OTHERS ################################# 661 SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; 662 SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in DTCM 663 SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # when 0 means all remains of DTCM 664 SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; 665 666 .check.ITCM: 667 { 668 . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; 669 <FOREACH.OVERLAYS=ITCM> 670 . = . + SDK_OVERLAY.<OVERLAY.NAME>.SIZE + SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE; 671 <END.OVERLAYS> 672 673 } > check.ITCM 674 675 .check.DTCM: 676 { 677 . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; 678 <FOREACH.OVERLAYS=DTCM> 679 . = . + SDK_OVERLAY.<OVERLAY.NAME>.SIZE + SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE; 680 <END.OVERLAYS> 681 . = . + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 682 } > check.DTCM 683 684 .COMMON__: 685 { 686 . = . + SDK_STATIC_TEXT_COMMON_END - SDK_STATIC_TEXT_COMMON_START; 687 } > COMMON__ 688 689 .PARENT__: 690 { 691 . = . + SDK_STATIC_TEXT_PARENT_END - SDK_STATIC_TEXT_PARENT_START; 692 } > PARENT__ 693 694 ########################### LTDAUTOLOADS ############################ 695 SDK_LTDAUTOLOAD.LTDMAIN.START = SDK_STATIC_BSS_END; 696 SDK_LTDAUTOLOAD.LTDMAIN.END = SDK_LTDAUTOLOAD.LTDMAIN.START; 697 SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START; 698 SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; 699 SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; 700 SDK_LTDAUTOLOAD_TOP_START = 0x02400000; 701 SDK_LTDAUTOLOAD_TOP_SIZE = 4; # While there is no STATIC region, a 4-byte dummy is at the top of the binary file 702 SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; 703 SDK_LTDAUTOLOAD_SIZE = 0; 704 SDK_LTDAUTOLOAD_NUMBER = <NUMBER.LTDAUTOLOADS>; 705 706 .binary.LTDAUTOLOAD_TOP: 707 { 708 WRITEW 0; 709 710 } > binary.LTDAUTOLOAD_TOP 711 712<FOREACH.LTDAUTOLOADS> 713 .<LTDAUTOLOAD.NAME>: 714 { 715 ALIGNALL(4); 716 . = ALIGN(32); # Fit to cache line 717 718 # 719 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 720 # 721 <FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS> 722 SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>; 723 <END.LTDAUTOLOAD.SEARCHSYMBOLS> 724 725 SDK_LTDAUTOLOAD_<LTDAUTOLOAD.NAME>_ID =<LTDAUTOLOAD.ID>; 726 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.ID =<LTDAUTOLOAD.ID>; 727 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START =.; 728 # 729 # TEXT BLOCK: READ ONLY 730 # 731 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_START =.; 732 #:::::::::: text/rodata 733 <FOREACH.LTDAUTOLOAD.FORCES> 734 FORCE_OBJECT<LTDAUTOLOAD.FORCE> 735 <END.LTDAUTOLOAD.FORCES> 736 <FOREACH.LTDAUTOLOAD.OBJECTS=.text> 737 <LTDAUTOLOAD.OBJECT=.text:t> 738 <END.LTDAUTOLOAD.OBJECTS> 739 <FOREACH.LTDAUTOLOAD.LIBRARIES=.text> 740 <LTDAUTOLOAD.LIBRARY=.text:t> 741 <END.LTDAUTOLOAD.LIBRARIES> 742 <FOREACH.LTDAUTOLOAD.OBJECTS=.rodata> 743 <LTDAUTOLOAD.OBJECT=.rodata:t> 744 <END.LTDAUTOLOAD.OBJECTS> 745 <FOREACH.LTDAUTOLOAD.LIBRARIES=.rodata> 746 <LTDAUTOLOAD.LIBRARY=.rodata:t> 747 <END.LTDAUTOLOAD.LIBRARIES> 748 <FOREACH.LTDAUTOLOAD.OBJECTS=.init> 749 <LTDAUTOLOAD.OBJECT=.init:t> 750 <END.LTDAUTOLOAD.OBJECTS> 751 <FOREACH.LTDAUTOLOAD.LIBRARIES=.init> 752 <LTDAUTOLOAD.LIBRARY=.init:t> 753 <END.LTDAUTOLOAD.LIBRARIES> 754 . = ALIGN(4); 755 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START = .; 756 #:::::::::: ctor 757 <FOREACH.LTDAUTOLOAD.OBJECTS=.ctor> 758 <LTDAUTOLOAD.OBJECT=.ctor:t> 759 <END.LTDAUTOLOAD.OBJECTS> 760 <FOREACH.LTDAUTOLOAD.LIBRARIES=.ctor> 761 <LTDAUTOLOAD.LIBRARY=.ctor:t> 762 <END.LTDAUTOLOAD.LIBRARIES> 763 <FOREACH.LTDAUTOLOAD.OBJECTS=.sinit> 764 <LTDAUTOLOAD.OBJECT=.sinit:t> 765 <END.LTDAUTOLOAD.OBJECTS> 766 <FOREACH.LTDAUTOLOAD.LIBRARIES=.sinit> 767 <LTDAUTOLOAD.LIBRARY=.sinit:t> 768 <END.LTDAUTOLOAD.LIBRARIES> 769 WRITEW 0; 770 #:::::::::: ctor 771 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_END = .; 772 #:::::::::: text/rodata 773 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_END =.; 774 775 # 776 # DATA BLOCK: READ WRITE 777 # 778 . = ALIGN(32); 779 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_START =.; 780 #:::::::::: data 781 <FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain> 782 <LTDAUTOLOAD.OBJECT=.ltdmain:t> 783 <END.LTDAUTOLOAD.OBJECTS> 784 <FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain> 785 <LTDAUTOLOAD.LIBRARY=.ltdmain:t> 786 <END.LTDAUTOLOAD.LIBRARIES> 787 <FOREACH.LTDAUTOLOAD.OBJECTS=.sdata> 788 <LTDAUTOLOAD.OBJECT=.sdata:t> 789 <END.LTDAUTOLOAD.OBJECTS> 790 <FOREACH.LTDAUTOLOAD.LIBRARIES=.sdata> 791 <LTDAUTOLOAD.LIBRARY=.sdata:t> 792 <END.LTDAUTOLOAD.LIBRARIES> 793 <FOREACH.LTDAUTOLOAD.OBJECTS=.data> 794 <LTDAUTOLOAD.OBJECT=.data:t> 795 <END.LTDAUTOLOAD.OBJECTS> 796 <FOREACH.LTDAUTOLOAD.LIBRARIES=.data> 797 <LTDAUTOLOAD.LIBRARY=.data:t> 798 <END.LTDAUTOLOAD.LIBRARIES> 799 #:::::::::: data 800 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_END =.; 801 . = ALIGN(32); 802 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END =.; 803 804 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.TEXT_START; 805 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.DATA_START; 806 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.START; 807 SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE; 808 809 } > <LTDAUTOLOAD.NAME> 810 811 .<LTDAUTOLOAD.NAME>.bss: 812 { 813 ALIGNALL(4); 814 . = ALIGN(32); 815 816 # 817 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 818 # 819 <FOREACH.LTDAUTOLOAD.SEARCHSYMBOLS> 820 SEARCH_SYMBOL <LTDAUTOLOAD.SEARCHSYMBOL>; 821 <END.LTDAUTOLOAD.SEARCHSYMBOLS> 822 823 # 824 # BSS BLOCK 825 # 826 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START =.; 827 #:::::::::: bss 828 <FOREACH.LTDAUTOLOAD.OBJECTS=.ltdmain> 829 <LTDAUTOLOAD.OBJECT=.ltdmain.bss:t> 830 <END.LTDAUTOLOAD.OBJECTS> 831 <FOREACH.LTDAUTOLOAD.LIBRARIES=.ltdmain> 832 <LTDAUTOLOAD.LIBRARY=.ltdmain.bss:t> 833 <END.LTDAUTOLOAD.LIBRARIES> 834 <FOREACH.LTDAUTOLOAD.OBJECTS=.sbss> 835 <LTDAUTOLOAD.OBJECT=.sbss:t> 836 <END.LTDAUTOLOAD.OBJECTS> 837 <FOREACH.LTDAUTOLOAD.LIBRARIES=.sbss> 838 <LTDAUTOLOAD.LIBRARY=.sbss:t> 839 <END.LTDAUTOLOAD.LIBRARIES> 840 <FOREACH.LTDAUTOLOAD.OBJECTS=.bss> 841 <LTDAUTOLOAD.OBJECT=.bss:t> 842 <END.LTDAUTOLOAD.OBJECTS> 843 <FOREACH.LTDAUTOLOAD.LIBRARIES=.bss> 844 <LTDAUTOLOAD.LIBRARY=.bss:t> 845 <END.LTDAUTOLOAD.LIBRARIES> 846 #:::::::::: bss 847 . = ALIGN(32); 848 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END =.; 849 850 SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE = SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_END - SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_START; 851 852 } >> <LTDAUTOLOAD.NAME> 853 854<END.LTDAUTOLOADS> 855 856 SDK_LTDAUTOLOAD_LTDMAIN_START = SDK_LTDAUTOLOAD.LTDMAIN.START; 857 SDK_LTDAUTOLOAD_LTDMAIN_END = SDK_LTDAUTOLOAD.LTDMAIN.END; 858 SDK_LTDAUTOLOAD_LTDMAIN_BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END; 859 SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE; 860 SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE; 861 862 ######################### LTDAUTOLOAD_INFO ########################## 863 .binary.LTDAUTOLOAD_INFO: 864 { 865 <FOREACH.LTDAUTOLOADS> 866 WRITEW ADDR(.<LTDAUTOLOAD.NAME>); 867 WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SIZE; 868 WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.SINIT_START; 869 WRITEW SDK_LTDAUTOLOAD.<LTDAUTOLOAD.NAME>.BSS_SIZE; 870 <END.LTDAUTOLOADS> 871 872 } > binary.LTDAUTOLOAD_INFO 873 874 SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; 875 SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); 876 SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); 877 878 ########################### LTDOVERLAYS ############################# 879 SDK_LTDOVERLAY_NUMBER = <NUMBER.LTDOVERLAYS>; 880 881<FOREACH.LTDOVERLAYS> 882 .<LTDOVERLAY.NAME>:<LTDOVERLAY.NAME> 883 { 884 ALIGNALL(4); 885 . = ALIGN(32); 886 887 # 888 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 889 # 890 <FOREACH.LTDOVERLAY.SEARCHSYMBOLS> 891 SEARCH_SYMBOL <LTDOVERLAY.SEARCHSYMBOL>; 892 <END.LTDOVERLAY.SEARCHSYMBOLS> 893 894 SDK_LTDOVERLAY_<LTDOVERLAY.NAME>_ID =<LTDOVERLAY.ID>; 895 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.ID =<LTDOVERLAY.ID>; 896 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.START =.; 897 # 898 # TEXT BLOCK: READ ONLY 899 # 900 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_START =.; 901 #:::::::::: text/rodata 902 <FOREACH.LTDOVERLAY.FORCES> 903 FORCE_OBJECT<LTDOVERLAY.FORCE> 904 <END.LTDOVERLAY.FORCES> 905 <FOREACH.LTDOVERLAY.OBJECTS=.text> 906 <LTDOVERLAY.OBJECT=.text:t> 907 <END.LTDOVERLAY.OBJECTS> 908 <FOREACH.LTDOVERLAY.LIBRARIES=.text> 909 <LTDOVERLAY.LIBRARY=.text:t> 910 <END.LTDOVERLAY.LIBRARIES> 911 <FOREACH.LTDOVERLAY.OBJECTS=.rodata> 912 <LTDOVERLAY.OBJECT=.rodata:t> 913 <END.LTDOVERLAY.OBJECTS> 914 <FOREACH.LTDOVERLAY.LIBRARIES=.rodata> 915 <LTDOVERLAY.LIBRARY=.rodata:t> 916 <END.LTDOVERLAY.LIBRARIES> 917 <FOREACH.LTDOVERLAY.OBJECTS=.init> 918 <LTDOVERLAY.OBJECT=.init:t> 919 <END.LTDOVERLAY.OBJECTS> 920 <FOREACH.LTDOVERLAY.LIBRARIES=.init> 921 <LTDOVERLAY.LIBRARY=.init:t> 922 <END.LTDOVERLAY.LIBRARIES> 923 . = ALIGN(4); 924 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_START =.; 925 #:::::::::: ctor 926 <FOREACH.LTDOVERLAY.OBJECTS=.ctor> 927 <LTDOVERLAY.OBJECT=.ctor:t> 928 <END.LTDOVERLAY.OBJECTS> 929 <FOREACH.LTDOVERLAY.LIBRARIES=.ctor> 930 <LTDOVERLAY.LIBRARY=.ctor:t> 931 <END.LTDOVERLAY.LIBRARIES> 932 <FOREACH.LTDOVERLAY.OBJECTS=.sinit> 933 <LTDOVERLAY.OBJECT=.sinit:t> 934 <END.LTDOVERLAY.OBJECTS> 935 <FOREACH.LTDOVERLAY.LIBRARIES=.sinit> 936 <LTDOVERLAY.LIBRARY=.sinit:t> 937 <END.LTDOVERLAY.LIBRARIES> 938 WRITEW 0; 939 #:::::::::: ctor 940 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_END =.; 941 #:::::::::: text/rodata 942 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_END =.; 943 944 # 945 # DATA BLOCK: READ WRITE 946 # 947 . = ALIGN(32); 948 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_START =.; 949 #:::::::::: data 950 <FOREACH.LTDOVERLAY.OBJECTS=.sdata> 951 <LTDOVERLAY.OBJECT=.sdata:t> 952 <END.LTDOVERLAY.OBJECTS> 953 <FOREACH.LTDOVERLAY.LIBRARIES=.sdata> 954 <LTDOVERLAY.LIBRARY=.sdata:t> 955 <END.LTDOVERLAY.LIBRARIES> 956 <FOREACH.LTDOVERLAY.OBJECTS=.data> 957 <LTDOVERLAY.OBJECT=.data:t> 958 <END.LTDOVERLAY.OBJECTS> 959 <FOREACH.LTDOVERLAY.LIBRARIES=.data> 960 <LTDOVERLAY.LIBRARY=.data:t> 961 <END.LTDOVERLAY.LIBRARIES> 962 #:::::::::: data 963 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_END =.; 964 . = ALIGN(32); 965 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.END =.; 966 967 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.TEXT_START; 968 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.DATA_START; 969 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.START; 970 971 } > <LTDOVERLAY.NAME> 972 973 .<LTDOVERLAY.NAME>.bss:<LTDOVERLAY.NAME> 974 { 975 ALIGNALL(4); 976 . = ALIGN(32); 977 978 # 979 # Definition to refer overlay segment, when same name symbols exist in multiple overlays. 980 # 981 <FOREACH.LTDOVERLAY.SEARCHSYMBOLS> 982 SEARCH_SYMBOL <LTDOVERLAY.SEARCHSYMBOL>; 983 <END.LTDOVERLAY.SEARCHSYMBOLS> 984 985 # 986 # BSS BLOCK 987 # 988 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_START =.; 989 #:::::::::: bss 990 <FOREACH.LTDOVERLAY.OBJECTS=.bss> 991 <LTDOVERLAY.OBJECT=.bss:t> 992 <END.LTDOVERLAY.OBJECTS> 993 <FOREACH.LTDOVERLAY.LIBRARIES=.bss> 994 <LTDOVERLAY.LIBRARY=.bss:t> 995 <END.LTDOVERLAY.LIBRARIES> 996 <FOREACH.LTDOVERLAY.OBJECTS=.sbss> 997 <LTDOVERLAY.OBJECT=.sbss:t> 998 <END.LTDOVERLAY.OBJECTS> 999 <FOREACH.LTDOVERLAY.LIBRARIES=.sbss> 1000 <LTDOVERLAY.LIBRARY=.sbss:t> 1001 <END.LTDOVERLAY.LIBRARIES> 1002 #:::::::::: bss 1003 . = ALIGN(32); 1004 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_END =.; 1005 1006 SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_SIZE = SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_END - SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_START; 1007 1008 } >> <LTDOVERLAY.NAME> 1009 1010<END.LTDOVERLAYS> 1011 1012 ########################## LTDOVERLAYDEFS ########################### 1013 .<PROPERTY.LTDOVERLAYDEFS>L: 1014 { 1015 ### TWL limited extended static module information 1016 WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address 1017 WRITEW 0; # padding 1018 WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module 1019 WRITEW 0; # padding 1020 1021 ### TWL limited overlay filename 1022 <FOREACH.LTDOVERLAYS> 1023 WRITES ("<LTDOVERLAY.NAME><PROPERTY.LTDSUFFIX>"); 1024 <END.LTDOVERLAYS> 1025 1026 } > <PROPERTY.LTDOVERLAYDEFS>L 1027 1028 ######################### LTDOVERLAYTABLE ########################### 1029 .<PROPERTY.LTDOVERLAYTABLE>L: 1030 { 1031 <FOREACH.LTDOVERLAYS> 1032 WRITEW <LTDOVERLAY.ID>; # overlay ID 1033 WRITEW ADDR(.<LTDOVERLAY.NAME>); # load address 1034 WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SIZE; # size of module 1035 WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.BSS_SIZE; # size of bss 1036 WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_START; # start address of static init 1037 WRITEW SDK_LTDOVERLAY.<LTDOVERLAY.NAME>.SINIT_END; # end address of static init 1038 WRITEW <LTDOVERLAY.ID>; # ROM file ID 1039 WRITEW 0; # compressed state 1040 <END.LTDOVERLAYS> 1041 1042 } > <PROPERTY.LTDOVERLAYTABLE>L 1043 1044 ############################ ARENA ################################## 1045 .dummy.MAIN_EX.TWL: 1046 { 1047 . = ALIGN(32); 1048 1049 } > dummy.MAIN_EX.TWL 1050 1051 .arena.MAIN.TWL: 1052 { 1053 . = ALIGN(32); 1054 SDK_LTDMAIN_ARENA_LO =.; 1055 1056 } > arena.MAIN.TWL 1057 1058 .arena.MAIN_EX.TWL: 1059 { 1060 . = ALIGN(32); 1061 SDK_LTDMAIN_EX_ARENA_LO =.; 1062 1063 } > arena.MAIN_EX.TWL 1064 1065 ############################ OTHERS ################################# 1066 # Module filelist 1067 .binary.MODULE_FILES: 1068 { 1069 WRITES ("<STATIC.NAME><PROPERTY.FLXSUFFIX>"); 1070 WRITES ("<PROPERTY.OVERLAYDEFS><PROPERTY.FLXSUFFIX>"); 1071 WRITES ("<PROPERTY.OVERLAYTABLE><PROPERTY.FLXSUFFIX>"); 1072 WRITES ("<STATIC.NAME><PROPERTY.LTDSUFFIX>"); 1073 WRITES ("<PROPERTY.LTDOVERLAYDEFS><PROPERTY.LTDSUFFIX>"); 1074 WRITES ("<PROPERTY.LTDOVERLAYTABLE><PROPERTY.LTDSUFFIX>"); 1075 1076 } > binary.MODULE_FILES 1077 1078 # Compression Spec List 1079 .binary.COMP_SPEC_LIST: 1080 { 1081 <FOREACH.OVERLAYS> 1082 WRITES ("<OVERLAY.NAME><PROPERTY.SUFFIX>,<OVERLAY.COMPRESS>"); # Overlay <OVERLAY.ID> 1083 <END.OVERLAYS> 1084 <FOREACH.LTDOVERLAYS> 1085 WRITES ("<LTDOVERLAY.NAME><PROPERTY.LTDSUFFIX>,<LTDOVERLAY.COMPRESS>"); # Overlay <LTDOVERLAY.ID> 1086 <END.LTDOVERLAYS> 1087 } > binary.COMP_SPEC_LIST 1088 1089} 1090