/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x0C000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__   = 0x0C000000;
define symbol __ICFEDIT_region_ROM_end__     = 0x0C0FFFFF;
define symbol __ICFEDIT_region_RAM_start__   = 0x10000000;
define symbol __ICFEDIT_region_RAM_end__     = 0x1000FFFF;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__   = 0x800;
define symbol __ICFEDIT_size_heap__     = 0x400;
/**** End of ICF editor section. ###ICF###*/

define symbol __DRAM1_start__   = 0x20000000;
define symbol __DRAM1_end__     = 0x20007FFF;

define symbol __DRAM2_start__   = 0x30000000;
define symbol __DRAM2_end__     = 0x30007FFF;

define memory mem with size = 4G;
define region ROM_region   = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
define region RAM_region   = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
define region DRAM1_region = mem:[from  __DRAM1_start__ to __DRAM1_end__];
define region DRAM2_region = mem:[from  __DRAM2_start__ to __DRAM2_end__];

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

initialize by copy { readwrite };
do not initialize  { section .noinit };

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_region  {readonly};
place in RAM_region  { readwrite,
                       block CSTACK, block HEAP };
place in DRAM1_region{ section .dram1};
place in DRAM2_region{ section .dram2};

