/*###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__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__    = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__      = 0x080FFFFF;
define symbol __ICFEDIT_region_RAM_start__    = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__      = 0x20017FFF;

/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x200;
/**** End of ICF editor section. ###ICF###*/

/* Flash Organization
 *  1. Privileged Code:
 *      Start   : 0x08000000
 *      End     : 0x08007FFF
 *      Size    : 32 Kbytes
 *  2. System calls:
 *      Start   : 0x08008000
 *      End     : 0x08008FFF
 *      Size    : 4 Kbytes
 *  3. Unprivileged Code:
 *      Start   : 0x08009000
 *      End     : 0x080FFFFF
 *      Size    : 988 Kbytes
 */
define symbol __reigon_ROM_privileged_start__   = __ICFEDIT_region_ROM_start__;
define symbol __reigon_ROM_privileged_end__     = 0x08007FFF;
define symbol __reigon_ROM_system_calls_start__ = 0x08008000;
define symbol __reigon_ROM_system_calls_end__   = 0x08008FFF;
define symbol __reigon_ROM_unprivileged_start__ = 0x08009000;
define symbol __reigon_ROM_unprivileged_end__   = __ICFEDIT_region_ROM_end__;

/* RAM Organization
 *  1. Privileged Data:
 *      Start   : 0x20000000
 *      End     : 0x200003FF
 *      Size    : 1 Kbytes
 *  2. Unprivileged Data:
 *      Start   : 0x20000400
 *      End     : 0x20017FFF
 *      Size    : 95 Kbytes
 */
define symbol __region_RAM_privileged_start__   = __ICFEDIT_region_RAM_start__;
define symbol __region_RAM_privileged_end__     = 0x200003FF;
define symbol __region_RAM_unprivileged_start__ = 0x20000400;
define symbol __region_RAM_unprivileged_end__   = __ICFEDIT_region_RAM_end__;
define symbol __region_SRAM2_start__            = 0x10000000;
define symbol __region_SRAM2_end__              = 0x10007FFF;

/* Memory regions. */
define memory mem with size = 4G;
define region ROM_region_privileged     = mem:[from __reigon_ROM_privileged_start__ to __reigon_ROM_privileged_end__];
define region ROM_region_system_calls   = mem:[from __reigon_ROM_system_calls_start__ to __reigon_ROM_system_calls_end__];
define region ROM_region_unprivileged   = mem:[from __reigon_ROM_unprivileged_start__ to __reigon_ROM_unprivileged_end__];
define region RAM_region_privileged     = mem:[from __region_RAM_privileged_start__   to __region_RAM_privileged_end__];
define region RAM_region_unprivileged   = mem:[from __region_RAM_unprivileged_start__   to __region_RAM_unprivileged_end__];
define region SRAM2_region              = mem:[from __region_SRAM2_start__   to __region_SRAM2_end__];

/* Stack and Heap. */
define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

/* Initialization. */
initialize by copy { readwrite };
do not initialize  { section .noinit };

/* Exported symbols. */
define exported symbol __FLASH_segment_start__          = __ICFEDIT_region_ROM_start__;
define exported symbol __FLASH_segment_end__            = __ICFEDIT_region_ROM_end__;
define exported symbol __SRAM_segment_start__           = __ICFEDIT_region_RAM_start__;
define exported symbol __SRAM_segment_end__             = __ICFEDIT_region_RAM_end__;

define exported symbol __privileged_functions_start__   = __reigon_ROM_privileged_start__;
define exported symbol __privileged_functions_end__     = __reigon_ROM_privileged_end__;
define exported symbol __privileged_data_start__        = __region_RAM_privileged_start__;
define exported symbol __privileged_data_end__          = __region_RAM_privileged_end__;

define exported symbol __syscalls_flash_start__         = __reigon_ROM_system_calls_start__;
define exported symbol __syscalls_flash_end__           = __reigon_ROM_system_calls_end__;

/* Placements. */
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_region_privileged      { readonly section privileged_functions };
place in ROM_region_system_calls    { readonly section freertos_system_calls };
place in ROM_region_unprivileged    { readonly };

place in RAM_region_privileged      { readwrite section privileged_data };
place in RAM_region_unprivileged    { readwrite,
                                      block CSTACK, block HEAP }; 
place in SRAM2_region               { };
