fsp_xspi0_boot.ld 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. /*
  2. Linker File for Renesas RZ/N2L FSP
  3. */
  4. /* The memory information for each device is done in memory regions file.
  5. * The starting address and length of memory not defined in memory regions file are defined as 0. */
  6. /* generated memory regions file - do not edit */
  7. ATCM_START = 0x00000000;
  8. ATCM_LENGTH = 0x20000;
  9. BTCM_START = 0x00100000;
  10. BTCM_LENGTH = 0x20000;
  11. SYSTEM_RAM_START = 0x10000000;
  12. SYSTEM_RAM_LENGTH = 0x180000;
  13. SYSTEM_RAM_MIRROR_START = 0x30000000;
  14. SYSTEM_RAM_MIRROR_LENGTH = 0x180000;
  15. xSPI0_CS0_SPACE_MIRROR_START = 0x40000000;
  16. xSPI0_CS0_SPACE_MIRROR_LENGTH = 0x4000000;
  17. xSPI0_CS1_SPACE_MIRROR_START = 0x44000000;
  18. xSPI0_CS1_SPACE_MIRROR_LENGTH = 0x4000000;
  19. xSPI1_CS0_SPACE_MIRROR_START = 0x48000000;
  20. xSPI1_CS0_SPACE_MIRROR_LENGTH = 0x4000000;
  21. CS0_SPACE_MIRROR_START = 0x50000000;
  22. CS0_SPACE_MIRROR_LENGTH = 0x4000000;
  23. CS2_SPACE_MIRROR_START = 0x54000000;
  24. CS2_SPACE_MIRROR_LENGTH = 0x4000000;
  25. CS3_SPACE_MIRROR_START = 0x58000000;
  26. CS3_SPACE_MIRROR_LENGTH = 0x4000000;
  27. CS5_SPACE_MIRROR_START = 0x5C000000;
  28. CS5_SPACE_MIRROR_LENGTH = 0x4000000;
  29. xSPI0_CS0_SPACE_START = 0x60000000;
  30. xSPI0_CS0_SPACE_LENGTH = 0x4000000;
  31. xSPI0_CS1_SPACE_START = 0x64000000;
  32. xSPI0_CS1_SPACE_LENGTH = 0x4000000;
  33. xSPI1_CS0_SPACE_START = 0x68000000;
  34. xSPI1_CS0_SPACE_LENGTH = 0x4000000;
  35. CS0_SPACE_START = 0x70000000;
  36. CS0_SPACE_LENGTH = 0x4000000;
  37. CS2_SPACE_START = 0x74000000;
  38. CS2_SPACE_LENGTH = 0x4000000;
  39. CS3_SPACE_START = 0x78000000;
  40. CS3_SPACE_LENGTH = 0x4000000;
  41. CS5_SPACE_START = 0x7C000000;
  42. CS5_SPACE_LENGTH = 0x4000000;
  43. ATCM_PRV_START = DEFINED(ATCM_START) ? ATCM_START : 0;
  44. ATCM_PRV_LENGTH = DEFINED(ATCM_LENGTH) ? ATCM_LENGTH : 0;
  45. BTCM_PRV_START = DEFINED(BTCM_START) ? BTCM_START : 0;
  46. BTCM_PRV_LENGTH = DEFINED(BTCM_LENGTH) ? BTCM_LENGTH : 0;
  47. SYSTEM_RAM_PRV_START = DEFINED(SYSTEM_RAM_START) ? SYSTEM_RAM_START : 0;
  48. SYSTEM_RAM_PRV_LENGTH = DEFINED(SYSTEM_RAM_LENGTH) ? SYSTEM_RAM_LENGTH : 0;
  49. SYSTEM_RAM_MIRROR_PRV_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START : 0;
  50. SYSTEM_RAM_MIRROR_PRV_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? SYSTEM_RAM_MIRROR_LENGTH : 0;
  51. xSPI0_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS0_SPACE_MIRROR_START) ? xSPI0_CS0_SPACE_MIRROR_START : 0;
  52. xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_MIRROR_LENGTH) ? xSPI0_CS0_SPACE_MIRROR_LENGTH : 0;
  53. xSPI0_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS1_SPACE_MIRROR_START) ? xSPI0_CS1_SPACE_MIRROR_START : 0;
  54. xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_MIRROR_LENGTH) ? xSPI0_CS1_SPACE_MIRROR_LENGTH : 0;
  55. xSPI1_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS0_SPACE_MIRROR_START) ? xSPI1_CS0_SPACE_MIRROR_START : 0;
  56. xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_MIRROR_LENGTH) ? xSPI1_CS0_SPACE_MIRROR_LENGTH : 0;
  57. xSPI1_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS1_SPACE_MIRROR_START) ? xSPI1_CS1_SPACE_MIRROR_START : 0;
  58. xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_MIRROR_LENGTH) ? xSPI1_CS1_SPACE_MIRROR_LENGTH : 0;
  59. CS0_SPACE_MIRROR_PRV_START = DEFINED(CS0_SPACE_MIRROR_START) ? CS0_SPACE_MIRROR_START : 0;
  60. CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS0_SPACE_MIRROR_LENGTH) ? CS0_SPACE_MIRROR_LENGTH : 0;
  61. CS2_SPACE_MIRROR_PRV_START = DEFINED(CS2_SPACE_MIRROR_START) ? CS2_SPACE_MIRROR_START : 0;
  62. CS2_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS2_SPACE_MIRROR_LENGTH) ? CS2_SPACE_MIRROR_LENGTH : 0;
  63. CS3_SPACE_MIRROR_PRV_START = DEFINED(CS3_SPACE_MIRROR_START) ? CS3_SPACE_MIRROR_START : 0;
  64. CS3_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS3_SPACE_MIRROR_LENGTH) ? CS3_SPACE_MIRROR_LENGTH : 0;
  65. CS5_SPACE_MIRROR_PRV_START = DEFINED(CS5_SPACE_MIRROR_START) ? CS5_SPACE_MIRROR_START : 0;
  66. CS5_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS5_SPACE_MIRROR_LENGTH) ? CS5_SPACE_MIRROR_LENGTH : 0;
  67. xSPI0_CS0_SPACE_PRV_START = DEFINED(xSPI0_CS0_SPACE_START) ? xSPI0_CS0_SPACE_START : 0;
  68. xSPI0_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_LENGTH) ? xSPI0_CS0_SPACE_LENGTH : 0;
  69. xSPI0_CS1_SPACE_PRV_START = DEFINED(xSPI0_CS1_SPACE_START) ? xSPI0_CS1_SPACE_START : 0;
  70. xSPI0_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_LENGTH) ? xSPI0_CS1_SPACE_LENGTH : 0;
  71. xSPI1_CS0_SPACE_PRV_START = DEFINED(xSPI1_CS0_SPACE_START) ? xSPI1_CS0_SPACE_START : 0;
  72. xSPI1_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_LENGTH) ? xSPI1_CS0_SPACE_LENGTH : 0;
  73. xSPI1_CS1_SPACE_PRV_START = DEFINED(xSPI1_CS1_SPACE_START) ? xSPI1_CS1_SPACE_START : 0;
  74. xSPI1_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_LENGTH) ? xSPI1_CS1_SPACE_LENGTH : 0;
  75. CS0_SPACE_PRV_START = DEFINED(CS0_SPACE_START) ? CS0_SPACE_START : 0;
  76. CS0_SPACE_PRV_LENGTH = DEFINED(CS0_SPACE_LENGTH) ? CS0_SPACE_LENGTH : 0;
  77. CS2_SPACE_PRV_START = DEFINED(CS2_SPACE_START) ? CS2_SPACE_START : 0;
  78. CS2_SPACE_PRV_LENGTH = DEFINED(CS2_SPACE_LENGTH) ? CS2_SPACE_LENGTH : 0;
  79. CS3_SPACE_PRV_START = DEFINED(CS3_SPACE_START) ? CS3_SPACE_START : 0;
  80. CS3_SPACE_PRV_LENGTH = DEFINED(CS3_SPACE_LENGTH) ? CS3_SPACE_LENGTH : 0;
  81. CS5_SPACE_PRV_START = DEFINED(CS5_SPACE_START) ? CS5_SPACE_START : 0;
  82. CS5_SPACE_PRV_LENGTH = DEFINED(CS5_SPACE_LENGTH) ? CS5_SPACE_LENGTH : 0;
  83. LOADER_PARAM_ADDRESS = xSPI0_CS0_SPACE_PRV_START;
  84. FLASH_CONTENTS_ADDRESS = LOADER_PARAM_ADDRESS + 0x0000004C;
  85. LOADER_TEXT_ADDRESS = 0x00102000;
  86. INTVEC_ADDRESS = 0x10000000;
  87. TEXT_ADDRESS = 0x10020000;
  88. NONCACHE_BUFFER_OFFSET = 0x00020000;
  89. DMAC_LINK_MODE_OFFSET = 0x00044000;
  90. DATA_NONCACHE_OFFSET = 0x00048000;
  91. RAM_START = SYSTEM_RAM_PRV_START;
  92. RAM_LENGTH = SYSTEM_RAM_PRV_LENGTH;
  93. LOADER_START = BTCM_PRV_START;
  94. LOADER_LENGTH = BTCM_PRV_LENGTH;
  95. /* Define starting addresses and length for data_noncache, DMAC link mode data, CPU-shared non-cache, and CPU-specific non-cache areas. */
  96. DATA_NONCACHE_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - DATA_NONCACHE_OFFSET : 0;
  97. DATA_NONCACHE_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00004000 : 0;
  98. DMAC_LINK_MODE_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - DMAC_LINK_MODE_OFFSET : 0;
  99. DMAC_LINK_MODE_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00004000 : 0;
  100. SHARED_NONCACHE_BUFFER_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - 0x00040000 : 0;
  101. SHARED_NONCACHE_BUFFER_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00020000 : 0;
  102. NONCACHE_BUFFER_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START + SYSTEM_RAM_MIRROR_LENGTH - NONCACHE_BUFFER_OFFSET : 0;
  103. NONCACHE_BUFFER_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? 0x00020000 : 0;
  104. MEMORY
  105. {
  106. ATCM : ORIGIN = ATCM_PRV_START, LENGTH = ATCM_PRV_LENGTH
  107. BTCM : ORIGIN = BTCM_PRV_START, LENGTH = BTCM_PRV_LENGTH
  108. SYSTEM_RAM : ORIGIN = SYSTEM_RAM_PRV_START, LENGTH = SYSTEM_RAM_PRV_LENGTH
  109. SYSTEM_RAM_MIRROR : ORIGIN = SYSTEM_RAM_MIRROR_PRV_START, LENGTH = SYSTEM_RAM_MIRROR_PRV_LENGTH
  110. xSPI0_CS0_SPACE_MIRROR : ORIGIN = xSPI0_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH
  111. xSPI0_CS1_SPACE_MIRROR : ORIGIN = xSPI0_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH
  112. xSPI1_CS0_SPACE_MIRROR : ORIGIN = xSPI1_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH
  113. xSPI1_CS1_SPACE_MIRROR : ORIGIN = xSPI1_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH
  114. CS0_SPACE_MIRROR : ORIGIN = CS0_SPACE_MIRROR_PRV_START, LENGTH = CS0_SPACE_MIRROR_PRV_LENGTH
  115. CS2_SPACE_MIRROR : ORIGIN = CS2_SPACE_MIRROR_PRV_START, LENGTH = CS2_SPACE_MIRROR_PRV_LENGTH
  116. CS3_SPACE_MIRROR : ORIGIN = CS3_SPACE_MIRROR_PRV_START, LENGTH = CS3_SPACE_MIRROR_PRV_LENGTH
  117. CS5_SPACE_MIRROR : ORIGIN = CS5_SPACE_MIRROR_PRV_START, LENGTH = CS5_SPACE_MIRROR_PRV_LENGTH
  118. xSPI0_CS0_SPACE : ORIGIN = xSPI0_CS0_SPACE_PRV_START, LENGTH = xSPI0_CS0_SPACE_PRV_LENGTH
  119. xSPI0_CS1_SPACE : ORIGIN = xSPI0_CS1_SPACE_PRV_START, LENGTH = xSPI0_CS1_SPACE_PRV_LENGTH
  120. xSPI1_CS0_SPACE : ORIGIN = xSPI1_CS0_SPACE_PRV_START, LENGTH = xSPI1_CS0_SPACE_PRV_LENGTH
  121. xSPI1_CS1_SPACE : ORIGIN = xSPI1_CS1_SPACE_PRV_START, LENGTH = xSPI1_CS1_SPACE_PRV_LENGTH
  122. CS0_SPACE : ORIGIN = CS0_SPACE_PRV_START, LENGTH = CS0_SPACE_PRV_LENGTH
  123. CS2_SPACE : ORIGIN = CS2_SPACE_PRV_START, LENGTH = CS2_SPACE_PRV_LENGTH
  124. CS3_SPACE : ORIGIN = CS3_SPACE_PRV_START, LENGTH = CS3_SPACE_PRV_LENGTH
  125. CS5_SPACE : ORIGIN = CS5_SPACE_PRV_START, LENGTH = CS5_SPACE_PRV_LENGTH
  126. RAM : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
  127. LOADER_STACK : ORIGIN = LOADER_START, LENGTH = LOADER_LENGTH
  128. DUMMY : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
  129. DATA_NONCACHE : ORIGIN = DATA_NONCACHE_START, LENGTH = DATA_NONCACHE_LENGTH
  130. DMAC_LINK_MODE : ORIGIN = DMAC_LINK_MODE_START, LENGTH = DMAC_LINK_MODE_LENGTH
  131. SHARED_NONCACHE_BUFFER : ORIGIN = SHARED_NONCACHE_BUFFER_START, LENGTH = SHARED_NONCACHE_BUFFER_LENGTH
  132. NONCACHE_BUFFER : ORIGIN = NONCACHE_BUFFER_START, LENGTH = NONCACHE_BUFFER_LENGTH
  133. }
  134. SECTIONS
  135. {
  136. .loader_param LOADER_PARAM_ADDRESS : AT (LOADER_PARAM_ADDRESS)
  137. {
  138. KEEP(*(.loader_param))
  139. } > xSPI0_CS0_SPACE
  140. .flash_contents FLASH_CONTENTS_ADDRESS : AT (FLASH_CONTENTS_ADDRESS)
  141. {
  142. _mloader_text = .;
  143. . = . + (_loader_text_end - _loader_text_start);
  144. _mloader_data = .;
  145. . = . + (_loader_data_end - _loader_data_start);
  146. _mfvector = .;
  147. . = . + (_fvector_end - _fvector_start);
  148. _mtext = .;
  149. . = . + (_text_end - _text_start);
  150. _mdummy = .;
  151. . = . + (_dummy_end - _dummy_start);
  152. _mdata = .;
  153. . = . + (_data_end - _data_start);
  154. _mdata_noncache = .;
  155. . = . + (_data_noncache_end - _data_noncache_start);
  156. flash_contents_end = .;
  157. } > xSPI0_CS0_SPACE
  158. .loader_text LOADER_TEXT_ADDRESS : AT (_mloader_text)
  159. {
  160. _loader_text_start = .;
  161. *(.loader_text)
  162. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.text*)
  163. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.text*)
  164. */fsp/src/bsp/mcu/all/bsp_clocks.o(.text*)
  165. */fsp/src/bsp/mcu/all/bsp_irq.o(.text*)
  166. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.text*)
  167. */fsp/src/bsp/mcu/all/bsp_cache.o(.text*)
  168. */fsp/src/r_ioport/r_ioport.o(.text*)
  169. KEEP(*(.warm_start))
  170. . = . + (512 - ((. - _loader_text_start) % 512));
  171. _loader_text_end = .;
  172. } > LOADER_STACK
  173. .loader_data : AT (_mloader_data)
  174. {
  175. _loader_data_start = .;
  176. __loader_data_start = .;
  177. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.data*)
  178. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*/system_core.o(.rodata*)
  179. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.data*)
  180. */fsp/src/bsp/mcu/all/bsp_clocks.o(.data*)
  181. */fsp/src/bsp/mcu/all/bsp_irq.o(.data*)
  182. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.data*)
  183. */fsp/src/bsp/mcu/all/bsp_cache.o(.data*)
  184. */fsp/src/r_ioport/r_ioport.o(.data*)
  185. . = ALIGN(4);
  186. __loader_data_end = .;
  187. __loader_bss_start = .;
  188. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.bss*)
  189. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.bss*)
  190. */fsp/src/bsp/mcu/all/bsp_clocks.o(.bss*)
  191. */fsp/src/bsp/mcu/all/bsp_irq.o(.bss*)
  192. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.bss*)
  193. */fsp/src/bsp/mcu/all/bsp_cache.o(.bss*)
  194. */fsp/src/r_ioport/r_ioport.o(.bss*)
  195. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(COMMON)
  196. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(COMMON)
  197. */fsp/src/bsp/mcu/all/bsp_clocks.o(COMMON)
  198. */fsp/src/bsp/mcu/all/bsp_irq.o(COMMON)
  199. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.COMMON)
  200. */fsp/src/bsp/mcu/all/bsp_cache.o(COMMON)
  201. */fsp/src/r_ioport/r_ioport.o(.COMMON)
  202. . = ALIGN(4);
  203. __loader_bss_end = . ;
  204. _loader_data_end = .;
  205. } > LOADER_STACK
  206. .intvec INTVEC_ADDRESS : AT (_mfvector)
  207. {
  208. _fvector_start = .;
  209. KEEP(*(.intvec))
  210. _fvector_end = .;
  211. } > RAM
  212. .text TEXT_ADDRESS : AT (_mtext)
  213. {
  214. _text_start = .;
  215. *(.text*)
  216. KEEP(*(.reset_handler))
  217. KEEP(*(.init))
  218. KEEP(*(.fini))
  219. /* .ctors */
  220. *crtbegin.o(.ctors)
  221. *crtbegin?.o(.ctors)
  222. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
  223. *(SORT(.ctors.*))
  224. *(.ctors)
  225. _ctor_end = .;
  226. /* .dtors */
  227. *crtbegin.o(.dtors)
  228. *crtbegin?.o(.dtors)
  229. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
  230. *(SORT(.dtors.*))
  231. *(.dtors)
  232. _dtor_end = .;
  233. /* section information for utest */
  234. . = ALIGN(4);
  235. __rt_utest_tc_tab_start = .;
  236. KEEP(*(UtestTcTab))
  237. __rt_utest_tc_tab_end = .;
  238. /* section information for finsh shell */
  239. . = ALIGN(4);
  240. __fsymtab_start = .;
  241. KEEP(*(FSymTab))
  242. __fsymtab_end = .;
  243. . = ALIGN(4);
  244. __vsymtab_start = .;
  245. KEEP(*(VSymTab))
  246. __vsymtab_end = .;
  247. /* section information for initial. */
  248. . = ALIGN(4);
  249. __rt_init_start = .;
  250. KEEP(*(SORT(.rti_fn*)))
  251. __rt_init_end = .;
  252. /* new GCC version uses .init_array */
  253. PROVIDE(__ctors_start__ = .);
  254. KEEP (*(SORT(.init_array.*)))
  255. KEEP (*(.init_array))
  256. PROVIDE(__ctors_end__ = .);
  257. . = ALIGN(4);
  258. KEEP(*(FalPartTable))
  259. KEEP(*(.eh_frame*))
  260. } > RAM
  261. .rvectors :
  262. {
  263. _rvectors_start = .;
  264. KEEP(*(.rvectors))
  265. _rvectors_end = .;
  266. } > RAM
  267. .ARM.extab :
  268. {
  269. *(.ARM.extab* .gnu.linkonce.armextab.*)
  270. } > RAM
  271. __exidx_start = .;
  272. .ARM.exidx :
  273. {
  274. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  275. } > RAM
  276. __exidx_end = .;
  277. .got :
  278. {
  279. *(.got)
  280. *(.got.plt)
  281. . = ALIGN(4);
  282. _text_end = .;
  283. } > RAM
  284. .dummy _fvector_end : AT (_mdummy)
  285. {
  286. _dummy_start = .;
  287. KEEP(*(.dummy));
  288. _dummy_end = .;
  289. } > DUMMY
  290. .data : AT (_mdata)
  291. {
  292. _data_start = .;
  293. *(vtable)
  294. *(.data.*)
  295. *(.data)
  296. *(.rodata*)
  297. _erodata = .;
  298. . = ALIGN(4);
  299. /* preinit data */
  300. PROVIDE_HIDDEN (__preinit_array_start = .);
  301. KEEP(*(.preinit_array))
  302. PROVIDE_HIDDEN (__preinit_array_end = .);
  303. . = ALIGN(4);
  304. /* init data */
  305. PROVIDE_HIDDEN (__init_array_start = .);
  306. KEEP(*(SORT(.init_array.*)))
  307. KEEP(*(.init_array))
  308. PROVIDE_HIDDEN (__init_array_end = .);
  309. . = ALIGN(4);
  310. /* finit data */
  311. PROVIDE_HIDDEN (__fini_array_start = .);
  312. KEEP(*(SORT(.fini_array.*)))
  313. KEEP(*(.fini_array))
  314. PROVIDE_HIDDEN (__fini_array_end = .);
  315. KEEP(*(.jcr*))
  316. . = ALIGN(4);
  317. /* All data end */
  318. _data_end = .;
  319. } > RAM
  320. .bss :
  321. {
  322. . = ALIGN(4);
  323. __bss_start__ = .;
  324. _bss = .;
  325. *(.bss*)
  326. *(COMMON)
  327. . = ALIGN(4);
  328. __bss_end__ = .;
  329. _ebss = .;
  330. _end = .;
  331. } > RAM
  332. .heap (NOLOAD) :
  333. {
  334. . = ALIGN(8);
  335. __HeapBase = .;
  336. /* Place the STD heap here. */
  337. KEEP(*(.heap))
  338. __HeapLimit = .;
  339. } > RAM
  340. .thread_stack (NOLOAD):
  341. {
  342. . = ALIGN(8);
  343. __ThreadStackBase = .;
  344. /* Place the Thread stacks here. */
  345. KEEP(*(.stack*))
  346. __ThreadStackLimit = .;
  347. } > RAM
  348. .sys_stack (NOLOAD) :
  349. {
  350. . = ALIGN(8);
  351. __SysStackBase = .;
  352. /* Place the sys_stack here. */
  353. KEEP(*(.sys_stack))
  354. __SysStackLimit = .;
  355. } > LOADER_STACK
  356. .svc_stack (NOLOAD) :
  357. {
  358. . = ALIGN(8);
  359. __SvcStackBase = .;
  360. /* Place the svc_stack here. */
  361. KEEP(*(.svc_stack))
  362. __SvcStackLimit = .;
  363. } > LOADER_STACK
  364. .irq_stack (NOLOAD) :
  365. {
  366. . = ALIGN(8);
  367. __IrqStackBase = .;
  368. /* Place the irq_stack here. */
  369. KEEP(*(.irq_stack))
  370. __IrqStackLimit = .;
  371. } > LOADER_STACK
  372. .fiq_stack (NOLOAD) :
  373. {
  374. . = ALIGN(8);
  375. __FiqStackBase = .;
  376. /* Place the fiq_stack here. */
  377. KEEP(*(.fiq_stack))
  378. __FiqStackLimit = .;
  379. } > LOADER_STACK
  380. .und_stack (NOLOAD) :
  381. {
  382. . = ALIGN(8);
  383. __UndStackBase = .;
  384. /* Place the und_stack here. */
  385. KEEP(*(.und_stack))
  386. __UndStackLimit = .;
  387. } > LOADER_STACK
  388. .abt_stack (NOLOAD) :
  389. {
  390. . = ALIGN(8);
  391. __AbtStackBase = .;
  392. /* Place the abt_stack here. */
  393. KEEP(*(.abt_stack))
  394. __AbtStackLimit = .;
  395. } > LOADER_STACK
  396. .data_noncache DATA_NONCACHE_START : AT (_mdata_noncache)
  397. {
  398. . = ALIGN(4);
  399. _data_noncache_start = .;
  400. KEEP(*(.data_noncache*))
  401. _data_noncache_end = .;
  402. } > DATA_NONCACHE
  403. .dmac_link_mode DMAC_LINK_MODE_START : AT (DMAC_LINK_MODE_START)
  404. {
  405. . = ALIGN(4);
  406. _DmacLinkMode_start = .;
  407. KEEP(*(.dmac_link_mode*))
  408. _DmacLinkMode_end = .;
  409. } > DMAC_LINK_MODE
  410. .shared_noncache_buffer SHARED_NONCACHE_BUFFER_START (NOLOAD) : AT (SHARED_NONCACHE_BUFFER_START)
  411. {
  412. . = ALIGN(32);
  413. _sncbuffer_start = .;
  414. KEEP(*(.shared_noncache_buffer*))
  415. _sncbuffer_end = .;
  416. } > SHARED_NONCACHE_BUFFER
  417. .noncache_buffer NONCACHE_BUFFER_START (NOLOAD) : AT (NONCACHE_BUFFER_START)
  418. {
  419. . = ALIGN(32);
  420. _ncbuffer_start = .;
  421. KEEP(*(.noncache_buffer*))
  422. _ncbuffer_end = .;
  423. } > NONCACHE_BUFFER
  424. }