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.FORCES> 126 FORCE_OBJECT<STATIC.FORCE> 127 <END.STATIC.FORCES> 128 <FOREACH.STATIC.OBJECTS=.text> 129 <STATIC.OBJECT=.text:t> 130 <END.STATIC.OBJECTS> 131 <FOREACH.STATIC.LIBRARIES=.text> 132 <STATIC.LIBRARY=.text:t> 133 <END.STATIC.LIBRARIES> 134 . = ALIGN(4); 135 * (.exception) 136 . = ALIGN(4); 137 SDK_STATIC_ETABLE_START =.; 138 EXCEPTION 139 SDK_STATIC_ETABLE_END =.; 140 . = ALIGN(4); 141 <FOREACH.STATIC.OBJECTS=.init> 142 <STATIC.OBJECT=.init:t> 143 <END.STATIC.OBJECTS> 144 <FOREACH.STATIC.LIBRARIES=.init> 145 <STATIC.LIBRARY=.init:t> 146 <END.STATIC.LIBRARIES> 147 . = ALIGN(4); 148 <FOREACH.STATIC.OBJECTS=.rodata> 149 <STATIC.OBJECT=.rodata:t> 150 <END.STATIC.OBJECTS> 151 <FOREACH.STATIC.LIBRARIES=.rodata> 152 <STATIC.LIBRARY=.rodata:t> 153 <END.STATIC.LIBRARIES> 154 . = ALIGN(4); 155 156 SDK_STATIC_SINIT_START =.; 157 #:::::::::: ctor 158 <FOREACH.STATIC.OBJECTS=.ctor> 159 <STATIC.OBJECT=.ctor:t> 160 <END.STATIC.OBJECTS> 161 <FOREACH.STATIC.LIBRARIES=.ctor> 162 <STATIC.LIBRARY=.ctor:t> 163 <END.STATIC.LIBRARIES> 164 WRITEW 0; 165 #:::::::::: ctor 166 SDK_STATIC_SINIT_END =.; 167 168 #:::::::::: text/rodata 169 . = ALIGN(4); 170 SDK_STATIC_TEXT_END =.; 171 172 # 173 # DATA BLOCK: READ WRITE 174 # 175 SDK_STATIC_DATA_START =.; 176 #:::::::::: data 177 <FOREACH.STATIC.OBJECTS=.wram> 178 <STATIC.OBJECT=.wram:t> 179 <END.STATIC.OBJECTS> 180 <FOREACH.STATIC.LIBRARIES=.wram> 181 <STATIC.LIBRARY=.wram:t> 182 <END.STATIC.LIBRARIES> 183 . = ALIGN(4); 184 <FOREACH.STATIC.OBJECTS=.main> 185 <STATIC.OBJECT=.main:t> 186 <END.STATIC.OBJECTS> 187 <FOREACH.STATIC.LIBRARIES=.main> 188 <STATIC.LIBRARY=.main:t> 189 <END.STATIC.LIBRARIES> 190 . = ALIGN(4); 191 <FOREACH.STATIC.OBJECTS=.sdata> 192 <STATIC.OBJECT=.sdata:t> 193 <END.STATIC.OBJECTS> 194 <FOREACH.STATIC.LIBRARIES=.sdata> 195 <STATIC.LIBRARY=.sdata:t> 196 <END.STATIC.LIBRARIES> 197 . = ALIGN(4); 198 <FOREACH.STATIC.OBJECTS=.data> 199 <STATIC.OBJECT=.data:t> 200 <END.STATIC.OBJECTS> 201 <FOREACH.STATIC.LIBRARIES=.data> 202 <STATIC.LIBRARY=.data:t> 203 <END.STATIC.LIBRARIES> 204 . = ALIGN(4); 205 #:::::::::: data 206 . = ALIGN(4); 207 SDK_STATIC_DATA_END =.; 208 SDK_STATIC_END =.; 209 210 SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; 211 SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; 212 SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; 213 __sinit__ = SDK_STATIC_SINIT_START; # for static initializer 214 __exception_table_start__ = SDK_STATIC_ETABLE_START; # for exception table 215 __exception_table_end__ = SDK_STATIC_ETABLE_END; # for exception table 216 } > <STATIC.NAME> 217 218 .<STATIC.NAME>.bss: 219 { 220 ALIGNALL(4); . = ALIGN(4); 221 <IF.NITRO_LCFSPEC.GE.2> 222 <FOREACH.STATIC.SEARCHSYMBOLS> 223 SEARCH_SYMBOL <STATIC.SEARCHSYMBOL>; 224 <END.STATIC.SEARCHSYMBOLS> 225 <ENDIF> 226 # 227 # BSS BLOCK 228 # 229 SDK_STATIC_BSS_START =.; 230 #:::::::::: bss 231 <FOREACH.STATIC.OBJECTS=.sbss> 232 <STATIC.OBJECT=.sbss:t> 233 <END.STATIC.OBJECTS> 234 <FOREACH.STATIC.LIBRARIES=.sbss> 235 <STATIC.LIBRARY=.sbss:t> 236 <END.STATIC.LIBRARIES> 237 . = ALIGN(4); 238 <FOREACH.STATIC.OBJECTS=.bss> 239 <STATIC.OBJECT=.bss:t> 240 <END.STATIC.OBJECTS> 241 <FOREACH.STATIC.LIBRARIES=.bss> 242 <STATIC.LIBRARY=.bss:t> 243 <END.STATIC.LIBRARIES> 244 . = ALIGN(4); 245 #:::::::::: bss 246 . = ALIGN(4); 247 SDK_STATIC_BSS_END = .; 248 SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; 249 250 } >> <STATIC.NAME> 251 252 253 ############################ AUTOLOADS ############################## 254 SDK_AUTOLOAD.MAIN.START = 0x027e0000; 255 SDK_AUTOLOAD.MAIN.END = SDK_AUTOLOAD.MAIN.START; 256 SDK_AUTOLOAD.MAIN.BSS_END = SDK_AUTOLOAD.MAIN.START; 257 SDK_AUTOLOAD.MAIN.SIZE = 0; 258 SDK_AUTOLOAD.MAIN.BSS_SIZE = 0; 259 SDK_AUTOLOAD.WRAM.START = 0x037f8000; 260 SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START; 261 SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START; 262 SDK_AUTOLOAD.WRAM.SIZE = 0; 263 SDK_AUTOLOAD.WRAM.BSS_SIZE = 0; 264 SDK_AUTOLOAD_START = SDK_STATIC_END; 265 SDK_AUTOLOAD_SIZE = 0; 266 SDK_AUTOLOAD_NUMBER = <NUMBER.AUTOLOADS>; 267 268<FOREACH.AUTOLOADS> 269 .<AUTOLOAD.NAME>: 270 { 271 ALIGNALL(4); . = ALIGN(4); 272 <IF.NITRO_LCFSPEC.GE.2> 273 <FOREACH.AUTOLOAD.SEARCHSYMBOLS> 274 SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>; 275 <END.AUTOLOAD.SEARCHSYMBOLS> 276 <ENDIF> 277 # 278 # TEXT BLOCK: READ ONLY 279 # 280 SDK_AUTOLOAD_<AUTOLOAD.NAME>_ID =<AUTOLOAD.ID>; 281 SDK_AUTOLOAD.<AUTOLOAD.NAME>.ID =<AUTOLOAD.ID>; 282 SDK_AUTOLOAD.<AUTOLOAD.NAME>.START =.; 283 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_START =.; 284 #:::::::::: text/rodata 285 <FOREACH.AUTOLOAD.FORCES> 286 FORCE_OBJECT<AUTOLOAD.FORCE> 287 <END.AUTOLOAD.FORCES> 288 <FOREACH.AUTOLOAD.OBJECTS=.text> 289 <AUTOLOAD.OBJECT=.text:t> 290 <END.AUTOLOAD.OBJECTS> 291 <FOREACH.AUTOLOAD.LIBRARIES=.text> 292 <AUTOLOAD.LIBRARY=.text:t> 293 <END.AUTOLOAD.LIBRARIES> 294 . = ALIGN(4); 295 <FOREACH.AUTOLOAD.OBJECTS=.rodata> 296 <AUTOLOAD.OBJECT=.rodata:t> 297 <END.AUTOLOAD.OBJECTS> 298 <FOREACH.AUTOLOAD.LIBRARIES=.rodata> 299 <AUTOLOAD.LIBRARY=.rodata:t> 300 <END.AUTOLOAD.LIBRARIES> 301 . = ALIGN(4); 302 #:::::::::: text/rodata 303 SDK_AUTOLOAD.<AUTOLOAD.NAME>.TEXT_END =.; 304 305 # 306 # DATA BLOCK: READ WRITE BLOCK 307 # 308 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_START =.; 309 #:::::::::: data 310 <FOREACH.AUTOLOAD.OBJECTS=.wram> 311 <AUTOLOAD.OBJECT=.wram:t> 312 <END.AUTOLOAD.OBJECTS> 313 <FOREACH.AUTOLOAD.LIBRARIES=.wram> 314 <AUTOLOAD.LIBRARY=.wram:t> 315 <END.AUTOLOAD.LIBRARIES> 316 . = ALIGN(4); 317 <FOREACH.AUTOLOAD.OBJECTS=.main> 318 <AUTOLOAD.OBJECT=.main:t> 319 <END.AUTOLOAD.OBJECTS> 320 <FOREACH.AUTOLOAD.LIBRARIES=.main> 321 <AUTOLOAD.LIBRARY=.main:t> 322 <END.AUTOLOAD.LIBRARIES> 323 . = ALIGN(4); 324 <FOREACH.AUTOLOAD.OBJECTS=.sdata> 325 <AUTOLOAD.OBJECT=.sdata:t> 326 <END.AUTOLOAD.OBJECTS> 327 <FOREACH.AUTOLOAD.LIBRARIES=.sdata> 328 <AUTOLOAD.LIBRARY=.sdata:t> 329 <END.AUTOLOAD.LIBRARIES> 330 . = ALIGN(4); 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 . = ALIGN(4); 338 #:::::::::: data 339 SDK_AUTOLOAD.<AUTOLOAD.NAME>.DATA_END =.; 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); . = ALIGN(4); 352 <IF.NITRO_LCFSPEC.GE.2> 353 <FOREACH.AUTOLOAD.SEARCHSYMBOLS> 354 SEARCH_SYMBOL <AUTOLOAD.SEARCHSYMBOL>; 355 <END.AUTOLOAD.SEARCHSYMBOLS> 356 <ENDIF> 357 # 358 # BSS BLOCK 359 # 360 SDK_AUTOLOAD.<AUTOLOAD.NAME>.BSS_START = .; 361 #:::::::::: bss 362 <FOREACH.AUTOLOAD.OBJECTS=.sbss> 363 <AUTOLOAD.OBJECT=.sbss:t> 364 <END.AUTOLOAD.OBJECTS> 365 <FOREACH.AUTOLOAD.LIBRARIES=.sbss> 366 <AUTOLOAD.LIBRARY=.sbss:t> 367 <END.AUTOLOAD.LIBRARIES> 368 . = ALIGN(4); 369 <FOREACH.AUTOLOAD.OBJECTS=.bss> 370 <AUTOLOAD.OBJECT=.bss:t> 371 <END.AUTOLOAD.OBJECTS> 372 <FOREACH.AUTOLOAD.LIBRARIES=.bss> 373 <AUTOLOAD.LIBRARY=.bss:t> 374 <END.AUTOLOAD.LIBRARIES> 375 . = ALIGN(4); 376 <FOREACH.AUTOLOAD.OBJECTS=.wram> 377 <AUTOLOAD.OBJECT=.wram.bss:t> 378 <END.AUTOLOAD.OBJECTS> 379 <FOREACH.AUTOLOAD.LIBRARIES=.wram> 380 <AUTOLOAD.LIBRARY=.wram.bss:t> 381 <END.AUTOLOAD.LIBRARIES> 382 . = ALIGN(4); 383 <FOREACH.AUTOLOAD.OBJECTS=.main> 384 <AUTOLOAD.OBJECT=.main.bss:t> 385 <END.AUTOLOAD.OBJECTS> 386 <FOREACH.AUTOLOAD.LIBRARIES=.main> 387 <AUTOLOAD.LIBRARY=.main.bss:t> 388 <END.AUTOLOAD.LIBRARIES> 389 . = ALIGN(4); 390 #:::::::::: bss 391 . = ALIGN(4); 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_MAIN_START = SDK_AUTOLOAD.MAIN.START; 401 SDK_AUTOLOAD_MAIN_END = SDK_AUTOLOAD.MAIN.END; 402 SDK_AUTOLOAD_MAIN_BSS_END = SDK_AUTOLOAD.MAIN.BSS_END; 403 SDK_AUTOLOAD_MAIN_SIZE = SDK_AUTOLOAD.MAIN.SIZE; 404 SDK_AUTOLOAD_MAIN_BSS_SIZE = SDK_AUTOLOAD.MAIN.BSS_SIZE; 405 SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START; 406 SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END; 407 SDK_AUTOLOAD_WRAM_BSS_END = SDK_AUTOLOAD.WRAM.BSS_END; 408 SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE; 409 SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.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>.BSS_SIZE; 418<END.AUTOLOADS> 419 } > binary.AUTOLOAD_INFO 420 421 SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; 422 SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 423 SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); 424 425 ############################ OVERLAYS ############################### 426 SDK_OVERLAY_NUMBER = <NUMBER.OVERLAYS>; 427 428<FOREACH.OVERLAYS> 429 .<OVERLAY.NAME>:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF> 430 { 431 ALIGNALL(4); . = ALIGN(4); 432 <IF.NITRO_LCFSPEC.GE.2> 433 <FOREACH.OVERLAY.SEARCHSYMBOLS> 434 SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>; 435 <END.OVERLAY.SEARCHSYMBOLS> 436 <ENDIF> 437 # 438 # TEXT BLOCK: READ ONLY 439 # 440 SDK_OVERLAY_<OVERLAY.NAME>_ID =<OVERLAY.ID>; ### SEGMENT <OVERLAY.NAME> OVERLAY ID 441 SDK_OVERLAY.<OVERLAY.NAME>.ID =<OVERLAY.ID>; 442 SDK_OVERLAY.<OVERLAY.NAME>.START =.; 443 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START =.; 444 #:::::::::: text/rodata 445 <FOREACH.OVERLAY.FORCES> 446 FORCE_OBJECT<OVERLAY.FORCE> 447 <END.OVERLAY.FORCES> 448 <FOREACH.OVERLAY.OBJECTS=.text> 449 <OVERLAY.OBJECT=.text:t> 450 <END.OVERLAY.OBJECTS> 451 <FOREACH.OVERLAY.LIBRARIES=.text> 452 <OVERLAY.LIBRARY=.text:t> 453 <END.OVERLAY.LIBRARIES> 454 . = ALIGN(4); 455 <FOREACH.OVERLAY.OBJECTS=.rodata> 456 <OVERLAY.OBJECT=.rodata:t> 457 <END.OVERLAY.OBJECTS> 458 <FOREACH.OVERLAY.LIBRARIES=.rodata> 459 <OVERLAY.LIBRARY=.rodata:t> 460 <END.OVERLAY.LIBRARIES> 461 . = ALIGN(4); 462 <FOREACH.OVERLAY.OBJECTS=.init> 463 <OVERLAY.OBJECT=.init:t> 464 <END.OVERLAY.OBJECTS> 465 <FOREACH.OVERLAY.LIBRARIES=.init> 466 <OVERLAY.LIBRARY=.init:t> 467 <END.OVERLAY.LIBRARIES> 468 . = ALIGN(4); 469 SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START =.; 470 #:::::::::: ctor 471 <FOREACH.OVERLAY.OBJECTS=.ctor> 472 <OVERLAY.OBJECT=.ctor:t> 473 <END.OVERLAY.OBJECTS> 474 <FOREACH.OVERLAY.LIBRARIES=.ctor> 475 <OVERLAY.LIBRARY=.ctor:t> 476 <END.OVERLAY.LIBRARIES> 477 WRITEW 0; 478 #:::::::::: ctor 479 SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END =.; 480 481 #:::::::::: text/rodata 482 . = ALIGN(4); 483 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END =.; 484 485 # 486 # DATA BLOCK: READ WRITE 487 # 488 SDK_OVERLAY.<OVERLAY.NAME>.DATA_START =.; 489 #:::::::::: data 490 <FOREACH.OVERLAY.OBJECTS=.sdata> 491 <OVERLAY.OBJECT=.sdata:t> 492 <END.OVERLAY.OBJECTS> 493 <FOREACH.OVERLAY.LIBRARIES=.sdata> 494 <OVERLAY.LIBRARY=.sdata:t> 495 <END.OVERLAY.LIBRARIES> 496 . = ALIGN(4); 497 <FOREACH.OVERLAY.OBJECTS=.data> 498 <OVERLAY.OBJECT=.data:t> 499 <END.OVERLAY.OBJECTS> 500 <FOREACH.OVERLAY.LIBRARIES=.data> 501 <OVERLAY.LIBRARY=.data:t> 502 <END.OVERLAY.LIBRARIES> 503 . = ALIGN(4); 504 #:::::::::: data 505 . = ALIGN(4); 506 SDK_OVERLAY.<OVERLAY.NAME>.DATA_END =.; 507 SDK_OVERLAY.<OVERLAY.NAME>.END =.; 508 509 SDK_OVERLAY.<OVERLAY.NAME>.TEXT_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.TEXT_END - SDK_OVERLAY.<OVERLAY.NAME>.TEXT_START; 510 SDK_OVERLAY.<OVERLAY.NAME>.DATA_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.DATA_END - SDK_OVERLAY.<OVERLAY.NAME>.DATA_START; 511 SDK_OVERLAY.<OVERLAY.NAME>.SIZE = SDK_OVERLAY.<OVERLAY.NAME>.END - SDK_OVERLAY.<OVERLAY.NAME>.START; 512 513 } > <OVERLAY.NAME> 514 515 .<OVERLAY.NAME>.bss:<IF.NITRO_LCFSPEC.GE.2><OVERLAY.NAME><ENDIF> 516 { 517 ALIGNALL(4); . = ALIGN(4); 518 <IF.NITRO_LCFSPEC.GE.2> 519 <FOREACH.OVERLAY.SEARCHSYMBOLS> 520 SEARCH_SYMBOL <OVERLAY.SEARCHSYMBOL>; 521 <END.OVERLAY.SEARCHSYMBOLS> 522 <ENDIF> 523 # 524 # BSS BLOCK 525 # 526 SDK_OVERLAY.<OVERLAY.NAME>.BSS_START = .; 527 #:::::::::: bss 528 <FOREACH.OVERLAY.OBJECTS=.bss> 529 <OVERLAY.OBJECT=.bss:t> 530 <END.OVERLAY.OBJECTS> 531 <FOREACH.OVERLAY.LIBRARIES=.bss> 532 <OVERLAY.LIBRARY=.bss:t> 533 <END.OVERLAY.LIBRARIES> 534 . = ALIGN(4); 535 <FOREACH.OVERLAY.OBJECTS=.sbss> 536 <OVERLAY.OBJECT=.sbss:t> 537 <END.OVERLAY.OBJECTS> 538 <FOREACH.OVERLAY.LIBRARIES=.sbss> 539 <OVERLAY.LIBRARY=.sbss:t> 540 <END.OVERLAY.LIBRARIES> 541 . = ALIGN(4); 542 #:::::::::: bss 543 . = ALIGN(4); 544 SDK_OVERLAY.<OVERLAY.NAME>.BSS_END = .; 545 546 SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE = SDK_OVERLAY.<OVERLAY.NAME>.BSS_END - SDK_OVERLAY.<OVERLAY.NAME>.BSS_START; 547 548 } >> <OVERLAY.NAME> 549 550<END.OVERLAYS> 551 552 553 ############################ ARENA ################################## 554 .arena.MAIN: 555 { 556 . = ALIGN(4); 557 SDK_SECTION_ARENA_START =.; 558 } > arena.MAIN 559 560 561 ############################ OVERLAYDEFS ############################ 562 .<PROPERTY.OVERLAYDEFS>: 563 { 564 ### <STATIC.NAME> module information 565 WRITEW ADDR(.<STATIC.NAME>); # load address 566 WRITEW _start; # entry address 567 WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module 568 WRITEW _start_AutoloadDoneCallback; # callback autoload done 569 570 ### overlay filename 571 <FOREACH.OVERLAYS> 572 WRITES ("<OVERLAY.NAME><PROPERTY.SUFFIX>"); # Overlay <OVERLAY.ID> 573 <END.OVERLAYS> 574 575 } > <PROPERTY.OVERLAYDEFS> 576 577 578 ############################ OVERLAYTABLE ########################### 579 .<PROPERTY.OVERLAYTABLE>: 580 { 581 <FOREACH.OVERLAYS> 582 # Overlay <OVERLAY.ID> 583 WRITEW <OVERLAY.ID>; # overlay ID 584 WRITEW ADDR(.<OVERLAY.NAME>); # load address 585 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SIZE; # size of module 586 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.BSS_SIZE; # size of bss 587 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_START; # start address of static init 588 WRITEW SDK_OVERLAY.<OVERLAY.NAME>.SINIT_END; # end address of static init 589 WRITEW <OVERLAY.ID>; # ROM file ID 590 WRITEW 0; # Reserved 591 592 <END.OVERLAYS> 593 594 } > <PROPERTY.OVERLAYTABLE> 595 596 597 ############################ OTHERS ################################# 598 SDK_WRAM_ARENA_LO = SDK_AUTOLOAD.WRAM.BSS_END; 599 SDK_SUBPRIV_ARENA_LO = SDK_AUTOLOAD.MAIN.BSS_END; 600 SDK_IRQ_STACKSIZE = <STATIC.IRQSTACKSIZE>; # allocated in WRAM 601 SDK_SYS_STACKSIZE = <STATIC.STACKSIZE>; # allocated in WRAM 602 603 # work ram size checker => check AUTOLOAD_WRAM 604 SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; 605 .check.WORKRAM: 606 { 607# . = . + SDK_AUTOLOAD.WRAM.BSS_END - 0x037f8000 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 608 . = . + SDK_AUTOLOAD.WRAM.BSS_END - 0x037f8000; 609 . = ALIGN(32); 610 . = . + 0x2100; 611 . = . + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; 612 } > check.WORKRAM 613 614 .check.MAIN: 615 { 616 . = SDK_SUBPRIV_ARENA_LO; 617 } > check.MAIN 618} 619