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