1#--------------------------------------------------------------------------- 2# Project: NitroSDK - tools - makelcf 3# File: ARM7-TS.lcf.template 4# 5# Copyright 2003-2008 Nintendo. All rights reserved. 6# 7# These coded instructions, statements, and computer programs contain 8# proprietary information of Nintendo of America Inc. and/or Nintendo 9# Company Ltd., and are protected by Federal copyright law. They may 10# not be disclosed to third parties or copied or duplicated in any form, 11# in whole or in part, without the prior written consent of Nintendo. 12# 13# $Log: ARM7-TS.lcf.template,v $ 14# Revision 1.24 2006/05/10 03:19:47 yasu 15# Added support for the CodeWarrior 2.x overlay expansion 16# 17# Revision 1.23 2006/04/07 04:45:14 kitase_hirotake 18# Added .wram.bss 19# 20# Revision 1.22 2006/03/30 00:43:20 yasu 21# Updated copyright year 22# 23# Revision 1.21 2006/03/29 13:19:14 yasu 24# NUMBER_OVERLAYS revised to NUMBER.OVERLAYS 25# 26# Revision 1.20 2005/09/02 04:14:22 yasu 27# Old symbols were redefined so they can be used even under SDK2.2 28# 29# Revision 1.19 2005/08/31 09:34:57 yasu 30# Corrected a problem where code would not function normally when using section names such as section_BSS 31# 32# Revision 1.18 2005/06/20 12:29:20 yasu 33# Changed Surffix to Suffix 34# 35# Revision 1.17 2005/06/14 09:03:42 yada 36# Fix specific to negative value of SDK_STACKSIZE 37# 38# Revision 1.16 2005/04/14 00:04:17 terui 39# Updated copyright. 40# 41# Revision 1.15 2005/04/13 12:52:50 terui 42# Changed SDK_AUTOLOAD.MAIN.START 0x027c0000 to 0x027e0000 43# 44# Revision 1.14 2004/09/08 01:27:18 yasu 45# Added * (.wram) on static segment 46# 47# Revision 1.13 2004/08/18 01:50:40 yasu 48# Support for SDK_SUBPRIV_ARENA_LO 49# 50# Revision 1.12 2004/08/02 10:38:53 yasu 51# Added autoload-done callback address in overlaydefs 52# 53# Revision 1.11 2004/07/26 00:08:27 yasu 54# Fixed label of exception table 55# 56# Revision 1.10 2004/07/24 05:42:25 yasu 57# Set default values for SDK_AUTOGEN_xTCM_START 58# 59# Revision 1.9 2004/07/23 11:32:14 yasu 60# Defined labels for __exception_table_start__ and _end__ 61# 62# Revision 1.8 2004/07/12 12:24:12 yasu 63# Fixed checking WRAM 64# 65# Revision 1.7 2004/07/10 04:10:26 yasu 66# Added support for command 'Library' 67# 68# Revision 1.6 2004/07/02 08:13:02 yasu 69# Added support for OBJECT() 70# 71# Revision 1.5 2004/07/01 12:54:38 yasu 72# Added support for ITCM/DTCM/WRAM autoload 73# 74# Revision 1.4 2004/07/01 10:41:46 yasu 75# Added support for autoload 76# 77# Revision 1.3 2004/05/28 02:11:15 yasu 78# Set WRAM arena region correctly 79# 80# Revision 1.2 2004/04/26 12:17:49 yasu 81# Added KEEP_SECTIONS 82# 83# Revision 1.1 2004/04/06 01:59:54 yasu 84# Newly added 85# 86# $NoKeywords: $ 87#--------------------------------------------------------------------------- 88MEMORY 89{ 90 <STATIC.NAME> (RWX) : ORIGIN = <STATIC.ADDRESS>, LENGTH = 0x0 > <STATIC.NAME><PROPERTY.SUFFIX> 91 <FOREACH.AUTOLOADS> 92 <AUTOLOAD.NAME> (RWX) : ORIGIN = <AUTOLOAD.ADDRESS>, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 93 <END.AUTOLOADS> 94 binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> <STATIC.NAME><PROPERTY.SUFFIX> 95 96 <PROPERTY.OVERLAYDEFS> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYDEFS><PROPERTY.SUFFIX> 97 <PROPERTY.OVERLAYTABLE> (RW) : ORIGIN = AFTER(<STATIC.NAME>), LENGTH = 0x0 > <PROPERTY.OVERLAYTABLE><PROPERTY.SUFFIX> 98 <FOREACH.OVERLAYS> 99 <OVERLAY.NAME> (RWXO): ORIGIN = <OVERLAY.ADDRESS>, LENGTH = 0x0 > <OVERLAY.NAME><PROPERTY.SUFFIX> 100 <END.OVERLAYS> 101 arena.MAIN (RW) : ORIGIN = AFTER(<STATIC.NAME><FOREACH.OVERLAYS>,<OVERLAY.NAME><END.OVERLAYS>), LENGTH = 0x0 102 check.WORKRAM (RWX) : ORIGIN = 0x037f8000, LENGTH = 0x18000 > workram.check 103 check.MAIN (RWX) : ORIGIN = 0x027e0000, LENGTH = 0x1c000 > main.check 104} 105 106SECTIONS 107{ 108 ############################ STATIC ################################# 109 .<STATIC.NAME>: 110 { 111 ALIGNALL(4); . = ALIGN(4); # Fit to cache line 112 <IF.NITRO_LCFSPEC.GE.2> 113 <FOREACH.STATIC.SEARCHSYMBOLS> 114 SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>; 115 <END.STATIC.SEARCHSYMBOLS> 116 <ENDIF> 117 # 118 # TEXT BLOCK: READ ONLY 119 # 120 SDK_STATIC_START =.; 121 SDK_STATIC_TEXT_START =.; 122 #:::::::::: text/rodata 123 OBJECT(_start,*) 124 crt0.o (.text) 125 <FOREACH.STATIC.OBJECTS=.text> 126 <STATIC.OBJECT=.text:t> 127 <END.STATIC.OBJECTS> 128 <FOREACH.STATIC.LIBRARIES=.text> 129 <STATIC.LIBRARY=.text:t> 130 <END.STATIC.LIBRARIES> 131 . = ALIGN(4); 132 * (.exception) 133 . = ALIGN(4); 134 SDK_STATIC_ETABLE_START =.; 135 EXCEPTION 136 SDK_STATIC_ETABLE_END =.; 137 . = ALIGN(4); 138 <FOREACH.STATIC.OBJECTS=.init> 139 <STATIC.OBJECT=.init:t> 140 <END.STATIC.OBJECTS> 141 <FOREACH.STATIC.LIBRARIES=.init> 142 <STATIC.LIBRARY=.init:t> 143 <END.STATIC.LIBRARIES> 144 . = ALIGN(4); 145 <FOREACH.STATIC.OBJECTS=.rodata> 146 <STATIC.OBJECT=.rodata:t> 147 <END.STATIC.OBJECTS> 148 <FOREACH.STATIC.LIBRARIES=.rodata> 149 <STATIC.LIBRARY=.rodata:t> 150 <END.STATIC.LIBRARIES> 151 . = ALIGN(4); 152 153 SDK_STATIC_SINIT_START =.; 154 #:::::::::: ctor 155 <FOREACH.STATIC.OBJECTS=.ctor> 156 <STATIC.OBJECT=.ctor:t> 157 <END.STATIC.OBJECTS> 158 <FOREACH.STATIC.LIBRARIES=.ctor> 159 <STATIC.LIBRARY=.ctor:t> 160 <END.STATIC.LIBRARIES> 161 WRITEW 0; 162 #:::::::::: ctor 163 SDK_STATIC_SINIT_END =.; 164 165 #:::::::::: text/rodata 166 . = ALIGN(4); 167 SDK_STATIC_TEXT_END =.; 168 169 # 170 # DATA BLOCK: READ WRITE 171 # 172 SDK_STATIC_DATA_START =.; 173 #:::::::::: Data 174 <FOREACH.STATIC.OBJECTS=.wram> 175 <STATIC.OBJECT=.wram:t> 176 <END.STATIC.OBJECTS> 177 <FOREACH.STATIC.LIBRARIES=.wram> 178 <STATIC.LIBRARY=.wram:t> 179 <END.STATIC.LIBRARIES> 180 . = ALIGN(4); 181 <FOREACH.STATIC.OBJECTS=.sdata> 182 <STATIC.OBJECT=.sdata:t> 183 <END.STATIC.OBJECTS> 184 <FOREACH.STATIC.LIBRARIES=.sdata> 185 <STATIC.LIBRARY=.sdata:t> 186 <END.STATIC.LIBRARIES> 187 . = ALIGN(4); 188 <FOREACH.STATIC.OBJECTS=.data> 189 <STATIC.OBJECT=.data:t> 190 <END.STATIC.OBJECTS> 191 <FOREACH.STATIC.LIBRARIES=.data> 192 <STATIC.LIBRARY=.data:t> 193 <END.STATIC.LIBRARIES> 194 . = ALIGN(4); 195 #:::::::::: Data 196 . = ALIGN(4); 197 SDK_STATIC_DATA_END =.; 198 SDK_STATIC_END =.; 199 200 SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; 201 SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; 202 SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; 203 __sinit__ = SDK_STATIC_SINIT_START; # For static initializer 204 __exception_table_start__ = SDK_STATIC_ETABLE_START; # For exception table 205 __exception_table_end__ = SDK_STATIC_ETABLE_END; # For exception table 206 } > <STATIC.NAME> 207 208 .<STATIC.NAME>.bss: 209 { 210 ALIGNALL(4); . = ALIGN(4); 211 <IF.NITRO_LCFSPEC.GE.2> 212 <FOREACH.STATIC.SEARCHSYMBOLS> 213 SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>; 214 <END.STATIC.SEARCHSYMBOLS> 215 <ENDIF> 216 # 217 # BSS BLOCK 218 # 219 SDK_STATIC_BSS_START =.; 220 #:::::::::: bss 221 <FOREACH.STATIC.OBJECTS=.sbss> 222 <STATIC.OBJECT=.sbss:t> 223 <END.STATIC.OBJECTS> 224 <FOREACH.STATIC.LIBRARIES=.sbss> 225 <STATIC.LIBRARY=.sbss:t> 226 <END.STATIC.LIBRARIES> 227 . = ALIGN(4); 228 <FOREACH.STATIC.OBJECTS=.bss> 229 <STATIC.OBJECT=.bss:t> 230 <END.STATIC.OBJECTS> 231 <FOREACH.STATIC.LIBRARIES=.bss> 232 <STATIC.LIBRARY=.bss:t> 233 <END.STATIC.LIBRARIES> 234 . = ALIGN(4); 235 #:::::::::: bss 236 . = ALIGN(4); 237 SDK_STATIC_BSS_END = .; 238 SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; 239 240 } >> <STATIC.NAME> 241 242 243 ############################ AUTOLOADS ############################## 244 SDK_AUTOLOAD.MAIN.START = 0x027e0000; 245 SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START; 246 SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START; 247 SDK_AUTOLOAD.MAIN.SIZE = 0; 248 SDK_AUTOLOAD.MAIN.BSS_SIZE = 0; 249 SDK_AUTOLOAD.WRAM.START = 0x037f8000; 250 SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START; 251 SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START; 252 SDK_AUTOLOAD.WRAM.SIZE = 0; 253 SDK_AUTOLOAD.WRAM.BSS_SIZE = 0; 254 SDK_AUTOLOAD_START = SDK_STATIC_END; 255 SDK_AUTOLOAD_SIZE = 0; 256 SDK_AUTOLOAD_NUMBER = <NUMBER.AUTOLOADS>; 257 258<FOREACH.AUTOLOADS> 259 .<AUTOLOAD.NAME>: 260 { 261 ALIGNALL(4); . = ALIGN(4); 262 <IF.NITRO_LCFSPEC.GE.2> 263 <FOREACH.AUTOLOAD.SEARCHSYMBOLS> 264 SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>; 265 <END.AUTOLOAD.SEARCHSYMBOLS> 266 <ENDIF> 267 # 268 # TEXT BLOCK: READ ONLY 269 # 270 SDK_AUTOLOAD_<AUTOLOAD.NAME>_ID =<AUTOLOAD.ID>; 271 SDK_AUTOLOAD.<AUTOLOAD.NAME>.ID =<AUTOLOAD.ID>; 272 SDK_AUTOLOAD.<AUTOLOAD.NAME>.START =.; 273 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START =.; 274 #:::::::::: text/rodata 275 <FOREACH.AUTOLOAD.OBJECTS=.text> 276 <AUTOLOAD.OBJECT=.text:t> 277 <END.AUTOLOAD.OBJECTS> 278 <FOREACH.AUTOLOAD.LIBRARIES=.text> 279 <AUTOLOAD.LIBRARY=.text:t> 280 <END.AUTOLOAD.LIBRARIES> 281 . = ALIGN(4); 282 <FOREACH.AUTOLOAD.OBJECTS=.rodata> 283 <AUTOLOAD.OBJECT=.rodata:t> 284 <END.AUTOLOAD.OBJECTS> 285 <FOREACH.AUTOLOAD.LIBRARIES=.rodata> 286 <AUTOLOAD.LIBRARY=.rodata:t> 287 <END.AUTOLOAD.LIBRARIES> 288 . = ALIGN(4); 289 #:::::::::: text/rodata 290 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.; 291 292 # 293 # DATA BLOCK: READ WRITE BLOCK 294 # 295 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START =.; 296 #:::::::::: Data 297 <FOREACH.AUTOLOAD.OBJECTS=.wram> 298 <AUTOLOAD.OBJECT=.wram:t> 299 <END.AUTOLOAD.OBJECTS> 300 <FOREACH.AUTOLOAD.LIBRARIES=.wram> 301 <AUTOLOAD.LIBRARY=.wram:t> 302 <END.AUTOLOAD.LIBRARIES> 303 . = ALIGN(4); 304 <FOREACH.AUTOLOAD.OBJECTS=.sdata> 305 <AUTOLOAD.OBJECT=.sdata:t> 306 <END.AUTOLOAD.OBJECTS> 307 <FOREACH.AUTOLOAD.LIBRARIES=.sdata> 308 <AUTOLOAD.LIBRARY=.sdata:t> 309 <END.AUTOLOAD.LIBRARIES> 310 . = ALIGN(4); 311 <FOREACH.AUTOLOAD.OBJECTS=.data> 312 <AUTOLOAD.OBJECT=.data:t> 313 <END.AUTOLOAD.OBJECTS> 314 <FOREACH.AUTOLOAD.LIBRARIES=.data> 315 <AUTOLOAD.LIBRARY=.data:t> 316 <END.AUTOLOAD.LIBRARIES> 317 . = ALIGN(4); 318 #:::::::::: Data 319 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.; 320 SDK_AUTOLOAD.<AUTOLOAD.NAME>.END =.; 321 322 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START; 323 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START; 324 SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.START; 325 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE; 326 327 } > <AUTOLOAD.NAME> 328 329 .<AUTOLOAD.NAME>.bss: 330 { 331 ALIGNALL(4); . = ALIGN(4); 332 <IF.NITRO_LCFSPEC.GE.2> 333 <FOREACH.AUTOLOAD.SEARCHSYMBOLS> 334 SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>; 335 <END.AUTOLOAD.SEARCHSYMBOLS> 336 <ENDIF> 337 # 338 # BSS BLOCK 339 # 340 SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .; 341 #:::::::::: bss 342 <FOREACH.AUTOLOAD.OBJECTS=.sbss> 343 <AUTOLOAD.OBJECT=.sbss:t> 344 <END.AUTOLOAD.OBJECTS> 345 <FOREACH.AUTOLOAD.LIBRARIES=.sbss> 346 <AUTOLOAD.LIBRARY=.sbss:t> 347 <END.AUTOLOAD.LIBRARIES> 348 . = ALIGN(4); 349 <FOREACH.AUTOLOAD.OBJECTS=.bss> 350 <AUTOLOAD.OBJECT=.bss:t> 351 <END.AUTOLOAD.OBJECTS> 352 <FOREACH.AUTOLOAD.LIBRARIES=.bss> 353 <AUTOLOAD.LIBRARY=.bss:t> 354 <END.AUTOLOAD.LIBRARIES> 355 . = ALIGN(4); 356 <FOREACH.AUTOLOAD.OBJECTS=.wram> 357 <AUTOLOAD.OBJECT=.wram.bss:t> 358 <END.AUTOLOAD.OBJECTS> 359 <FOREACH.AUTOLOAD.LIBRARIES=.wram> 360 <AUTOLOAD.LIBRARY=.wram.bss:t> 361 <END.AUTOLOAD.LIBRARIES> 362 . = ALIGN(4); 363 #:::::::::: bss 364 . = ALIGN(4); 365 SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END = .; 366 367 SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE = SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_END - SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START; 368 369 } >> <AUTOLOAD.NAME> 370 371<END.AUTOLOADS> 372 373 SDK_AUTOLOAD_MAIN_START = SDK_AUTOLOAD.MAIN.START; 374 SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END; 375 SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END; 376 SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE; 377 SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE; 378 SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START; 379 SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END; 380 SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END; 381 SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE; 382 SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE; 383 384 ############################ AUTOLOAD_INFO ########################## 385 .binary.AUTOLOAD_INFO: 386 { 387<FOREACH.AUTOLOADS> 388 WRITEW ADDR(.<AUTOLOAD.NAME>); 389 WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.SIZE; 390 WRITEW SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_SIZE; 391<END.AUTOLOADS> 392 } > binary.AUTOLOAD_INFO 393 394 SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; 395 SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 396 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 397 398 ############################ OVERLAYS ############################### 399 SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>; 400 401<FOREACH.OVERLAYS> 402 .<OVERLAY.NAME>:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF> 403 { 404 ALIGNALL(4); . = ALIGN(4); 405 <IF.NITRO_LCFSPEC.GE.2> 406 <FOREACH.OVERLAY.SEARCHSYMBOLS> 407 SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>; 408 <END.OVERLAY.SEARCHSYMBOLS> 409 <ENDIF> 410 # 411 # TEXT BLOCK: READ ONLY 412 # 413 SDK_OVERLAY_<OVERLAY.NAME>_ID =<OVERLAY.ID>; ### SEGMENT <OVERLAY.NAME> OVERLAY ID 414 SDK_OVERLAY.<OVERLAY.NAME>.ID =<OVERLAY.ID>; 415 SDK_OVERLAY.<OVERLAY.NAME>.START =.; 416 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START =.; 417 #:::::::::: text/rodata 418 <FOREACH.OVERLAY.OBJECTS=.text> 419 <OVERLAY.OBJECT=.text:t> 420 <END.OVERLAY.OBJECTS> 421 <FOREACH.OVERLAY.LIBRARIES=.text> 422 <OVERLAY.LIBRARY=.text:t> 423 <END.OVERLAY.LIBRARIES> 424 . = ALIGN(4); 425 <FOREACH.OVERLAY.OBJECTS=.rodata> 426 <OVERLAY.OBJECT=.rodata:t> 427 <END.OVERLAY.OBJECTS> 428 <FOREACH.OVERLAY.LIBRARIES=.rodata> 429 <OVERLAY.LIBRARY=.rodata:t> 430 <END.OVERLAY.LIBRARIES> 431 . = ALIGN(4); 432 <FOREACH.OVERLAY.OBJECTS=.init> 433 <OVERLAY.OBJECT=.init:t> 434 <END.OVERLAY.OBJECTS> 435 <FOREACH.OVERLAY.LIBRARIES=.init> 436 <OVERLAY.LIBRARY=.init:t> 437 <END.OVERLAY.LIBRARIES> 438 . = ALIGN(4); 439 SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START =.; 440 #:::::::::: ctor 441 <FOREACH.OVERLAY.OBJECTS=.ctor> 442 <OVERLAY.OBJECT=.ctor:t> 443 <END.OVERLAY.OBJECTS> 444 <FOREACH.OVERLAY.LIBRARIES=.ctor> 445 <OVERLAY.LIBRARY=.ctor:t> 446 <END.OVERLAY.LIBRARIES> 447 WRITEW 0; 448 #:::::::::: ctor 449 SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.; 450 451 #:::::::::: text/rodata 452 . = ALIGN(4); 453 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.; 454 455 # 456 # DATA BLOCK: READ WRITE 457 # 458 SDK_OVERLAY.<OVERLAY.NAME>.DATA_START =.; 459 #:::::::::: Data 460 <FOREACH.OVERLAY.OBJECTS=.sdata> 461 <OVERLAY.OBJECT=.sdata:t> 462 <END.OVERLAY.OBJECTS> 463 <FOREACH.OVERLAY.LIBRARIES=.sdata> 464 <OVERLAY.LIBRARY=.sdata:t> 465 <END.OVERLAY.LIBRARIES> 466 . = ALIGN(4); 467 <FOREACH.OVERLAY.OBJECTS=.data> 468 <OVERLAY.OBJECT=.data:t> 469 <END.OVERLAY.OBJECTS> 470 <FOREACH.OVERLAY.LIBRARIES=.data> 471 <OVERLAY.LIBRARY=.data:t> 472 <END.OVERLAY.LIBRARIES> 473 . = ALIGN(4); 474 #:::::::::: Data 475 . = ALIGN(4); 476 SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.; 477 SDK_OVERLAY.<OVERLAY.NAME>.END =.; 478 479 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END - SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START; 480 SDK_OVERLAY.<OVERLAY.NAME>.DATA_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.DATA_END - SDK_OVERLAY.<OVERLAY.NAME>.DATA_START; 481 SDK_OVERLAY.<OVERLAY.NAME>.SIZE = SDK_OVERLAY.<OVERLAY.NAME>.END - SDK_OVERLAY.<OVERLAY.NAME>.START; 482 483 } > <OVERLAY.NAME> 484 485 .<OVERLAY.NAME>.bss:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF> 486 { 487 ALIGNALL(4); . = ALIGN(4); 488 <IF.NITRO_LCFSPEC.GE.2> 489 <FOREACH.OVERLAY.SEARCHSYMBOLS> 490 SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>; 491 <END.OVERLAY.SEARCHSYMBOLS> 492 <ENDIF> 493 # 494 # BSS BLOCK 495 # 496 SDK_OVERLAY.<OVERLAY.NAME>.BSS_START = .; 497 #:::::::::: bss 498 <FOREACH.OVERLAY.OBJECTS=.bss> 499 <OVERLAY.OBJECT=.bss:t> 500 <END.OVERLAY.OBJECTS> 501 <FOREACH.OVERLAY.LIBRARIES=.bss> 502 <OVERLAY.LIBRARY=.bss:t> 503 <END.OVERLAY.LIBRARIES> 504 . = ALIGN(4); 505 <FOREACH.OVERLAY.OBJECTS=.sbss> 506 <OVERLAY.OBJECT=.sbss:t> 507 <END.OVERLAY.OBJECTS> 508 <FOREACH.OVERLAY.LIBRARIES=.sbss> 509 <OVERLAY.LIBRARY=.sbss:t> 510 <END.OVERLAY.LIBRARIES> 511 . = ALIGN(4); 512 #:::::::::: bss 513 . = ALIGN(4); 514 SDK_OVERLAY.<OVERLAY.NAME>.BSS_END = .; 515 516 SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.BSS_END - SDK_OVERLAY.<OVERLAY.NAME>.BSS_START; 517 518 } >> <OVERLAY.NAME> 519 520<END.OVERLAYS> 521 522 523 ############################ ARENA ################################## 524 .arena.MAIN: 525 { 526 . = ALIGN(4); 527 SDK_SECTION_ARENA_START =.; 528 } > arena.MAIN 529 530 531 ############################ OVERLAYDEFS ############################ 532 .<PROPERTY.OVERLAYDEFS>: 533 { 534 ### <STATIC.NAME> module information 535 WRITEW ADDR(.<STATIC.NAME>); # Load address 536 WRITEW _start; # Entry address 537 WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # Size of module 538 WRITEW _start_AutoloadDoneCallback; # Callback autoload done 539 540 ### overlay filename 541 <FOREACH.OVERLAYS> 542 WRITES ("<OVERLAY.NAME><PROPERTY.SUFFIX>"); # Overlay <OVERLAY.ID> 543 <END.OVERLAYS> 544 545 } > <PROPERTY.OVERLAYDEFS> 546 547 548 ############################ OVERLAYTABLE ########################### 549 .<PROPERTY.OVERLAYTABLE>: 550 { 551 <FOREACH.OVERLAYS> 552 # Overlay <OVERLAY.ID> 553 WRITEW <OVERLAY.ID>; # Overlay ID 554 WRITEW ADDR(.<OVERLAY.NAME>); # Load address 555 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SIZE; # Size of module 556 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE; # Size of bss 557 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START; # Start address of static init 558 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END; # End address of static init 559 WRITEW <OVERLAY.ID>; # ROM file ID 560 WRITEW 0; # Reserved 561 562 <END.OVERLAYS> 563 564 } > <PROPERTY.OVERLAYTABLE> 565 566 567 ############################ OTHERS ################################# 568 SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END; 569 SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END; 570 SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # Allocated in WRAM 571 SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # Allocated in WRAM 572 573 # Work RAM size checker => check AUTOLOAD_WRAM 574 SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; 575 .check.WORKRAM: 576 { 577# . = . + SDK_AUTOLOAD.WRAM.BSS_END - 0x037f8000 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 578 . = . + SDK_AUTOLOAD.WRAM.BSS_END - 0x037f8000; 579 . = ALIGN(32); 580 . = . + 0x2100; 581 . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 582 } > check.WORKRAM 583 584 .check.MAIN: 585 { 586 . = SDK_SUBPRIV_ARENA_LO; 587 } > check.MAIN 588} 589