5 "libcr_newlib_semihost.a"
\r
10 /* Define each memory region. */
\r
11 PROGRAM_FLASH (rx) : ORIGIN = 0x10000000, LENGTH = 0xfe00 /* 63.5K bytes (alias Flash). */
\r
12 veneer_table (rx) : ORIGIN = 0x1000fe00, LENGTH = 0x200 /* 0.5K bytes (alias Flash2). */
\r
13 Ram0 (rwx) : ORIGIN = 0x30000000, LENGTH = 0x8000 /* 32K bytes (alias RAM). */
\r
16 /* Define a symbol for the top of each memory region. */
\r
17 __base_PROGRAM_FLASH = 0x10000000; /* PROGRAM_FLASH. */
\r
18 __base_Flash = 0x10000000; /* Flash. */
\r
19 __top_PROGRAM_FLASH = 0x10000000 + 0xfe00; /* 63.5K bytes */
\r
20 __top_Flash = 0x10000000 + 0xfe00; /* 63.5K bytes */
\r
22 __base_veneer_table = 0x1000fe00; /* veneer_table. */
\r
23 __base_Flash2 = 0x1000fe00; /* Flash2. */
\r
24 __top_veneer_table = 0x1000fe00 + 0x200; /* 0.5K bytes. */
\r
25 __top_Flash2 = 0x1000fe00 + 0x200; /* 0.5K bytes. */
\r
27 __base_Ram0 = 0x30000000; /* Ram0. */
\r
28 __base_RAM = 0x30000000; /* RAM. */
\r
29 __top_Ram0 = 0x30000000 + 0x8000; /* 32K bytes. */
\r
30 __top_RAM = 0x30000000 + 0x8000; /* 32K bytes. */
\r
37 /* Veneer Table Section (Non-Secure Callable). */
\r
38 .text_Flash2 : ALIGN(4)
\r
41 *(.text_Flash2*) /* For compatibility with previous releases. */
\r
42 *(.text_veneer_table*) /* For compatibility with previous releases. */
\r
44 *(.text.$veneer_table*)
\r
46 *(.rodata.$veneer_table*)
\r
49 /* Vector Table Section. */
\r
53 __vectors_start__ = ABSOLUTE(.);
\r
54 KEEP(*(.isr_vector))
\r
56 /* Global Section Table. */
\r
58 __section_table_start = .;
\r
60 __data_section_table = .;
\r
61 LONG(LOADADDR(.data));
\r
63 LONG( SIZEOF(.data));
\r
64 __data_section_table_end = .;
\r
66 __bss_section_table = .;
\r
68 LONG( SIZEOF(.bss));
\r
69 __bss_section_table_end = .;
\r
71 __section_table_end = .;
\r
72 /* End of Global Section Table. */
\r
77 /* Main Text Section. */
\r
81 *(.rodata .rodata.* .constdata .constdata.*)
\r
85 /* For exception handling/unwind - some Newlib functions (in common
\r
86 * with C++ and STDC++) use this. */
\r
87 .ARM.extab : ALIGN(4)
\r
89 *(.ARM.extab* .gnu.linkonce.armextab.*)
\r
93 .ARM.exidx : ALIGN(4)
\r
95 *(.ARM.exidx* .gnu.linkonce.armexidx.*)
\r
99 /* TrustZone Secure Gateway Stubs Section. */
\r
100 .gnu.sgstubs : ALIGN (32)
\r
109 /* Text Section End. */
\r
112 /* Uninit Reserved Section. */
\r
113 .uninit_RESERVED : ALIGN(4)
\r
115 KEEP(*(.bss.$RESERVED*))
\r
117 _end_uninit_RESERVED = .;
\r
120 /* Main Data section (Ram0). */
\r
130 } > Ram0 AT>PROGRAM_FLASH
\r
132 /* Main BSS Section. */
\r
143 /* Default Noinit Section. */
\r
144 .noinit (NOLOAD) : ALIGN(4)
\r
152 /* Reserve space and place heap in memory map. */
\r
162 /* Reserve space for stack in memory. */
\r
163 _StackSize = 0x800;
\r
169 /* Place actual stack in memory map. */
\r
170 .stack ORIGIN(Ram0) + LENGTH(Ram0) - _StackSize - 0 : ALIGN(4)
\r
174 _vStackTop = . + _StackSize;
\r
177 /* Create checksum value (used in startup). */
\r
178 PROVIDE(__valid_user_code_checksum = 0 -
\r
181 + (NMI_Handler + 1)
\r
182 + (HardFault_Handler + 1)
\r
183 + (( DEFINED(MemManage_Handler) ? MemManage_Handler : 0 ) + 1) /* MemManage_Handler may not be defined. */
\r
184 + (( DEFINED(BusFault_Handler) ? BusFault_Handler : 0 ) + 1) /* BusFault_Handler may not be defined. */
\r
185 + (( DEFINED(UsageFault_Handler) ? UsageFault_Handler : 0 ) + 1) /* UsageFault_Handler may not be defined. */
\r
188 /* Provide basic symbols giving location and size of main text block,
\r
189 * including initial values of RW data sections. Note that these will need
\r
190 * extending to give a complete picture with complex images
\r
191 * (e.g multiple Flash banks). */
\r
192 _image_start = LOADADDR(.text);
\r
193 _image_end = LOADADDR(.data) + SIZEOF(.data);
\r
194 _image_size = _image_end - _image_start;
\r