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