/*###ICF### Section handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v2_1.xml" */

/*-Specials-*/
define symbol __ICFEDIT_intvec_start__          = 0x10040000;

/*-Memory Regions-*/
define symbol __ICFEDIT_region_IROM1_start__    = 0x10040000;
define symbol __ICFEDIT_region_IROM1_end__      = 0x1007FFFF;
define symbol __ICFEDIT_region_IROM2_start__    = 0x0;
define symbol __ICFEDIT_region_IROM2_end__      = 0x0;
define symbol __ICFEDIT_region_EROM1_start__    = 0x0;
define symbol __ICFEDIT_region_EROM1_end__      = 0x0;
define symbol __ICFEDIT_region_EROM2_start__    = 0x0;
define symbol __ICFEDIT_region_EROM2_end__      = 0x0;
define symbol __ICFEDIT_region_EROM3_start__    = 0x0;
define symbol __ICFEDIT_region_EROM3_end__      = 0x0;
define symbol __ICFEDIT_region_IRAM1_start__    = 0x30008000;
define symbol __ICFEDIT_region_IRAM1_end__      = 0x30017FFF;
define symbol __ICFEDIT_region_IRAM2_start__    = 0x0;
define symbol __ICFEDIT_region_IRAM2_end__      = 0x0;
define symbol __ICFEDIT_region_ERAM1_start__    = 0x0;
define symbol __ICFEDIT_region_ERAM1_end__      = 0x0;
define symbol __ICFEDIT_region_ERAM2_start__    = 0x0;
define symbol __ICFEDIT_region_ERAM2_end__      = 0x0;
define symbol __ICFEDIT_region_ERAM3_start__    = 0x0;
define symbol __ICFEDIT_region_ERAM3_end__      = 0x0;

/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__           = 0x800;
define symbol __ICFEDIT_size_proc_s_stack__     = 0x0;
define symbol __ICFEDIT_size_main_ns_stack__    = 0x0;
define symbol __ICFEDIT_size_proc_ns_stack__    = 0x0;
define symbol __ICFEDIT_size_heap__             = 0x0;

/**** End of ICF editor section. ###ICF###*/

/* Flash Organization
 *  1. Privileged Code:
 *      Start   : 0x10040000
 *      End     : 0x10046FFF
 *      Size    : 28 Kbytes
 *  2. System calls:
 *      Start   : 0x10047000
 *      End     : 0x10047FFF
 *      Size    : 4 Kbytes
 *  3. Unprivileged Code:
 *      Start   : 0x10048000
 *      End     : 0x1007FFFF
 *      Size    : 224 Kbytes
 */
define symbol __region_ROM_Privileged_start__   = 0x10040000;
define symbol __region_ROM_Privileged_end__     = 0x10046FFF;
define symbol __region_ROM_SystemCalls_start__  = 0x10047000;
define symbol __region_ROM_SystemCalls_end__    = 0x10047FFF;
define symbol __region_ROM_Unprivileged_start__ = 0x10048000;
define symbol __region_ROM_Unprivileged_end__   = 0x1007FFFF;

/* RAM Organization
 *  1. Privileged Data:
 *      Start   : 0x30008000
 *      End     : 0x30008FFF
 *      Size    : 4 Kbytes
 *  2. Unprivileged Data:
 *      Start   : 0x30009000
 *      End     : 0x30017FFF
 *      Size    : 60 Kbytes
 */
define symbol __region_RAM_Privileged_start__   = 0x30008000;
define symbol __region_RAM_Privileged_end__     = 0x30008FFF;
define symbol __region_RAM_Unprivileged_start__ = 0x30009000;
define symbol __region_RAM_Unprivileged_end__   = 0x30017FFF;

/* Memory Regions. */
define memory mem with size = 4G;
define region ROM_Privileged_region             = mem:[from __region_ROM_Privileged_start__     to __region_ROM_Privileged_end__];
define region ROM_SystemCalls_region            = mem:[from __region_ROM_SystemCalls_start__    to __region_ROM_SystemCalls_end__];
define region ROM_Unprivileged_region           = mem:[from __region_ROM_Unprivileged_start__   to __region_ROM_Unprivileged_end__];
define region RAM_Privileged_region             = mem:[from __region_RAM_Privileged_start__     to __region_RAM_Privileged_end__];
define region RAM_Unprivileged_region           = mem:[from __region_RAM_Unprivileged_start__   to __region_RAM_Unprivileged_end__];

/* Stack and Heap. */
define block CSTACK        with alignment = 8, size = __ICFEDIT_size_cstack__        { };
define block PROC_STACK_S  with alignment = 8, size = __ICFEDIT_size_proc_s_stack__  { };
define block MAIN_STACK_NS with alignment = 8, size = __ICFEDIT_size_main_ns_stack__ { };
define block PROC_STACK_NS with alignment = 8, size = __ICFEDIT_size_proc_ns_stack__ { };
define block HEAP          with alignment = 8, size = __ICFEDIT_size_heap__          { };

/* Initialization. */
do not initialize  { section .noinit };
initialize by copy { readwrite };
if( isdefinedsymbol(__USE_DLIB_PERTHREAD) )
{
    /* Required in a multi-threaded application. */
    initialize by copy with packing = none { section __DLIB_PERTHREAD };
}

/* Exported symbols. */
define exported symbol __privileged_functions_start__   = __region_ROM_Privileged_start__;
define exported symbol __privileged_functions_end__     = __region_ROM_Privileged_end__;
define exported symbol __syscalls_flash_start__         = __region_ROM_SystemCalls_start__;
define exported symbol __syscalls_flash_end__           = __region_ROM_SystemCalls_end__;
define exported symbol __unprivileged_flash_start__     = __region_ROM_Unprivileged_start__;
define exported symbol __unprivileged_flash_end__       = __region_ROM_Unprivileged_end__;
define exported symbol __privileged_sram_start__        = __region_RAM_Privileged_start__;
define exported symbol __privileged_sram_end__          = __region_RAM_Privileged_end__;

/* Placements. */
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_Privileged_region   { readonly section privileged_functions };
place in ROM_SystemCalls_region  { readonly section freertos_system_calls };
place in ROM_Unprivileged_region { readonly };

place in RAM_Privileged_region   { readwrite section privileged_data };
place in RAM_Unprivileged_region { readwrite,
                                   block CSTACK, block PROC_STACK_S, block MAIN_STACK_NS, block PROC_STACK_NS, block HEAP };
