1include "memory_regions.icf"; 2 3/* The memory information for each device is done in memory regions file. 4 * The starting address and length of memory not defined in memory regions file are defined as 0. */ 5 6if (isdefinedsymbol(ATCM_START)) 7{ 8 define symbol ATCM_PRV_START = ATCM_START; 9} 10else 11{ 12 define symbol ATCM_PRV_START = 0; 13} 14 15if (isdefinedsymbol(ATCM_LENGTH)) 16{ 17 define symbol ATCM_PRV_LENGTH = ATCM_LENGTH; 18} 19else 20{ 21 define symbol ATCM_PRV_LENGTH = 0; 22} 23 24if (isdefinedsymbol(BTCM_START)) 25{ 26 define symbol BTCM_PRV_START = BTCM_START; 27} 28else 29{ 30 define symbol BTCM_PRV_START = 0; 31} 32 33if (isdefinedsymbol(BTCM_LENGTH)) 34{ 35 define symbol BTCM_PRV_LENGTH = BTCM_LENGTH; 36} 37else 38{ 39 define symbol BTCM_PRV_LENGTH = 0; 40} 41 42if (isdefinedsymbol(SYSTEM_RAM_START)) 43{ 44 define symbol SYSTEM_RAM_PRV_START = SYSTEM_RAM_START; 45} 46else 47{ 48 define symbol SYSTEM_RAM_PRV_START = 0; 49} 50 51if (isdefinedsymbol(SYSTEM_RAM_LENGTH)) 52{ 53 define symbol SYSTEM_RAM_PRV_LENGTH = SYSTEM_RAM_LENGTH; 54} 55else 56{ 57 define symbol SYSTEM_RAM_PRV_LENGTH = 0; 58} 59 60if (isdefinedsymbol(SYSTEM_RAM_MIRROR_START)) 61{ 62 define symbol SYSTEM_RAM_MIRROR_PRV_START = SYSTEM_RAM_MIRROR_START; 63} 64else 65{ 66 define symbol SYSTEM_RAM_MIRROR_PRV_START = 0; 67} 68 69if (isdefinedsymbol(SYSTEM_RAM_MIRROR_LENGTH)) 70{ 71 define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = SYSTEM_RAM_MIRROR_LENGTH; 72} 73else 74{ 75 define symbol SYSTEM_RAM_MIRROR_PRV_LENGTH = 0; 76} 77 78if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_START)) 79{ 80 define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = xSPI0_CS0_SPACE_MIRROR_START; 81} 82else 83{ 84 define symbol xSPI0_CS0_SPACE_MIRROR_PRV_START = 0; 85} 86 87if (isdefinedsymbol(xSPI0_CS0_SPACE_MIRROR_LENGTH)) 88{ 89 define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS0_SPACE_MIRROR_LENGTH; 90} 91else 92{ 93 define symbol xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = 0; 94} 95 96if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_START)) 97{ 98 define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = xSPI0_CS1_SPACE_MIRROR_START; 99} 100else 101{ 102 define symbol xSPI0_CS1_SPACE_MIRROR_PRV_START = 0; 103} 104 105if (isdefinedsymbol(xSPI0_CS1_SPACE_MIRROR_LENGTH)) 106{ 107 define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI0_CS1_SPACE_MIRROR_LENGTH; 108} 109else 110{ 111 define symbol xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = 0; 112} 113 114if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_START)) 115{ 116 define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = xSPI1_CS0_SPACE_MIRROR_START; 117} 118else 119{ 120 define symbol xSPI1_CS0_SPACE_MIRROR_PRV_START = 0; 121} 122 123if (isdefinedsymbol(xSPI1_CS0_SPACE_MIRROR_LENGTH)) 124{ 125 define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS0_SPACE_MIRROR_LENGTH; 126} 127else 128{ 129 define symbol xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = 0; 130} 131 132if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_START)) 133{ 134 define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = xSPI1_CS1_SPACE_MIRROR_START; 135} 136else 137{ 138 define symbol xSPI1_CS1_SPACE_MIRROR_PRV_START = 0; 139} 140 141if (isdefinedsymbol(xSPI1_CS1_SPACE_MIRROR_LENGTH)) 142{ 143 define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = xSPI1_CS1_SPACE_MIRROR_LENGTH; 144} 145else 146{ 147 define symbol xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = 0; 148} 149 150if (isdefinedsymbol(CS0_SPACE_MIRROR_START)) 151{ 152 define symbol CS0_SPACE_MIRROR_PRV_START = CS0_SPACE_MIRROR_START; 153} 154else 155{ 156 define symbol CS0_SPACE_MIRROR_PRV_START = 0; 157} 158 159if (isdefinedsymbol(CS0_SPACE_MIRROR_LENGTH)) 160{ 161 define symbol CS0_SPACE_MIRROR_PRV_LENGTH = CS0_SPACE_MIRROR_LENGTH; 162} 163else 164{ 165 define symbol CS0_SPACE_MIRROR_PRV_LENGTH = 0; 166} 167 168if (isdefinedsymbol(CS2_SPACE_MIRROR_START)) 169{ 170 define symbol CS2_SPACE_MIRROR_PRV_START = CS2_SPACE_MIRROR_START; 171} 172else 173{ 174 define symbol CS2_SPACE_MIRROR_PRV_START = 0; 175} 176 177if (isdefinedsymbol(CS2_SPACE_MIRROR_LENGTH)) 178{ 179 define symbol CS2_SPACE_MIRROR_PRV_LENGTH = CS2_SPACE_MIRROR_LENGTH; 180} 181else 182{ 183 define symbol CS2_SPACE_MIRROR_PRV_LENGTH = 0; 184} 185 186 187if (isdefinedsymbol(CS3_SPACE_MIRROR_START)) 188{ 189 define symbol CS3_SPACE_MIRROR_PRV_START = CS3_SPACE_MIRROR_START; 190} 191else 192{ 193 define symbol CS3_SPACE_MIRROR_PRV_START = 0; 194} 195 196if (isdefinedsymbol(CS3_SPACE_MIRROR_LENGTH)) 197{ 198 define symbol CS3_SPACE_MIRROR_PRV_LENGTH = CS3_SPACE_MIRROR_LENGTH; 199} 200else 201{ 202 define symbol CS3_SPACE_MIRROR_PRV_LENGTH = 0; 203} 204 205if (isdefinedsymbol(CS5_SPACE_MIRROR_START)) 206{ 207 define symbol CS5_SPACE_MIRROR_PRV_START = CS5_SPACE_MIRROR_START; 208} 209else 210{ 211 define symbol CS5_SPACE_MIRROR_PRV_START = 0; 212} 213 214if (isdefinedsymbol(CS5_SPACE_MIRROR_LENGTH)) 215{ 216 define symbol CS5_SPACE_MIRROR_PRV_LENGTH = CS5_SPACE_MIRROR_LENGTH; 217} 218else 219{ 220 define symbol CS5_SPACE_MIRROR_PRV_LENGTH = 0; 221} 222 223 224if (isdefinedsymbol(xSPI0_CS0_SPACE_START)) 225{ 226 define symbol xSPI0_CS0_SPACE_PRV_START = xSPI0_CS0_SPACE_START; 227} 228else 229{ 230 define symbol xSPI0_CS0_SPACE_PRV_START = 0; 231} 232 233if (isdefinedsymbol(xSPI0_CS0_SPACE_LENGTH)) 234{ 235 define symbol xSPI0_CS0_SPACE_PRV_LENGTH = xSPI0_CS0_SPACE_LENGTH; 236} 237else 238{ 239 define symbol xSPI0_CS0_SPACE_PRV_LENGTH = 0; 240} 241 242if (isdefinedsymbol(xSPI0_CS1_SPACE_START)) 243{ 244 define symbol xSPI0_CS1_SPACE_PRV_START = xSPI0_CS1_SPACE_START; 245} 246else 247{ 248 define symbol xSPI0_CS1_SPACE_PRV_START = 0; 249} 250 251if (isdefinedsymbol(xSPI0_CS1_SPACE_LENGTH)) 252{ 253 define symbol xSPI0_CS1_SPACE_PRV_LENGTH = xSPI0_CS1_SPACE_LENGTH; 254} 255else 256{ 257 define symbol xSPI0_CS1_SPACE_PRV_LENGTH = 0; 258} 259 260if (isdefinedsymbol(xSPI1_CS0_SPACE_START)) 261{ 262 define symbol xSPI1_CS0_SPACE_PRV_START = xSPI1_CS0_SPACE_START; 263} 264else 265{ 266 define symbol xSPI1_CS0_SPACE_PRV_START = 0; 267} 268 269if (isdefinedsymbol(xSPI1_CS0_SPACE_LENGTH)) 270{ 271 define symbol xSPI1_CS0_SPACE_PRV_LENGTH = xSPI1_CS0_SPACE_LENGTH; 272} 273else 274{ 275 define symbol xSPI1_CS0_SPACE_PRV_LENGTH = 0; 276} 277 278if (isdefinedsymbol(xSPI1_CS1_SPACE_START)) 279{ 280 define symbol xSPI1_CS1_SPACE_PRV_START = xSPI1_CS1_SPACE_START; 281} 282else 283{ 284 define symbol xSPI1_CS1_SPACE_PRV_START = 0; 285} 286 287if (isdefinedsymbol(xSPI1_CS1_SPACE_LENGTH)) 288{ 289 define symbol xSPI1_CS1_SPACE_PRV_LENGTH = xSPI1_CS1_SPACE_LENGTH; 290} 291else 292{ 293 define symbol xSPI1_CS1_SPACE_PRV_LENGTH = 0; 294} 295 296if (isdefinedsymbol(CS0_SPACE_START)) 297{ 298 define symbol CS0_SPACE_PRV_START = CS0_SPACE_START; 299} 300else 301{ 302 define symbol CS0_SPACE_PRV_START = 0; 303} 304 305if (isdefinedsymbol(CS0_SPACE_LENGTH)) 306{ 307 define symbol CS0_SPACE_PRV_LENGTH = CS0_SPACE_LENGTH; 308} 309else 310{ 311 define symbol CS0_SPACE_PRV_LENGTH = 0; 312} 313 314if (isdefinedsymbol(CS2_SPACE_START)) 315{ 316 define symbol CS2_SPACE_PRV_START = CS2_SPACE_START; 317} 318else 319{ 320 define symbol CS2_SPACE_PRV_START = 0; 321} 322 323if (isdefinedsymbol(CS2_SPACE_LENGTH)) 324{ 325 define symbol CS2_SPACE_PRV_LENGTH = CS2_SPACE_LENGTH; 326} 327else 328{ 329 define symbol CS2_SPACE_PRV_LENGTH = 0; 330} 331 332if (isdefinedsymbol(CS3_SPACE_START)) 333{ 334 define symbol CS3_SPACE_PRV_START = CS3_SPACE_START; 335} 336else 337{ 338 define symbol CS3_SPACE_PRV_START = 0; 339} 340 341if (isdefinedsymbol(CS3_SPACE_LENGTH)) 342{ 343 define symbol CS3_SPACE_PRV_LENGTH = CS3_SPACE_LENGTH; 344} 345else 346{ 347 define symbol CS3_SPACE_PRV_LENGTH = 0; 348} 349 350if (isdefinedsymbol(CS5_SPACE_START)) 351{ 352 define symbol CS5_SPACE_PRV_START = CS5_SPACE_START; 353} 354else 355{ 356 define symbol CS5_SPACE_PRV_START = 0; 357} 358 359if (isdefinedsymbol(CS5_SPACE_LENGTH)) 360{ 361 define symbol CS5_SPACE_PRV_LENGTH = CS5_SPACE_LENGTH; 362} 363else 364{ 365 define symbol CS5_SPACE_PRV_LENGTH = 0; 366} 367 368define symbol SYSTEM_RAM_END_OFFSET = 0x00048000; 369define symbol FLASH_ADDRESS = xSPI0_CS0_SPACE_PRV_START; 370 371define symbol INTVEC_ADDRESS = ATCM_PRV_START; 372define symbol RAM_ADDRESS = (ATCM_PRV_START + 0x100); 373define symbol RAM_END_ADDRESS = (ATCM_PRV_START + ATCM_PRV_LENGTH - 1); 374define symbol LOADER_STACK_ADDRESS = (BTCM_PRV_START + 0x2000); 375define symbol LOADER_STACK_END_ADDRESS = (BTCM_PRV_START + BTCM_PRV_LENGTH - 1); 376define symbol DATA_NONCACHE_OFFSET = 0x00048000; 377define symbol DATA_NONCACHE_END_OFFSET = 0x00044000; 378define symbol DMAC_LINK_MODE_OFFSET = 0x00044000; 379define symbol DMAC_LINK_MODE_END_OFFSET = 0x00040000; 380define symbol NONCACHE_BUFFER_OFFSET = 0x00020000; 381define symbol NONCACHE_BUFFER_END_OFFSET = 0; 382 383/*###ICF### Section handled by ICF editor, don't touch! ****/ 384/*-Editor annotation file-*/ 385/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_0.xml" */ 386/*-Specials-*/ 387define symbol __ICFEDIT_intvec_start__ = INTVEC_ADDRESS; 388/*-Memory Regions-*/ 389define symbol __ICFEDIT_region_ROM_start__ = FLASH_ADDRESS + 0x20100; 390define symbol __ICFEDIT_region_ROM_end__ = FLASH_ADDRESS + 0x6FFFF; 391define symbol __ICFEDIT_region_RAM_start__ = RAM_ADDRESS; 392define symbol __ICFEDIT_region_RAM_end__ = RAM_END_ADDRESS; 393/**** End of ICF editor section. ###ICF###*/ 394 395/*-Sizes-*/ 396define symbol __ICFEDIT_size_cstack__ = 0x200; 397/**** End of ICF editor section. ###ICF###*/ 398 399define memory mem with size = 4G; 400define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__]; 401define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]; 402 403define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; 404 405define symbol __region_D_LOADER_STACK_start__ = LOADER_STACK_ADDRESS; 406define symbol __region_D_LOADER_STACK_end__ = LOADER_STACK_END_ADDRESS; 407 408define symbol __region_DATA_NONCACHE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_OFFSET; 409define symbol __region_DATA_NONCACHE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DATA_NONCACHE_END_OFFSET - 1; 410define symbol __region_DMAC_LINK_MODE_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_OFFSET; 411define symbol __region_DMAC_LINK_MODE_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - DMAC_LINK_MODE_END_OFFSET - 1; 412define symbol __region_SHARED_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00040000; 413define symbol __region_SHARED_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - 0x00020000 - 1; 414define symbol __region_NONCACHE_BUFFER_start__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_OFFSET; 415define symbol __region_NONCACHE_BUFFER_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - NONCACHE_BUFFER_END_OFFSET - 1; 416 417define symbol __region_ATCM_start__ = ATCM_PRV_START; 418define symbol __region_ATCM_end__ = ATCM_PRV_START + ATCM_PRV_LENGTH - 1; 419define symbol __region_BTCM_start__ = BTCM_PRV_START; 420define symbol __region_BTCM_end__ = BTCM_PRV_START + BTCM_PRV_LENGTH - 1; 421define symbol __region_SYSTEM_RAM_start__ = SYSTEM_RAM_PRV_START; 422define symbol __region_SYSTEM_RAM_end__ = SYSTEM_RAM_PRV_START + SYSTEM_RAM_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1; 423define symbol __region_SYSTEM_RAM_MIRROR_start__ = SYSTEM_RAM_MIRROR_PRV_START; 424define symbol __region_SYSTEM_RAM_MIRROR_end__ = SYSTEM_RAM_MIRROR_PRV_START + SYSTEM_RAM_MIRROR_PRV_LENGTH - SYSTEM_RAM_END_OFFSET - 1; 425 426define symbol __region_XSPI0_CS0_MIRROR_start__ = xSPI0_CS0_SPACE_MIRROR_PRV_START; 427define symbol __region_XSPI0_CS0_MIRROR_end__ = xSPI0_CS0_SPACE_MIRROR_PRV_START + xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH - 1; 428define symbol __region_XSPI0_CS1_MIRROR_start__ = xSPI0_CS1_SPACE_MIRROR_PRV_START; 429define symbol __region_XSPI0_CS1_MIRROR_end__ = xSPI0_CS1_SPACE_MIRROR_PRV_START + xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH - 1; 430define symbol __region_XSPI1_CS0_MIRROR_start__ = xSPI1_CS0_SPACE_MIRROR_PRV_START; 431define symbol __region_XSPI1_CS0_MIRROR_end__ = xSPI1_CS0_SPACE_MIRROR_PRV_START + xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH - 1; 432define symbol __region_XSPI1_CS1_MIRROR_start__ = xSPI1_CS1_SPACE_MIRROR_PRV_START; 433define symbol __region_XSPI1_CS1_MIRROR_end__ = xSPI1_CS1_SPACE_MIRROR_PRV_START + xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH - 1; 434define symbol __region_CS0_MIRROR_start__ = CS0_SPACE_MIRROR_PRV_START; 435define symbol __region_CS0_MIRROR_end__ = CS0_SPACE_MIRROR_PRV_START + CS0_SPACE_MIRROR_PRV_LENGTH - 1; 436define symbol __region_CS2_MIRROR_start__ = CS2_SPACE_MIRROR_PRV_START; 437define symbol __region_CS2_MIRROR_end__ = CS2_SPACE_MIRROR_PRV_START + CS2_SPACE_MIRROR_PRV_LENGTH - 1; 438define symbol __region_CS3_MIRROR_start__ = CS3_SPACE_MIRROR_PRV_START; 439define symbol __region_CS3_MIRROR_end__ = CS3_SPACE_MIRROR_PRV_START + CS3_SPACE_MIRROR_PRV_LENGTH - 1; 440define symbol __region_CS5_MIRROR_start__ = CS5_SPACE_MIRROR_PRV_START; 441define symbol __region_CS5_MIRROR_end__ = CS5_SPACE_MIRROR_PRV_START + CS5_SPACE_MIRROR_PRV_LENGTH - 1; 442define symbol __region_XSPI0_CS0_start__ = xSPI0_CS0_SPACE_PRV_START; 443define symbol __region_XSPI0_CS0_end__ = xSPI0_CS0_SPACE_PRV_START + xSPI0_CS0_SPACE_PRV_LENGTH - 1; 444define symbol __region_XSPI0_CS1_start__ = xSPI0_CS1_SPACE_PRV_START; 445define symbol __region_XSPI0_CS1_end__ = xSPI0_CS1_SPACE_PRV_START + xSPI0_CS1_SPACE_PRV_LENGTH - 1; 446define symbol __region_XSPI1_CS0_start__ = xSPI1_CS0_SPACE_PRV_START; 447define symbol __region_XSPI1_CS0_end__ = xSPI1_CS0_SPACE_PRV_START + xSPI1_CS0_SPACE_PRV_LENGTH - 1; 448define symbol __region_XSPI1_CS1_start__ = xSPI1_CS1_SPACE_PRV_START; 449define symbol __region_XSPI1_CS1_end__ = xSPI1_CS1_SPACE_PRV_START + xSPI1_CS1_SPACE_PRV_LENGTH - 1; 450define symbol __region_CS0_start__ = CS0_SPACE_PRV_START; 451define symbol __region_CS0_end__ = CS0_SPACE_PRV_START + CS0_SPACE_PRV_LENGTH - 1; 452define symbol __region_CS2_start__ = CS2_SPACE_PRV_START; 453define symbol __region_CS2_end__ = CS2_SPACE_PRV_START + CS2_SPACE_PRV_LENGTH - 1; 454define symbol __region_CS3_start__ = CS3_SPACE_PRV_START; 455define symbol __region_CS3_end__ = CS3_SPACE_PRV_START + CS3_SPACE_PRV_LENGTH - 1; 456define symbol __region_CS5_start__ = CS5_SPACE_PRV_START; 457define symbol __region_CS5_end__ = CS5_SPACE_PRV_START + CS5_SPACE_PRV_LENGTH - 1; 458 459/************** SPI boot mode setting **************/ 460define symbol __region_LDR_PARAM_start__ = FLASH_ADDRESS; 461define symbol __region_LDR_PARAM_end__ = FLASH_ADDRESS + 0x0000004B; 462define symbol __region_S_LOADER_STACK_start__ = FLASH_ADDRESS + 0x0000004C; 463define symbol __region_S_LOADER_STACK_end__ = FLASH_ADDRESS + 0x0000804B; 464 465define symbol __region_S_intvec_start__ = FLASH_ADDRESS + 0x20000; 466define symbol __region_S_intvec_end__ = FLASH_ADDRESS + 0x200FF; 467define symbol __region_S_RAM_start__ = FLASH_ADDRESS + 0x70000; 468define symbol __region_S_RAM_end__ = FLASH_ADDRESS + 0x7FFFF; 469/****************************************************/ 470 471define region D_LOADER_STACK_region = mem:[from __region_D_LOADER_STACK_start__ to __region_D_LOADER_STACK_end__]; 472 473define region LDR_PARAM_region = mem:[from __region_LDR_PARAM_start__ to __region_LDR_PARAM_end__]; 474define region S_LOADER_STACK_region = mem:[from __region_S_LOADER_STACK_start__ to __region_S_LOADER_STACK_end__]; 475 476define region S_intvec_region = mem:[from __region_S_intvec_start__ to __region_S_intvec_end__]; 477define region S_RAM_region = mem:[from __region_S_RAM_start__ to __region_S_RAM_end__]; 478 479define region DATA_NONCACHE_region = mem:[from __region_DATA_NONCACHE_start__ to __region_DATA_NONCACHE_end__]; 480define region DMAC_LINK_MODE_region = mem:[from __region_DMAC_LINK_MODE_start__ to __region_DMAC_LINK_MODE_end__]; 481define region SHARED_NONCACHE_BUFFER_region = mem:[from __region_SHARED_NONCACHE_BUFFER_start__ to __region_SHARED_NONCACHE_BUFFER_end__]; 482define region NONCACHE_BUFFER_region = mem:[from __region_NONCACHE_BUFFER_start__ to __region_NONCACHE_BUFFER_end__]; 483 484define region ATCM_region = mem:[from __region_ATCM_start__ to __region_ATCM_end__ ]; 485define region BTCM_region = mem:[from __region_BTCM_start__ to __region_BTCM_end__ ]; 486define region SYSTEM_RAM_region = mem:[from __region_SYSTEM_RAM_start__ to __region_SYSTEM_RAM_end__ ]; 487define region SYSTEM_RAM_MIRROR_region = mem:[from __region_SYSTEM_RAM_MIRROR_start__ to __region_SYSTEM_RAM_MIRROR_end__ ]; 488define region XSPI0_CS0_MIRROR_region = mem:[from __region_XSPI0_CS0_MIRROR_start__ to __region_XSPI0_CS0_MIRROR_end__ ]; 489define region XSPI0_CS1_MIRROR_region = mem:[from __region_XSPI0_CS1_MIRROR_start__ to __region_XSPI0_CS1_MIRROR_end__ ]; 490define region XSPI1_CS0_MIRROR_region = mem:[from __region_XSPI1_CS0_MIRROR_start__ to __region_XSPI1_CS0_MIRROR_end__ ]; 491define region XSPI1_CS1_MIRROR_region = mem:[from __region_XSPI1_CS1_MIRROR_start__ to __region_XSPI1_CS1_MIRROR_end__ ]; 492define region CS0_MIRROR_region = mem:[from __region_CS0_MIRROR_start__ to __region_CS0_MIRROR_end__ ]; 493define region CS2_MIRROR_region = mem:[from __region_CS2_MIRROR_start__ to __region_CS2_MIRROR_end__ ]; 494define region CS3_MIRROR_region = mem:[from __region_CS3_MIRROR_start__ to __region_CS3_MIRROR_end__ ]; 495define region CS5_MIRROR_region = mem:[from __region_CS5_MIRROR_start__ to __region_CS5_MIRROR_end__ ]; 496define region XSPI0_CS0_region = mem:[from __region_XSPI0_CS0_start__ to __region_XSPI0_CS0_end__ ]; 497define region XSPI0_CS1_region = mem:[from __region_XSPI0_CS1_start__ to __region_XSPI0_CS1_end__ ]; 498define region XSPI1_CS0_region = mem:[from __region_XSPI1_CS0_start__ to __region_XSPI1_CS0_end__ ]; 499define region XSPI1_CS1_region = mem:[from __region_XSPI1_CS1_start__ to __region_XSPI1_CS1_end__ ]; 500define region CS0_region = mem:[from __region_CS0_start__ to __region_CS0_end__ ]; 501define region CS2_region = mem:[from __region_CS2_start__ to __region_CS2_end__ ]; 502define region CS3_region = mem:[from __region_CS3_start__ to __region_CS3_end__ ]; 503define region CS5_region = mem:[from __region_CS5_start__ to __region_CS5_end__ ]; 504 505define block LDR_PRG_RBLOCK with fixed order 506 { ro code section .loader_text_init object startup_core.o, 507 ro code object startup_core.o, 508 ro code object system_core.o, 509 ro code object startup.o, 510 ro code object system.o, 511 ro code object bsp_clocks.o, 512 ro code object bsp_irq_core.o, 513 ro code object bsp_irq.o, 514 ro code object bsp_register_protection.o, 515 ro code object r_ioport.o, 516 ro code object bsp_cache.o, 517 ro code section .warm_start_init } 518 except { ro code section .intvec_init, 519 ro code section .reset_handler_init }; 520define block LDR_PRG_WBLOCK with fixed order 521 { rw code section .loader_text object startup_core.o, 522 rw code object startup_core.o, 523 rw code object system_core.o, 524 rw code object startup.o, 525 rw code object system.o, 526 rw code object bsp_clocks.o, 527 rw code object bsp_irq_core.o, 528 rw code object bsp_irq.o, 529 rw code object bsp_register_protection.o, 530 rw code object r_ioport.o, 531 rw code object bsp_cache.o, 532 rw code section .warm_start } 533 except { rw code section .intvec, 534 rw code section .reset_handler }; 535define block LDR_DATA_ZBLOCK with alignment = 4 536 { section .bss object startup_core.o, 537 section .bss object system_core.o, 538 section .bss object startup.o, 539 section .bss object system.o, 540 section .bss object bsp_clocks.o, 541 section .bss object bsp_irq_core.o, 542 section .bss object bsp_irq.o, 543 section .bss object bsp_register_protection.o, 544 section .bss object r_ioport.o, 545 section .bss object bsp_cache.o, 546 section .bss object bsp_io.o }; 547define block LDR_DATA_RBLOCK with fixed order, alignment = 4 548 { section .data_init object startup_core.o, 549 section .data_init object system_core.o, 550 section .data_init object startup.o, 551 section .data_init object system.o, 552 section .data_init object bsp_clocks.o, 553 section .data_init object bsp_irq_core.o, 554 section .data_init object bsp_irq.o, 555 section .data_init object bsp_register_protection.o, 556 section .data_init object r_ioport.o, 557 section .data_init object bsp_cache.o, 558 section .rodata_init object system_core.o }; 559define block LDR_DATA_WBLOCK with fixed order, alignment = 4 560 { section .data object startup_core.o, 561 section .data object system_core.o, 562 section .data object startup.o, 563 section .data object system.o, 564 section .data object bsp_clocks.o, 565 section .data object bsp_irq_core.o, 566 section .data object bsp_irq.o, 567 section .data object bsp_register_protection.o, 568 section .data object r_ioport.o, 569 section .data object bsp_cache.o, 570 section .rodata object system_core.o }; 571 572define block HEAP_BLOCK with alignment = 8 { rw section HEAP }; 573define block THREAD_STACK with alignment = 8 { rw section .stack* }; 574define block SYS_STACK with alignment = 8 { rw section .sys_stack }; 575define block SVC_STACK with alignment = 8 { rw section .svc_stack }; 576define block IRQ_STACK with alignment = 8 { rw section .irq_stack }; 577define block FIQ_STACK with alignment = 8 { rw section .fiq_stack }; 578define block UND_STACK with alignment = 8 { rw section .und_stack }; 579define block ABT_STACK with alignment = 8 { rw section .abt_stack }; 580 581define block VECTOR_RBLOCK with alignment = 32 { ro code section .intvec_init}; 582define block VECTOR_WBLOCK with alignment = 32 { rw code section .intvec}; 583define block USER_PRG_RBLOCK with alignment = 4 { ro code }; 584define block USER_PRG_WBLOCK with alignment = 4 { rw code }; 585define block USER_DATA_ZBLOCK with alignment = 4 { section .bss }; 586define block USER_DATA_RBLOCK with fixed order, alignment = 4 587 { section .data_init, 588 section __DLIB_PERTHREAD_init, 589 section .rodata_init, 590 section .version_init }; 591define block USER_DATA_WBLOCK with fixed order, alignment = 4 592 { section .data, 593 section __DLIB_PERTHREAD, 594 section .rodata, 595 section .version }; 596define block USER_DATA_NONCACHE_RBLOCK with alignment = 4 { section .data_noncache_init }; 597define block USER_DATA_NONCACHE_WBLOCK with alignment = 4 { section .data_noncache }; 598define block DMAC_LINK_MODE_ZBLOCK with alignment = 4 { section .dmac_link_mode* }; 599define block SHARED_NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .shared_noncache_buffer* }; 600define block NONCACHE_BUFFER_ZBLOCK with alignment = 32 { section .noncache_buffer* }; 601 602initialize manually { ro code object startup_core.o, 603 ro code object system_core.o, 604 ro code object startup.o, 605 ro code object system.o, 606 ro code object bsp_clocks.o, 607 ro code object bsp_irq_core.o, 608 ro code object bsp_irq.o, 609 ro code object bsp_register_protection.o, 610 ro code object r_ioport.o, 611 ro code object bsp_cache.o, 612 ro code section .intvec, 613 ro code section .reset_handler, 614 ro code section .warm_start, 615 ro code, 616 section .data, 617 section __DLIB_PERTHREAD, 618 section .rodata, 619 section .version, 620 section .data_noncache }; 621 622do not initialize { section .noinit, 623 section .bss, 624 section .dmac_link_mode*, 625 section .shared_noncache_buffer*, 626 section .noncache_buffer*, 627 rw section HEAP, 628 rw section .stack*, 629 rw section .sys_stack, 630 rw section .svc_stack, 631 rw section .irq_stack, 632 rw section .fiq_stack, 633 rw section .und_stack, 634 rw section .abt_stack }; 635 636place at address mem: __ICFEDIT_intvec_start__ { block VECTOR_WBLOCK }; 637 638place in LDR_PARAM_region { readonly section .loader_param }; 639place at start of S_LOADER_STACK_region { block LDR_PRG_RBLOCK }; 640place in S_LOADER_STACK_region { section LDR_DATA_RBLOCK, block LDR_DATA_RBLOCK }; 641place in S_intvec_region { block VECTOR_RBLOCK }; 642place in ROM_region { block USER_PRG_RBLOCK, readonly }; 643place in S_RAM_region { block USER_DATA_RBLOCK, block USER_DATA_NONCACHE_RBLOCK }; 644 645place at start of D_LOADER_STACK_region { block LDR_PRG_WBLOCK }; 646place in D_LOADER_STACK_region { section LDR_DATA_WBLOCK, block LDR_DATA_WBLOCK, 647 section LDR_DATA_ZBLOCK, block LDR_DATA_ZBLOCK }; 648place in D_LOADER_STACK_region { section SYS_STACK, block SYS_STACK, 649 section SVC_STACK, block SVC_STACK, 650 section IRQ_STACK, block IRQ_STACK, 651 section FIQ_STACK, block FIQ_STACK, 652 section UND_STACK, block UND_STACK, 653 section ABT_STACK, block ABT_STACK }; 654place in RAM_region { block USER_PRG_WBLOCK }; 655place in RAM_region { readwrite, last block CSTACK }; 656place in RAM_region { block USER_DATA_WBLOCK, 657 block USER_DATA_ZBLOCK }; 658place in RAM_region { section HEAP_BLOCK, block HEAP_BLOCK, 659 section THREAD_STACK, block THREAD_STACK }; 660 661place in DATA_NONCACHE_region { block USER_DATA_NONCACHE_WBLOCK }; 662place in DMAC_LINK_MODE_region { block DMAC_LINK_MODE_ZBLOCK }; 663place in SHARED_NONCACHE_BUFFER_region { block SHARED_NONCACHE_BUFFER_ZBLOCK }; 664place in NONCACHE_BUFFER_region { block NONCACHE_BUFFER_ZBLOCK }; 665place in ATCM_region { }; 666place in BTCM_region { }; 667place in SYSTEM_RAM_region { }; 668place in SYSTEM_RAM_MIRROR_region { }; 669place in XSPI0_CS0_MIRROR_region { }; 670place in XSPI0_CS1_MIRROR_region { }; 671place in XSPI1_CS0_MIRROR_region { }; 672place in XSPI1_CS1_MIRROR_region { }; 673place in CS0_MIRROR_region { }; 674place in CS2_MIRROR_region { }; 675place in CS3_MIRROR_region { }; 676place in CS5_MIRROR_region { }; 677place in XSPI0_CS0_region { }; 678place in XSPI0_CS1_region { }; 679place in XSPI1_CS0_region { }; 680place in XSPI1_CS1_region { }; 681place in CS0_region { }; 682place in CS2_region { }; 683place in CS3_region { }; 684place in CS5_region { }; 685