1#--------------------------------------------------------------------------- 2# Project: NitroSDK - tools - makelcf 3# File: ARM9-TEG.lcf.template 4# 5# Copyright 2003-2008 Nintendo. All rights reserved. 6# 7# These coded instructions, statements, and computer programs contain 8# proprietary information of Nintendo of America Inc. and/or Nintendo 9# Company Ltd., and are protected by Federal copyright law. They may 10# not be disclosed to third parties or copied or duplicated in any form, 11# in whole or in part, without the prior written consent of Nintendo. 12# 13# $Log: ARM9-TEG.lcf.template,v $ 14# Revision 1.2 2006/03/30 00:31:29 yasu 15# Revised NUMBER_OVERLAYS to NUMBER.OVERLAYS 16# 17# Revision 1.1 2005/09/05 01:38:31 yasu 18# Record template before editing tags 19# 20# Revision 1.26 2005/08/26 11:22:16 yasu 21# Overlay support for ITCM/DTCM 22# 23# Revision 1.25 2005/06/20 12:29:20 yasu 24# Changed Surffix to Suffix 25# 26# Revision 1.24 2005/06/17 03:16:11 yasu 27# Fixed copyright header 28# 29# Revision 1.23 2005/06/14 09:03:42 yada 30# Fix specific to negative value of SDK_STACKSIZE 31# 32# Revision 1.22 2004/10/03 02:00:56 yasu 33# Output component file list for compstatic tool 34# 35# Revision 1.21 2004/09/09 11:49:20 yasu 36# Added support for compstatic in default 37# 38# Revision 1.20 2004/09/09 03:15:36 yasu 39# Support for NITRO_COMPRESS on TEG 40# 41# Revision 1.19 2004/08/02 10:38:53 yasu 42# Added autoload-done callback address in overlaydefs 43# 44# Revision 1.18 2004/07/26 00:08:27 yasu 45# Fixed label of exception table 46# 47# Revision 1.17 2004/07/24 05:42:25 yasu 48# Set default values for SDK_AUTOGEN_xTCM_START 49# 50# Revision 1.16 2004/07/23 11:32:14 yasu 51# Defined labels for __exception_table_start__ and _end__ 52# 53# Revision 1.15 2004/07/12 12:21:08 yasu 54# Checked size of ITCM/DTCM 55# 56# Revision 1.14 2004/07/10 04:10:26 yasu 57# Added support for command 'Library' 58# 59# Revision 1.13 2004/07/08 04:04:59 yasu 60# Fixed small typo 61# 62# Revision 1.12 2004/07/02 08:13:02 yasu 63# Added support for OBJECT() 64# 65# Revision 1.11 2004/07/01 12:54:38 yasu 66# Added support for ITCM/DTCM/WRAM autoload 67# 68# Revision 1.10 2004/07/01 09:41:50 yasu 69# Added support for autoload 70# 71# Revision 1.9 2004/06/14 11:28:15 yasu 72# Support for section filter "FOREACH.STATIC.OBJECTS=.sectionName" 73# 74# Revision 1.8 2004/04/26 11:41:38 yasu 75# Added KEEP_SECTION { .ctor } 76# 77# Revision 1.7 2004/04/20 07:41:32 yasu 78# Set STATICINIT instead of .ctor temporarily 79# 80# Revision 1.6 2004/04/14 07:13:20 yasu 81# Added ALIGN(32) for convenience to handle cache line 82# 83# Revision 1.5 2004/04/06 01:53:34 yasu 84# Moved rodata section into text section 85# 86# Revision 1.4 2004/04/06 01:39:43 miya 87# Modified overlay module size 88# 89# Revision 1.3 2004/03/29 11:40:48 yasu 90# Deleted ROM SIZE parameter on overlay table 91# 92# Revision 1.2 2004/03/26 09:32:48 yasu 93# Deleted useless ALIGN 94# 95# Revision 1.1 2004/03/26 06:04:32 yasu 96# Moved spec files 97# 98# Revision 1.9 2004/03/23 00:15:35 yasu 99# Added WRITEW 0 for the termination of __OVERLAY_static_init__ 100# 101# Revision 1.8 2004/03/22 02:15:49 yasu 102# Set _start as entry address in ROM header 103# 104# Revision 1.7 2004/03/16 10:05:14 yasu 105# Added ALIGN(4) at end of section 106# 107# Revision 1.6 2004/02/14 03:34:00 yasu 108# Switched .bss and .sbss 109# 110# Revision 1.5 2004/02/13 07:13:16 yasu 111# Support for SDK_IRQ_STACKSIZE 112# 113# Revision 1.4 2004/02/05 12:21:14 yasu 114# Changed SDK prefix from iris to nitro 115# 116# Revision 1.3 2004/01/16 01:34:01 yasu 117# Cleaned up lcf to support ARENA functions 118# 119# Revision 1.2 2004/01/15 13:10:03 yasu 120# Cleaned up unused variables 121# 122# Revision 1.1 2004/01/15 10:52:51 yasu 123# lcf template for OVERLAY 124# 125# Revision 1.1 2004/01/14 01:59:02 yasu 126# Changed filename 127# 128# Revision 1.2 2004/01/07 13:11:08 yasu 129# Changed command casing 130# 131# Revision 1.1 2004/01/05 02:32:59 yasu 132# Initial version 133# 134# $NoKeywords: $ 135#--------------------------------------------------------------------------- 136MEMORY 137{ 138 <STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.SUFFIX> 139 <FOREACH.AUTOLOADS> 140 <AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 141 <END.AUTOLOADS> 142 AUTOLOAD_INFO__ (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 143 STATIC_FOOTER__ (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 144 145 <PROPERTY.OVERLAYDEFS> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX> 146 <PROPERTY.OVERLAYTABLE> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX> 147 <FOREACH.OVERLAYS> 148 <OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.SUFFIX> 149 <END.OVERLAYS> 150 MAIN_EX__ (RW) : ORIGIN = 0x02400000, LENGTH = 0x0 151 ARENA__ (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS=MAIN>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 152 ARENA_EX__ (RW) : ORIGIN = AFTER(MAIN_EX__<FOREACH.OVERLAYS=MAINEX>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 153 ARENA_ITCM__ (RW) : ORIGIN = AFTER(ITCM<FOREACH.OVERLAYS=ITCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 154 ARENA_DTCM__ (RW) : ORIGIN = AFTER(DTCM<FOREACH.OVERLAYS=DTCM>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 155 MODULE_FILES__ (RW) : ORIGIN = 0x0, LENGTH = 0x0 > component.files 156 ITCM__ (RWX) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check 157 DTCM__ (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check 158} 159 160SECTIONS 161{ 162 ############################ STATIC ################################# 163 .<STATIC.NAME>: 164 { 165 ALIGNALL(4); . = ALIGN(32); # Fit to cache line 166 167 # 168 # TEXT BLOCK: READ ONLY 169 # 170 SDK_STATIC_START =.; 171 SDK_STATIC_TEXT_START =.; 172 #:::::::::: text/rodata 173 OBJECT(_start,*) 174 crt0.o (.text) 175 <FOREACH.STATIC.OBJECTS=.text> 176 <STATIC.OBJECT=.text:t> 177 <END.STATIC.OBJECTS> 178 <FOREACH.STATIC.LIBRARIES=.text> 179 <STATIC.LIBRARY=.text:t> 180 <END.STATIC.LIBRARIES> 181 . = ALIGN(4); 182 * (.exception) 183 . = ALIGN(4); 184 SDK_STATIC_ETABLE_START =.; 185 EXCEPTION 186 SDK_STATIC_ETABLE_END =.; 187 . = ALIGN(4); 188 <FOREACH.STATIC.OBJECTS=.init> 189 <STATIC.OBJECT=.init:t> 190 <END.STATIC.OBJECTS> 191 <FOREACH.STATIC.LIBRARIES=.init> 192 <STATIC.LIBRARY=.init:t> 193 <END.STATIC.LIBRARIES> 194 . = ALIGN(4); 195 <FOREACH.STATIC.OBJECTS=.rodata> 196 <STATIC.OBJECT=.rodata:t> 197 <END.STATIC.OBJECTS> 198 <FOREACH.STATIC.LIBRARIES=.rodata> 199 <STATIC.LIBRARY=.rodata:t> 200 <END.STATIC.LIBRARIES> 201 . = ALIGN(4); 202 203 SDK_STATIC_SINIT_START =.; 204 #:::::::::: ctor 205 <FOREACH.STATIC.OBJECTS=.ctor> 206 <STATIC.OBJECT=.ctor:t> 207 <END.STATIC.OBJECTS> 208 <FOREACH.STATIC.LIBRARIES=.ctor> 209 <STATIC.LIBRARY=.ctor:t> 210 <END.STATIC.LIBRARIES> 211 WRITEW 0; 212 #:::::::::: ctor 213 SDK_STATIC_SINIT_END =.; 214 215 #:::::::::: text/rodata 216 . = ALIGN(32); 217 SDK_STATIC_TEXT_END =.; 218 219 # 220 # DATA BLOCK: READ WRITE 221 # 222 SDK_STATIC_DATA_START =.; 223 #:::::::::: Data 224 <FOREACH.STATIC.OBJECTS=.sdata> 225 <STATIC.OBJECT=.sdata:t> 226 <END.STATIC.OBJECTS> 227 <FOREACH.STATIC.LIBRARIES=.sdata> 228 <STATIC.LIBRARY=.sdata:t> 229 <END.STATIC.LIBRARIES> 230 . = ALIGN(4); 231 <FOREACH.STATIC.OBJECTS=.data> 232 <STATIC.OBJECT=.data:t> 233 <END.STATIC.OBJECTS> 234 <FOREACH.STATIC.LIBRARIES=.data> 235 <STATIC.LIBRARY=.data:t> 236 <END.STATIC.LIBRARIES> 237 . = ALIGN(4); 238 SDK_OVERLAY_DIGEST =.; 239 # NO DIGEST 240 SDK_OVERLAY_DIGEST_END =.; 241 #:::::::::: Data 242 . = ALIGN(32); 243 SDK_STATIC_DATA_END =.; 244 SDK_STATIC_END =.; 245 246 SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; 247 SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; 248 SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; 249 __sinit__ = SDK_STATIC_SINIT_START; # for static initializer 250 __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table 251 __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table 252 } > <STATIC.NAME> 253 254 .<STATIC.NAME>_bss: 255 { 256 ALIGNALL(4); . = ALIGN(32); 257 258 # 259 # BSS BLOCK 260 # 261 SDK_STATIC_BSS_START =.; 262 #:::::::::: bss 263 <FOREACH.STATIC.OBJECTS=.sbss> 264 <STATIC.OBJECT=.sbss:t> 265 <END.STATIC.OBJECTS> 266 <FOREACH.STATIC.LIBRARIES=.sbss> 267 <STATIC.LIBRARY=.sbss:t> 268 <END.STATIC.LIBRARIES> 269 . = ALIGN(4); 270 <FOREACH.STATIC.OBJECTS=.bss> 271 <STATIC.OBJECT=.bss:t> 272 <END.STATIC.OBJECTS> 273 <FOREACH.STATIC.LIBRARIES=.bss> 274 <STATIC.LIBRARY=.bss:t> 275 <END.STATIC.LIBRARIES> 276 . = ALIGN(4); 277 #:::::::::: bss 278 . = ALIGN(32); 279 SDK_STATIC_BSS_END = .; 280 SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; 281 282 } >> <STATIC.NAME> 283 284 285 ############################ AUTOLOADS ############################## 286 SDK_AUTOLOAD_ITCM_START = 0x01ff8000; 287 SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD_ITCM_START; 288 SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD_ITCM_START; 289 SDK_AUTOLOAD_DTCM_START = 0x02380000; 290 SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD_DTCM_START; 291 SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD_DTCM_START; 292 SDK_AUTOLOAD_START = SDK_STATIC_END; 293 SDK_AUTOLOAD_SIZE = 0; 294 SDK_AUTOLOAD_NUMBER = <NUMBER.AUTOLOADS>; 295 296<FOREACH.AUTOLOADS> 297 .<AUTOLOAD.NAME>: 298 { 299 ALIGNALL(4); . = ALIGN(32); 300 301 # 302 # TEXT BLOCK: READ ONLY 303 # 304 SDK_AUTOLOAD_<AUTOLOAD.NAME>_ID =<AUTOLOAD.ID>; 305 SDK_AUTOLOAD_<AUTOLOAD.NAME>_START =.; 306 SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_START =.; 307 #:::::::::: text/rodata 308 <FOREACH.AUTOLOAD.OBJECTS=.text> 309 <AUTOLOAD.OBJECT=.text:t> 310 <END.AUTOLOAD.OBJECTS> 311 <FOREACH.AUTOLOAD.LIBRARIES=.text> 312 <AUTOLOAD.LIBRARY=.text:t> 313 <END.AUTOLOAD.LIBRARIES> 314 . = ALIGN(4); 315 <FOREACH.AUTOLOAD.OBJECTS=.itcm> 316 <AUTOLOAD.OBJECT=.itcm:t> 317 <END.AUTOLOAD.OBJECTS> 318 <FOREACH.AUTOLOAD.LIBRARIES=.itcm> 319 <AUTOLOAD.LIBRARY=.itcm:t> 320 <END.AUTOLOAD.LIBRARIES> 321 . = ALIGN(4); 322 <FOREACH.AUTOLOAD.OBJECTS=.rodata> 323 <AUTOLOAD.OBJECT=.rodata:t> 324 <END.AUTOLOAD.OBJECTS> 325 <FOREACH.AUTOLOAD.LIBRARIES=.rodata> 326 <AUTOLOAD.LIBRARY=.rodata:t> 327 <END.AUTOLOAD.LIBRARIES> 328 . = ALIGN(4); 329 #:::::::::: text/rodata 330 SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_END =.; 331 332 # 333 # DATA BLOCK: READ WRITE BLOCK 334 # 335 SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_START =.; 336 #:::::::::: Data 337 <FOREACH.AUTOLOAD.OBJECTS=.sdata> 338 <AUTOLOAD.OBJECT=.sdata:t> 339 <END.AUTOLOAD.OBJECTS> 340 <FOREACH.AUTOLOAD.LIBRARIES=.sdata> 341 <AUTOLOAD.LIBRARY=.sdata:t> 342 <END.AUTOLOAD.LIBRARIES> 343 . = ALIGN(4); 344 <FOREACH.AUTOLOAD.OBJECTS=.data> 345 <AUTOLOAD.OBJECT=.data:t> 346 <END.AUTOLOAD.OBJECTS> 347 <FOREACH.AUTOLOAD.LIBRARIES=.data> 348 <AUTOLOAD.LIBRARY=.data:t> 349 <END.AUTOLOAD.LIBRARIES> 350 . = ALIGN(4); 351 <FOREACH.AUTOLOAD.OBJECTS=.dtcm> 352 <AUTOLOAD.OBJECT=.dtcm:t> 353 <END.AUTOLOAD.OBJECTS> 354 <FOREACH.AUTOLOAD.LIBRARIES=.dtcm> 355 <AUTOLOAD.LIBRARY=.dtcm:t> 356 <END.AUTOLOAD.LIBRARIES> 357 . = ALIGN(4); 358 #:::::::::: Data 359 . = ALIGN(32); 360 SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_END =.; 361 SDK_AUTOLOAD_<AUTOLOAD.NAME>_END =.; 362 363 SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_TEXT_START; 364 SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_DATA_START; 365 SDK_AUTOLOAD_<AUTOLOAD.NAME>_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_START; 366 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD_<AUTOLOAD.NAME>_SIZE; 367 368 } > <AUTOLOAD.NAME> 369 370 .<AUTOLOAD.NAME>_bss: 371 { 372 ALIGNALL(4); . = ALIGN(32); 373 374 # 375 # BSS BLOCK 376 # 377 SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_START = .; 378 #:::::::::: bss 379 <FOREACH.AUTOLOAD.OBJECTS=.sbss> 380 <AUTOLOAD.OBJECT=.sbss:t> 381 <END.AUTOLOAD.OBJECTS> 382 <FOREACH.AUTOLOAD.LIBRARIES=.sbss> 383 <AUTOLOAD.LIBRARY=.sbss:t> 384 <END.AUTOLOAD.LIBRARIES> 385 . = ALIGN(4); 386 <FOREACH.AUTOLOAD.OBJECTS=.bss> 387 <AUTOLOAD.OBJECT=.bss:t> 388 <END.AUTOLOAD.OBJECTS> 389 <FOREACH.AUTOLOAD.LIBRARIES=.bss> 390 <AUTOLOAD.LIBRARY=.bss:t> 391 <END.AUTOLOAD.LIBRARIES> 392 . = ALIGN(4); 393 #:::::::::: bss 394 . = ALIGN(32); 395 SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_END = .; 396 397 SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_SIZE = SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_END - SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_START; 398 399 } >> <AUTOLOAD.NAME> 400 401<END.AUTOLOADS> 402 403 ############################ AUTOLOAD_INFO ########################## 404 .AUTOLOAD_INFO__: 405 { 406<FOREACH.AUTOLOADS> 407 WRITEW ADDR(.<AUTOLOAD.NAME>); 408 WRITEW SDK_AUTOLOAD_<AUTOLOAD.NAME>_SIZE; 409 WRITEW SDK_AUTOLOAD_<AUTOLOAD.NAME>_BSS_SIZE; 410<END.AUTOLOADS> 411 } > AUTOLOAD_INFO__ 412 413 SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; 414 SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.AUTOLOAD_INFO__); 415 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.AUTOLOAD_INFO__); 416 417 ############################ STATIC_FOOTER ########################## 418 .STATIC_FOOTER__: 419 { 420 WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE 421 WRITEW _start_ModuleParams - ADDR(.<STATIC.NAME>); 422 WRITEW 0; # NO DIGEST 423 } > STATIC_FOOTER__ 424 425 ############################ OVERLAYS ############################### 426 SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>; 427 428<FOREACH.OVERLAYS> 429 .<OVERLAY.NAME>: 430 { 431 ALIGNALL(4); . = ALIGN(32); 432 433 # 434 # TEXT BLOCK: READ ONLY 435 # 436 SDK_OVERLAY_<OVERLAY.NAME>_ID =<OVERLAY.ID>; ### SEGMENT <OVERLAY.NAME> OVERLAY ID 437 SDK_OVERLAY_<OVERLAY.NAME>_START =.; 438 SDK_OVERLAY_<OVERLAY.NAME>_TEXT_START =.; 439 #:::::::::: text/rodata 440 <FOREACH.OVERLAY.OBJECTS=.text> 441 <OVERLAY.OBJECT=.text:t> 442 <END.OVERLAY.OBJECTS> 443 <FOREACH.OVERLAY.LIBRARIES=.text> 444 <OVERLAY.LIBRARY=.text:t> 445 <END.OVERLAY.LIBRARIES> 446 . = ALIGN(4); 447 <FOREACH.OVERLAY.OBJECTS=.rodata> 448 <OVERLAY.OBJECT=.rodata:t> 449 <END.OVERLAY.OBJECTS> 450 <FOREACH.OVERLAY.LIBRARIES=.rodata> 451 <OVERLAY.LIBRARY=.rodata:t> 452 <END.OVERLAY.LIBRARIES> 453 . = ALIGN(4); 454 <FOREACH.OVERLAY.OBJECTS=.init> 455 <OVERLAY.OBJECT=.init:t> 456 <END.OVERLAY.OBJECTS> 457 <FOREACH.OVERLAY.LIBRARIES=.init> 458 <OVERLAY.LIBRARY=.init:t> 459 <END.OVERLAY.LIBRARIES> 460 . = ALIGN(4); 461 SDK_OVERLAY_<OVERLAY.NAME>_SINIT_START =.; 462 #:::::::::: ctor 463 <FOREACH.OVERLAY.OBJECTS=.ctor> 464 <OVERLAY.OBJECT=.ctor:t> 465 <END.OVERLAY.OBJECTS> 466 <FOREACH.OVERLAY.LIBRARIES=.ctor> 467 <OVERLAY.LIBRARY=.ctor:t> 468 <END.OVERLAY.LIBRARIES> 469 WRITEW 0; 470 #:::::::::: ctor 471 SDK_OVERLAY_<OVERLAY.NAME>_SINIT_END =.; 472 473 #:::::::::: text/rodata 474 . = ALIGN(32); 475 SDK_OVERLAY_<OVERLAY.NAME>_TEXT_END =.; 476 477 # 478 # DATA BLOCK: READ WRITE 479 # 480 SDK_OVERLAY_<OVERLAY.NAME>_DATA_START =.; 481 #:::::::::: Data 482 <FOREACH.OVERLAY.OBJECTS=.sdata> 483 <OVERLAY.OBJECT=.sdata:t> 484 <END.OVERLAY.OBJECTS> 485 <FOREACH.OVERLAY.LIBRARIES=.sdata> 486 <OVERLAY.LIBRARY=.sdata:t> 487 <END.OVERLAY.LIBRARIES> 488 . = ALIGN(4); 489 <FOREACH.OVERLAY.OBJECTS=.data> 490 <OVERLAY.OBJECT=.data:t> 491 <END.OVERLAY.OBJECTS> 492 <FOREACH.OVERLAY.LIBRARIES=.data> 493 <OVERLAY.LIBRARY=.data:t> 494 <END.OVERLAY.LIBRARIES> 495 . = ALIGN(4); 496 #:::::::::: Data 497 . = ALIGN(32); 498 SDK_OVERLAY_<OVERLAY.NAME>_DATA_END =.; 499 SDK_OVERLAY_<OVERLAY.NAME>_END =.; 500 501 SDK_OVERLAY_<OVERLAY.NAME>_TEXT_SIZE = SDK_OVERLAY_<OVERLAY.NAME>_TEXT_END - SDK_OVERLAY_<OVERLAY.NAME>_TEXT_START; 502 SDK_OVERLAY_<OVERLAY.NAME>_DATA_SIZE = SDK_OVERLAY_<OVERLAY.NAME>_DATA_END - SDK_OVERLAY_<OVERLAY.NAME>_DATA_START; 503 SDK_OVERLAY_<OVERLAY.NAME>_SIZE = SDK_OVERLAY_<OVERLAY.NAME>_END - SDK_OVERLAY_<OVERLAY.NAME>_START; 504 505 } > <OVERLAY.NAME> 506 507 .<OVERLAY.NAME>_bss: 508 { 509 ALIGNALL(4); . = ALIGN(32); 510 511 # 512 # BSS BLOCK 513 # 514 SDK_OVERLAY_<OVERLAY.NAME>_BSS_START = .; 515 #:::::::::: bss 516 <FOREACH.OVERLAY.OBJECTS=.bss> 517 <OVERLAY.OBJECT=.bss:t> 518 <END.OVERLAY.OBJECTS> 519 <FOREACH.OVERLAY.LIBRARIES=.bss> 520 <OVERLAY.LIBRARY=.bss:t> 521 <END.OVERLAY.LIBRARIES> 522 . = ALIGN(4); 523 <FOREACH.OVERLAY.OBJECTS=.sbss> 524 <OVERLAY.OBJECT=.sbss:t> 525 <END.OVERLAY.OBJECTS> 526 <FOREACH.OVERLAY.LIBRARIES=.sbss> 527 <OVERLAY.LIBRARY=.sbss:t> 528 <END.OVERLAY.LIBRARIES> 529 . = ALIGN(4); 530 #:::::::::: bss 531 . = ALIGN(32); 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 541 ############################ MAIN EX ################################## 542 .MAIN_EX__: 543 { 544 . = ALIGN(32); 545 } > MAIN_EX__ 546 547 548 ############################ ARENA ################################## 549 .ARENA__: 550 { 551 . = ALIGN(32); 552 SDK_SECTION_ARENA_START =.; 553 } > ARENA__ 554 555 .ARENA_EX__: 556 { 557 . = ALIGN(32); 558 SDK_SECTION_ARENA_EX_START =.; 559 } > ARENA_EX__ 560 561 .ARENA_ITCM__: 562 { 563 . = ALIGN(32); 564 SDK_SECTION_ARENA_ITCM_START =.; 565 } > ARENA_ITCM__ 566 567 .ARENA_DTCM__: 568 { 569 . = ALIGN(32); 570 SDK_SECTION_ARENA_DTCM_START =.; 571 } > ARENA_DTCM__ 572 573 574 ############################ OVERLAYDEFS ############################ 575 .<PROPERTY.OVERLAYDEFS>: 576 { 577 ### <STATIC.NAME> module information 578 WRITEW ADDR(.<STATIC.NAME>); # Load address 579 WRITEW _start; # Entry address 580 WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # Size of module 581 WRITEW _start_AutoloadDoneCallback; # Callback autoload done 582 583 ### overlay filename 584 <FOREACH.OVERLAYS> 585 WRITES ("<OVERLAY.NAME><PROPERTY.SUFFIX>"); # Overlay <OVERLAY.ID> 586 <END.OVERLAYS> 587 588 } > <PROPERTY.OVERLAYDEFS> 589 590 591 ############################ OVERLAYTABLE ########################### 592 .<PROPERTY.OVERLAYTABLE>: 593 { 594 <FOREACH.OVERLAYS> 595 # Overlay <OVERLAY.ID> 596 WRITEW <OVERLAY.ID>; # Overlay ID 597 WRITEW ADDR(.<OVERLAY.NAME>); # Load address 598 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_SIZE; # Size of module 599 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_BSS_SIZE; # Size of bss 600 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_SINIT_START; # Start address of static init 601 WRITEW SDK_OVERLAY_<OVERLAY.NAME>_SINIT_END; # End address of static init 602 WRITEW <OVERLAY.ID>; # ROM file ID 603 WRITEW 0; # Reserved 604 605 <END.OVERLAYS> 606 607 } > <PROPERTY.OVERLAYTABLE> 608 609 610 ############################ OTHERS ################################# 611 SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; 612 SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # Allocated in DTCM 613 SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # When 0 means all remains of DTCM 614 615 # Module filelist 616 .MODULE_FILES__: 617 { 618 WRITES ("<STATIC.NAME><PROPERTY.SUFFIX>"); 619 WRITES ("<PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX>"); 620 WRITES ("<PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX>"); 621 } > MODULE_FILES__ 622 623 # ITCM/DTCM size checker => check AUTOLOAD_ITCM/DTCM 624 .ITCM__: 625 { 626 . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; 627<FOREACH.OVERLAYS=ITCM> 628 . = . + SDK_OVERLAY_<OVERLAY.NAME>_SIZE + SDK_OVERLAY_<OVERLAY.NAME>_BSS_SIZE; 629<END.OVERLAYS> 630 } > ITCM__ 631 632 SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; 633 .DTCM__: 634 { 635 . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; 636<FOREACH.OVERLAYS=DTCM> 637 . = . + SDK_OVERLAY_<OVERLAY.NAME>_SIZE + SDK_OVERLAY_<OVERLAY.NAME>_BSS_SIZE; 638<END.OVERLAYS> 639 . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 640 } > DTCM__ 641 642} 643