fsp_xspi0_boot.ld 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689
  1. /*
  2. Linker File for Renesas RZ/N2 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. CR52_0 = 0;
  44. ATCM_PRV_START = DEFINED(ATCM_START) ? ATCM_START : 0;
  45. ATCM_PRV_LENGTH = DEFINED(ATCM_LENGTH) ? ATCM_LENGTH : 0;
  46. BTCM_PRV_START = DEFINED(BTCM_START) ? BTCM_START : 0;
  47. BTCM_PRV_LENGTH = DEFINED(BTCM_LENGTH) ? BTCM_LENGTH : 0;
  48. SYSTEM_RAM_PRV_START = DEFINED(SYSTEM_RAM_START) ? SYSTEM_RAM_START : 0;
  49. SYSTEM_RAM_PRV_LENGTH = DEFINED(SYSTEM_RAM_LENGTH) ? SYSTEM_RAM_LENGTH : 0;
  50. SYSTEM_RAM_MIRROR_PRV_START = DEFINED(SYSTEM_RAM_MIRROR_START) ? SYSTEM_RAM_MIRROR_START : 0;
  51. SYSTEM_RAM_MIRROR_PRV_LENGTH = DEFINED(SYSTEM_RAM_MIRROR_LENGTH) ? SYSTEM_RAM_MIRROR_LENGTH : 0;
  52. xSPI0_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS0_SPACE_MIRROR_START) ? xSPI0_CS0_SPACE_MIRROR_START : 0;
  53. xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_MIRROR_LENGTH) ? xSPI0_CS0_SPACE_MIRROR_LENGTH : 0;
  54. xSPI0_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI0_CS1_SPACE_MIRROR_START) ? xSPI0_CS1_SPACE_MIRROR_START : 0;
  55. xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_MIRROR_LENGTH) ? xSPI0_CS1_SPACE_MIRROR_LENGTH : 0;
  56. xSPI1_CS0_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS0_SPACE_MIRROR_START) ? xSPI1_CS0_SPACE_MIRROR_START : 0;
  57. xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_MIRROR_LENGTH) ? xSPI1_CS0_SPACE_MIRROR_LENGTH : 0;
  58. xSPI1_CS1_SPACE_MIRROR_PRV_START = DEFINED(xSPI1_CS1_SPACE_MIRROR_START) ? xSPI1_CS1_SPACE_MIRROR_START : 0;
  59. xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_MIRROR_LENGTH) ? xSPI1_CS1_SPACE_MIRROR_LENGTH : 0;
  60. CS0_SPACE_MIRROR_PRV_START = DEFINED(CS0_SPACE_MIRROR_START) ? CS0_SPACE_MIRROR_START : 0;
  61. CS0_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS0_SPACE_MIRROR_LENGTH) ? CS0_SPACE_MIRROR_LENGTH : 0;
  62. CS2_SPACE_MIRROR_PRV_START = DEFINED(CS2_SPACE_MIRROR_START) ? CS2_SPACE_MIRROR_START : 0;
  63. CS2_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS2_SPACE_MIRROR_LENGTH) ? CS2_SPACE_MIRROR_LENGTH : 0;
  64. CS3_SPACE_MIRROR_PRV_START = DEFINED(CS3_SPACE_MIRROR_START) ? CS3_SPACE_MIRROR_START : 0;
  65. CS3_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS3_SPACE_MIRROR_LENGTH) ? CS3_SPACE_MIRROR_LENGTH : 0;
  66. CS5_SPACE_MIRROR_PRV_START = DEFINED(CS5_SPACE_MIRROR_START) ? CS5_SPACE_MIRROR_START : 0;
  67. CS5_SPACE_MIRROR_PRV_LENGTH = DEFINED(CS5_SPACE_MIRROR_LENGTH) ? CS5_SPACE_MIRROR_LENGTH : 0;
  68. xSPI0_CS0_SPACE_PRV_START = DEFINED(xSPI0_CS0_SPACE_START) ? xSPI0_CS0_SPACE_START : 0;
  69. xSPI0_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS0_SPACE_LENGTH) ? xSPI0_CS0_SPACE_LENGTH : 0;
  70. xSPI0_CS1_SPACE_PRV_START = DEFINED(xSPI0_CS1_SPACE_START) ? xSPI0_CS1_SPACE_START : 0;
  71. xSPI0_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI0_CS1_SPACE_LENGTH) ? xSPI0_CS1_SPACE_LENGTH : 0;
  72. xSPI1_CS0_SPACE_PRV_START = DEFINED(xSPI1_CS0_SPACE_START) ? xSPI1_CS0_SPACE_START : 0;
  73. xSPI1_CS0_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS0_SPACE_LENGTH) ? xSPI1_CS0_SPACE_LENGTH : 0;
  74. xSPI1_CS1_SPACE_PRV_START = DEFINED(xSPI1_CS1_SPACE_START) ? xSPI1_CS1_SPACE_START : 0;
  75. xSPI1_CS1_SPACE_PRV_LENGTH = DEFINED(xSPI1_CS1_SPACE_LENGTH) ? xSPI1_CS1_SPACE_LENGTH : 0;
  76. CS0_SPACE_PRV_START = DEFINED(CS0_SPACE_START) ? CS0_SPACE_START : 0;
  77. CS0_SPACE_PRV_LENGTH = DEFINED(CS0_SPACE_LENGTH) ? CS0_SPACE_LENGTH : 0;
  78. CS2_SPACE_PRV_START = DEFINED(CS2_SPACE_START) ? CS2_SPACE_START : 0;
  79. CS2_SPACE_PRV_LENGTH = DEFINED(CS2_SPACE_LENGTH) ? CS2_SPACE_LENGTH : 0;
  80. CS3_SPACE_PRV_START = DEFINED(CS3_SPACE_START) ? CS3_SPACE_START : 0;
  81. CS3_SPACE_PRV_LENGTH = DEFINED(CS3_SPACE_LENGTH) ? CS3_SPACE_LENGTH : 0;
  82. CS5_SPACE_PRV_START = DEFINED(CS5_SPACE_START) ? CS5_SPACE_START : 0;
  83. CS5_SPACE_PRV_LENGTH = DEFINED(CS5_SPACE_LENGTH) ? CS5_SPACE_LENGTH : 0;
  84. PCIE0_MIRROR_PRV_START = DEFINED(PCIE0_MIRROR_START) ? PCIE0_MIRROR_START : 0;
  85. PCIE0_MIRROR_PRV_LENGTH = DEFINED(PCIE0_MIRROR_LENGTH) ? PCIE0_MIRROR_LENGTH : 0;
  86. PCIE1_MIRROR_PRV_START = DEFINED(PCIE1_MIRROR_START) ? PCIE1_MIRROR_START : 0;
  87. PCIE1_MIRROR_PRV_LENGTH = DEFINED(PCIE1_MIRROR_LENGTH) ? PCIE1_MIRROR_LENGTH : 0;
  88. DDR_MIRROR0_PRV_START = DEFINED(DDR_MIRROR0_START) ? DDR_MIRROR0_START : 0;
  89. DDR_MIRROR0_PRV_LENGTH = DEFINED(DDR_MIRROR0_LENGTH) ? DDR_MIRROR0_LENGTH : 0;
  90. DDR_MIRROR1_PRV_START = DEFINED(DDR_MIRROR1_START) ? DDR_MIRROR1_START : 0;
  91. DDR_MIRROR1_PRV_LENGTH = DEFINED(DDR_MIRROR1_LENGTH) ? DDR_MIRROR1_LENGTH : 0;
  92. DDR_MIRROR_PRV_START = DEFINED(DDR_MIRROR_START) ? DDR_MIRROR_START : 0;
  93. DDR_MIRROR_PRV_LENGTH = DEFINED(DDR_MIRROR_LENGTH) ? DDR_MIRROR_LENGTH : 0;
  94. DDR_PRV_START = DEFINED(DDR_START) ? DDR_START : 0;
  95. DDR_PRV_LENGTH = DEFINED(DDR_LENGTH) ? DDR_LENGTH : 0;
  96. PCIE0_PRV_START = DEFINED(PCIE0_START) ? PCIE0_START : 0;
  97. PCIE0_PRV_LENGTH = DEFINED(PCIE0_LENGTH) ? PCIE0_LENGTH : 0;
  98. PCIE1_PRV_START = DEFINED(PCIE1_START) ? PCIE1_START : 0;
  99. PCIE1_PRV_LENGTH = DEFINED(PCIE1_LENGTH) ? PCIE1_LENGTH : 0;
  100. SECONDARY_PRV = DEFINED(SECONDARY) ? SECONDARY : 0;
  101. _RZN_ORDINAL = (0 == SECONDARY_PRV) ? 1 : 2;
  102. HAS_SYSTEM_RAM_MIRROR = DEFINED(SYSTEM_RAM_MIRROR_START) ? 1 : 0;
  103. SYSTEM_RAM_ALIGN_START = ALIGN(SYSTEM_RAM_PRV_START, 0x00020000);
  104. SYSTEM_RAM_ALIGN_LENGTH = SYSTEM_RAM_PRV_LENGTH - (SYSTEM_RAM_PRV_LENGTH % 0x00020000);
  105. SYSTEM_RAM_MIRROR_OFFSET = DEFINED(SYSTEM_RAM_START) ?
  106. (0 == HAS_SYSTEM_RAM_MIRROR) ?
  107. (DEFINED(CR52_0) || DEFINED(CR52_1)) ?
  108. 0x00000000 :
  109. 0x00200000 :
  110. 0x20000000 :
  111. 0;
  112. xSPI0_CS0_SPACE_ALIGN_START = ALIGN(xSPI0_CS0_SPACE_PRV_START, 0x00020000);
  113. xSPI0_CS0_SPACE_ALIGN_LENGTH = xSPI0_CS0_SPACE_PRV_LENGTH - (xSPI0_CS0_SPACE_PRV_LENGTH % 0x00020000);
  114. RAM_START = SYSTEM_RAM_ALIGN_START;
  115. RAM_LENGTH = SYSTEM_RAM_ALIGN_LENGTH;
  116. LOADER_START = ((1 == _RZN_ORDINAL) && DEFINED(CR52_0)) ? BTCM_PRV_START : SYSTEM_RAM_ALIGN_START;
  117. LOADER_LENGTH = ((1 == _RZN_ORDINAL) && DEFINED(CR52_0)) ? BTCM_PRV_LENGTH : SYSTEM_RAM_ALIGN_LENGTH;
  118. ROM_START = (1 == _RZN_ORDINAL) ? xSPI0_CS0_SPACE_ALIGN_START : SYSTEM_RAM_ALIGN_START;
  119. ROM_LENGTH = (1 == _RZN_ORDINAL) ? xSPI0_CS0_SPACE_ALIGN_LENGTH : SYSTEM_RAM_ALIGN_LENGTH;
  120. FLASH_CONTENTS_OFFSET = (0 == HAS_SYSTEM_RAM_MIRROR) ? 0x00000050 : 0x0000004C;
  121. LOADER_TEXT_OFFSET = ((1 == _RZN_ORDINAL) && DEFINED(CR52_0)) ? 0x00002000 : 0x00001000;
  122. TEXT_OFFSET = ((1 == _RZN_ORDINAL) && DEFINED(CR52_0)) ? 0x00000100 : 0x00010000;
  123. IMAGE_INFO_OFFSET = 0x00000800;
  124. INTVEC_ADDRESS = RAM_START;
  125. LOADER_TEXT_ADDRESS = LOADER_START + LOADER_TEXT_OFFSET;
  126. TEXT_ADDRESS = ((1 == _RZN_ORDINAL) || ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1)))) ? RAM_START + TEXT_OFFSET : noncache_flash_contents_end;
  127. /* Define starting addresses and length for data_noncache, DMAC link mode data, CPU-shared non-cache, and CPU-specific non-cache areas. */
  128. DATA_NONCACHE_OFFSET = DEFINED(SYSTEM_RAM_START) ? 0x00048000 : 0;
  129. DMAC_LINK_MODE_OFFSET = DEFINED(SYSTEM_RAM_START) ? 0x00044000 : 0;
  130. SHARED_NONCACHE_BUFFER_OFFSET = DEFINED(SYSTEM_RAM_START) ? 0x00040000 : 0;
  131. NONCACHE_BUFFER_OFFSET = DEFINED(SYSTEM_RAM_START) ? 0x00020000 : 0;
  132. SYSTEM_RAM_END_ADDRESS = SYSTEM_RAM_ALIGN_START + SYSTEM_RAM_ALIGN_LENGTH;
  133. SYSTEM_RAM_MIRROR_END_ADDRESS = SYSTEM_RAM_ALIGN_START + SYSTEM_RAM_ALIGN_LENGTH + SYSTEM_RAM_MIRROR_OFFSET;
  134. DATA_NONCACHE_START = (1 == _RZN_ORDINAL) ?
  135. SYSTEM_RAM_MIRROR_END_ADDRESS - DATA_NONCACHE_OFFSET :
  136. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  137. __ThreadStackLimit :
  138. _mdata_noncache + SYSTEM_RAM_MIRROR_OFFSET;
  139. DMAC_LINK_MODE_START = (1 == _RZN_ORDINAL) ?
  140. SYSTEM_RAM_MIRROR_END_ADDRESS - DMAC_LINK_MODE_OFFSET :
  141. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  142. _data_noncache_end :
  143. _mdmac_link_mode + SYSTEM_RAM_MIRROR_OFFSET;
  144. NONCACHE_BUFFER_START = (1 == _RZN_ORDINAL) ?
  145. SYSTEM_RAM_MIRROR_END_ADDRESS - NONCACHE_BUFFER_OFFSET :
  146. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  147. _dmac_link_mode_end :
  148. _mncbuffer + SYSTEM_RAM_MIRROR_OFFSET;
  149. SHARED_NONCACHE_BUFFER_START = SYSTEM_RAM_MIRROR_END_ADDRESS - SHARED_NONCACHE_BUFFER_OFFSET;
  150. data_noncache_size = _data_noncache_end - _data_noncache_start;
  151. dmac_link_mode_size = _dmac_link_mode_end - _dmac_link_mode_start;
  152. sncbuffer_size = _sncbuffer_end - _sncbuffer_start;
  153. ncbuffer_size = _ncbuffer_end - _ncbuffer_start;
  154. LCDC_FRAME_BUFFER_OFFSET = (DEFINED(CR52_0) || DEFINED(CR52_1)) ?
  155. DEFINED(DDR_MIRROR1_START) ?
  156. 0x04000000 :
  157. 0 :
  158. DEFINED(DDR_MIRROR_START) ?
  159. 0x04000000 :
  160. 0;
  161. LCDC_FRAME_BUFFER_START = (DEFINED(CR52_0) || DEFINED(CR52_1)) ?
  162. DDR_MIRROR1_PRV_START + DDR_MIRROR1_PRV_LENGTH - LCDC_FRAME_BUFFER_OFFSET :
  163. DDR_MIRROR_PRV_START + DDR_MIRROR_PRV_LENGTH - LCDC_FRAME_BUFFER_OFFSET;
  164. LCDC_FRAME_BUFFER_LENGTH = LCDC_FRAME_BUFFER_OFFSET;
  165. MEMORY
  166. {
  167. ATCM : ORIGIN = ATCM_PRV_START, LENGTH = ATCM_PRV_LENGTH
  168. BTCM : ORIGIN = BTCM_PRV_START, LENGTH = BTCM_PRV_LENGTH
  169. SYSTEM_RAM : ORIGIN = SYSTEM_RAM_ALIGN_START, LENGTH = SYSTEM_RAM_ALIGN_LENGTH
  170. SYSTEM_RAM_MIRROR : ORIGIN = SYSTEM_RAM_MIRROR_PRV_START, LENGTH = SYSTEM_RAM_MIRROR_PRV_LENGTH
  171. xSPI0_CS0_SPACE_MIRROR : ORIGIN = xSPI0_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS0_SPACE_MIRROR_PRV_LENGTH
  172. xSPI0_CS1_SPACE_MIRROR : ORIGIN = xSPI0_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI0_CS1_SPACE_MIRROR_PRV_LENGTH
  173. xSPI1_CS0_SPACE_MIRROR : ORIGIN = xSPI1_CS0_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS0_SPACE_MIRROR_PRV_LENGTH
  174. xSPI1_CS1_SPACE_MIRROR : ORIGIN = xSPI1_CS1_SPACE_MIRROR_PRV_START, LENGTH = xSPI1_CS1_SPACE_MIRROR_PRV_LENGTH
  175. CS0_SPACE_MIRROR : ORIGIN = CS0_SPACE_MIRROR_PRV_START, LENGTH = CS0_SPACE_MIRROR_PRV_LENGTH
  176. CS2_SPACE_MIRROR : ORIGIN = CS2_SPACE_MIRROR_PRV_START, LENGTH = CS2_SPACE_MIRROR_PRV_LENGTH
  177. CS3_SPACE_MIRROR : ORIGIN = CS3_SPACE_MIRROR_PRV_START, LENGTH = CS3_SPACE_MIRROR_PRV_LENGTH
  178. CS5_SPACE_MIRROR : ORIGIN = CS5_SPACE_MIRROR_PRV_START, LENGTH = CS5_SPACE_MIRROR_PRV_LENGTH
  179. xSPI0_CS0_SPACE : ORIGIN = xSPI0_CS0_SPACE_ALIGN_START, LENGTH = xSPI0_CS0_SPACE_ALIGN_LENGTH
  180. xSPI0_CS1_SPACE : ORIGIN = xSPI0_CS1_SPACE_PRV_START, LENGTH = xSPI0_CS1_SPACE_PRV_LENGTH
  181. xSPI1_CS0_SPACE : ORIGIN = xSPI1_CS0_SPACE_PRV_START, LENGTH = xSPI1_CS0_SPACE_PRV_LENGTH
  182. xSPI1_CS1_SPACE : ORIGIN = xSPI1_CS1_SPACE_PRV_START, LENGTH = xSPI1_CS1_SPACE_PRV_LENGTH
  183. CS0_SPACE : ORIGIN = CS0_SPACE_PRV_START, LENGTH = CS0_SPACE_PRV_LENGTH
  184. CS2_SPACE : ORIGIN = CS2_SPACE_PRV_START, LENGTH = CS2_SPACE_PRV_LENGTH
  185. CS3_SPACE : ORIGIN = CS3_SPACE_PRV_START, LENGTH = CS3_SPACE_PRV_LENGTH
  186. CS5_SPACE : ORIGIN = CS5_SPACE_PRV_START, LENGTH = CS5_SPACE_PRV_LENGTH
  187. PCIE0_MIRROR : ORIGIN = PCIE0_MIRROR_PRV_START, LENGTH = PCIE0_MIRROR_PRV_LENGTH
  188. PCIE1_MIRROR : ORIGIN = PCIE1_MIRROR_PRV_START, LENGTH = PCIE1_MIRROR_PRV_LENGTH
  189. DDR_MIRROR0 : ORIGIN = DDR_MIRROR0_PRV_START, LENGTH = DDR_MIRROR0_PRV_LENGTH
  190. DDR_MIRROR1 : ORIGIN = DDR_MIRROR1_PRV_START, LENGTH = DDR_MIRROR1_PRV_LENGTH
  191. DDR_MIRROR : ORIGIN = DDR_MIRROR_PRV_START, LENGTH = DDR_MIRROR_PRV_LENGTH
  192. DDR : ORIGIN = DDR_PRV_START, LENGTH = DDR_PRV_LENGTH
  193. PCIE0 : ORIGIN = PCIE0_PRV_START, LENGTH = PCIE0_PRV_LENGTH
  194. PCIE1 : ORIGIN = PCIE1_PRV_START, LENGTH = PCIE1_PRV_LENGTH
  195. RAM_TEXT : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
  196. RAM_DATA : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
  197. LOADER_TEXT_STACK : ORIGIN = LOADER_START, LENGTH = LOADER_LENGTH
  198. LOADER_DATA_STACK : ORIGIN = LOADER_START, LENGTH = LOADER_LENGTH
  199. FLASH_CONTENTS : ORIGIN = ROM_START, LENGTH = ROM_LENGTH
  200. NONCACHE : ORIGIN = SYSTEM_RAM_ALIGN_START + SYSTEM_RAM_MIRROR_OFFSET, LENGTH = SYSTEM_RAM_ALIGN_LENGTH
  201. LCDC_FRAME_BUFFER : ORIGIN = LCDC_FRAME_BUFFER_START, LENGTH = LCDC_FRAME_BUFFER_LENGTH
  202. }
  203. SECTIONS
  204. {
  205. LOADER_PARAM_ADDRESS = (1 == _RZN_ORDINAL) ? xSPI0_CS0_SPACE_ALIGN_START : _loader_text_start;
  206. .loader_param LOADER_PARAM_ADDRESS : AT (LOADER_PARAM_ADDRESS)
  207. {
  208. KEEP(*(.loader_param))
  209. } > FLASH_CONTENTS
  210. FLASH_CONTENTS_ADDRESS = (1 == _RZN_ORDINAL) ? LOADER_PARAM_ADDRESS + FLASH_CONTENTS_OFFSET : _loader_text_start;
  211. .flash_contents FLASH_CONTENTS_ADDRESS : AT (FLASH_CONTENTS_ADDRESS)
  212. {
  213. _mloader_text = .;
  214. . = (1 == _RZN_ORDINAL) ? . + (_loader_text_end - _loader_text_start) : .;
  215. . = ALIGN(8);
  216. _mloader_data = .;
  217. . = (1 == _RZN_ORDINAL) ? . + (_loader_data_end - _loader_data_start) : .;
  218. . = ALIGN(8);
  219. _mfvector = .;
  220. . = (1 == _RZN_ORDINAL) ? . + (_fvector_end - _fvector_start) : .;
  221. . = ALIGN(8);
  222. _mtext = .;
  223. . = (1 == _RZN_ORDINAL) ? . + (__text_end - __text_start) +
  224. (_rvectors_end - _rvectors_start) +
  225. (__extab_end - __extab_start) +
  226. (__exidx_end - __exidx_start) : .;
  227. . = ALIGN(8);
  228. _mdata = .;
  229. . = (1 == _RZN_ORDINAL) ? . + (__data_end - __data_start) +
  230. (__got_end - __got_start) : .;
  231. flash_contents_end = .;
  232. } > FLASH_CONTENTS
  233. NONCACHE_FLASH_CONTENTS_ADDRESS = (1 == _RZN_ORDINAL) ? flash_contents_end : RAM_START + TEXT_OFFSET;
  234. .noncache_flash_contents NONCACHE_FLASH_CONTENTS_ADDRESS : AT (NONCACHE_FLASH_CONTENTS_ADDRESS)
  235. {
  236. . = (0 != data_noncache_size) ? ALIGN(8) : .;
  237. _mdata_noncache = .;
  238. . = . + data_noncache_size;
  239. . = (0 != dmac_link_mode_size) ? ALIGN(8) : .;
  240. _mdmac_link_mode = .;
  241. . = . + dmac_link_mode_size;
  242. . = (0 != sncbuffer_size) ? ALIGN(32) : .;
  243. _msncbuffer = .;
  244. . = . + sncbuffer_size;
  245. . = (0 != ncbuffer_size) ? ALIGN(32) : .;
  246. _mncbuffer = .;
  247. . = . + ncbuffer_size;
  248. noncache_flash_contents_end = .;
  249. } > FLASH_CONTENTS
  250. LOADER_TEXT_IMAGE = (1 == _RZN_ORDINAL) ? _mloader_text : _loader_text_start;
  251. .loader_text LOADER_TEXT_ADDRESS : AT (LOADER_TEXT_IMAGE)
  252. {
  253. _loader_text_start = .;
  254. *(.loader_text)
  255. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.text*)
  256. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.text*)
  257. */fsp/src/bsp/mcu/all/bsp_clocks.o(.text*)
  258. */fsp/src/bsp/mcu/all/bsp_irq.o(.text*)
  259. */fsp/src/bsp/mcu/all/bsp_semaphore.o(.text*)
  260. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.text*)
  261. */fsp/src/bsp/mcu/all/bsp_cache.o(.text*)
  262. */fsp/src/bsp/mcu/all/bsp_tzc400.o(.text*)
  263. */fsp/src/bsp/mcu/all/bsp_address_expander.o(.text*)
  264. */fsp/src/r_ioport/r_ioport.o(.text*)
  265. KEEP(*(.warm_start))
  266. KEEP(*(.loader_user_data*))
  267. . = ALIGN(0x200);
  268. _loader_text_end = .;
  269. } > LOADER_TEXT_STACK
  270. LOADER_DATA_IMAGE = (1 == _RZN_ORDINAL) ? _mloader_data : _loader_data_start;
  271. .loader_data _loader_text_end : AT (LOADER_DATA_IMAGE)
  272. {
  273. _loader_data_start = .;
  274. __loader_data_start = .;
  275. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.data*)
  276. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*/system_core.o(.rodata*)
  277. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.data*)
  278. */fsp/src/bsp/mcu/all/bsp_clocks.o(.data*)
  279. */fsp/src/bsp/mcu/all/bsp_irq.o(.data*)
  280. */fsp/src/bsp/mcu/all/bsp_semaphore.o(.data*)
  281. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.data*)
  282. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.rodata*)
  283. */fsp/src/bsp/mcu/all/bsp_cache.o(.data*)
  284. */fsp/src/bsp/mcu/all/bsp_tzc400.o(.data*)
  285. */fsp/src/bsp/mcu/all/bsp_tzc400.o(.rodata*)
  286. */fsp/src/bsp/mcu/all/bsp_address_expander.o(.data*)
  287. */fsp/src/r_ioport/r_ioport.o(.data*)
  288. . = ALIGN(8);
  289. __loader_data_end = .;
  290. __loader_bss_start = .;
  291. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.bss*)
  292. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(.bss*)
  293. */fsp/src/bsp/mcu/all/bsp_clocks.o(.bss*)
  294. */fsp/src/bsp/mcu/all/bsp_irq.o(.bss*)
  295. */fsp/src/bsp/mcu/all/bsp_semaphore.o(.bss*)
  296. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.bss*)
  297. */fsp/src/bsp/mcu/all/bsp_cache.o(.bss*)
  298. */fsp/src/bsp/mcu/all/bsp_tzc400.o(.bss*)
  299. */fsp/src/bsp/mcu/all/bsp_address_expander.o(.bss*)
  300. */fsp/src/r_ioport/r_ioport.o(.bss*)
  301. KEEP(*(.ttbr))
  302. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(COMMON)
  303. */fsp/src/bsp/mcu/all/*/bsp_irq_core.o(COMMON)
  304. */fsp/src/bsp/mcu/all/bsp_clocks.o(COMMON)
  305. */fsp/src/bsp/mcu/all/bsp_irq.o(COMMON)
  306. */fsp/src/bsp/mcu/all/bsp_semaphore.o(COMMON)
  307. */fsp/src/bsp/mcu/all/bsp_register_protection.o(.COMMON)
  308. */fsp/src/bsp/mcu/all/bsp_cache.o(COMMON)
  309. */fsp/src/bsp/mcu/all/bsp_tzc400.o(COMMON)
  310. */fsp/src/bsp/mcu/all/bsp_address_expander.o(COMMON)
  311. */fsp/src/r_ioport/r_ioport.o(.COMMON)
  312. . = ALIGN(8);
  313. __loader_bss_end = . ;
  314. */fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.software_reset) /* Do not initialize */
  315. _loader_data_end = .;
  316. } > LOADER_DATA_STACK
  317. INTVEC_IMAGE = (1 == _RZN_ORDINAL) ? _mfvector : _fvector_start;
  318. .intvec INTVEC_ADDRESS : AT (INTVEC_IMAGE)
  319. {
  320. _fvector_start = .;
  321. KEEP(*(.intvec))
  322. . = ALIGN(0x80);
  323. KEEP(*(.intvec_0x080))
  324. . = ALIGN(0x80);
  325. KEEP(*(.intvec_0x100))
  326. . = ALIGN(0x80);
  327. KEEP(*(.intvec_0x180))
  328. . = ALIGN(0x80);
  329. KEEP(*(.intvec_0x200))
  330. . = ALIGN(0x80);
  331. KEEP(*(.intvec_0x280))
  332. . = ALIGN(0x80);
  333. KEEP(*(.intvec_0x300))
  334. . = ALIGN(0x80);
  335. KEEP(*(.intvec_0x380))
  336. . = ALIGN(0x80);
  337. KEEP(*(.intvec_0x400))
  338. . = ALIGN(0x80);
  339. KEEP(*(.intvec_0x480))
  340. . = ALIGN(0x80);
  341. KEEP(*(.intvec_0x500))
  342. . = ALIGN(0x80);
  343. KEEP(*(.intvec_0x580))
  344. . = ALIGN(0x80);
  345. KEEP(*(.intvec_0x600))
  346. . = ALIGN(0x80);
  347. KEEP(*(.intvec_0x680))
  348. . = ALIGN(0x80);
  349. KEEP(*(.intvec_0x700))
  350. . = ALIGN(0x80);
  351. KEEP(*(.intvec_0x780))
  352. _fvector_end = .;
  353. } > RAM_TEXT
  354. IMAGE_INFO_ADDRESS = RAM_START + IMAGE_INFO_OFFSET;
  355. .image_info IMAGE_INFO_ADDRESS : AT (IMAGE_INFO_ADDRESS)
  356. {
  357. _image_info_start = .;
  358. KEEP(*(.image_info))
  359. _image_info_end = .;
  360. } > RAM_DATA
  361. TEXT_IMAGE = (1 == _RZN_ORDINAL) ? _mtext : _text_start;
  362. .text TEXT_ADDRESS : AT (TEXT_IMAGE)
  363. {
  364. _text_start = .;
  365. __text_start = .;
  366. *(.text*)
  367. KEEP(*(.reset_handler))
  368. KEEP(*(.init))
  369. KEEP(*(.fini))
  370. /* .ctors */
  371. *crtbegin.o(.ctors)
  372. *crtbegin?.o(.ctors)
  373. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
  374. *(SORT(.ctors.*))
  375. *(.ctors)
  376. _ctor_end = .;
  377. /* .dtors */
  378. *crtbegin.o(.dtors)
  379. *crtbegin?.o(.dtors)
  380. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
  381. *(SORT(.dtors.*))
  382. *(.dtors)
  383. _dtor_end = .;
  384. /* section information for utest */
  385. . = ALIGN(4);
  386. __rt_utest_tc_tab_start = .;
  387. KEEP(*(UtestTcTab))
  388. __rt_utest_tc_tab_end = .;
  389. /* section information for finsh shell */
  390. . = ALIGN(4);
  391. __fsymtab_start = .;
  392. KEEP(*(FSymTab))
  393. __fsymtab_end = .;
  394. . = ALIGN(4);
  395. __vsymtab_start = .;
  396. KEEP(*(VSymTab))
  397. __vsymtab_end = .;
  398. /* section information for initial. */
  399. . = ALIGN(4);
  400. __rt_init_start = .;
  401. KEEP(*(SORT(.rti_fn*)))
  402. __rt_init_end = .;
  403. /* new GCC version uses .init_array */
  404. PROVIDE(__ctors_start__ = .);
  405. KEEP (*(SORT(.init_array.*)))
  406. KEEP (*(.init_array))
  407. PROVIDE(__ctors_end__ = .);
  408. . = ALIGN(4);
  409. KEEP(*(FalPartTable))
  410. KEEP(*(.eh_frame*))
  411. __text_end = .;
  412. } > RAM_TEXT
  413. .rvectors :
  414. {
  415. _rvectors_start = .;
  416. KEEP(*(.rvectors))
  417. _rvectors_end = .;
  418. } > RAM_TEXT
  419. .ARM.extab :
  420. {
  421. __extab_start = .;
  422. *(.ARM.extab* .gnu.linkonce.armextab.*)
  423. __extab_end = .;
  424. } > RAM_TEXT
  425. .ARM.exidx :
  426. {
  427. __exidx_start = .;
  428. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  429. __exidx_end = .;
  430. _text_end = .;
  431. } > RAM_TEXT
  432. DATA_IMAGE = (1 == _RZN_ORDINAL) ? _mdata : _data_start;
  433. .data _text_end : AT (DATA_IMAGE)
  434. {
  435. _data_start = .;
  436. __data_start = .;
  437. *(vtable)
  438. *(.data.*)
  439. *(.data)
  440. *(.rodata*)
  441. _erodata = .;
  442. . = ALIGN(8);
  443. /* preinit data */
  444. PROVIDE_HIDDEN (__preinit_array_start = .);
  445. KEEP(*(.preinit_array))
  446. PROVIDE_HIDDEN (__preinit_array_end = .);
  447. . = ALIGN(8);
  448. /* init data */
  449. PROVIDE_HIDDEN (__init_array_start = .);
  450. KEEP(*(SORT(.init_array.*)))
  451. KEEP(*(.init_array))
  452. PROVIDE_HIDDEN (__init_array_end = .);
  453. . = ALIGN(8);
  454. /* finit data */
  455. PROVIDE_HIDDEN (__fini_array_start = .);
  456. KEEP(*(SORT(.fini_array.*)))
  457. KEEP(*(.fini_array))
  458. PROVIDE_HIDDEN (__fini_array_end = .);
  459. KEEP(*(.jcr*))
  460. . = ALIGN(8);
  461. __data_end = .;
  462. } > RAM_DATA
  463. .got :
  464. {
  465. __got_start = .;
  466. *(.got)
  467. *(.got.plt)
  468. __got_end = .;
  469. /* All data end */
  470. _data_end = .;
  471. } > RAM_DATA
  472. .bss :
  473. {
  474. . = ALIGN(8);
  475. __bss_start__ = .;
  476. _bss = .;
  477. *(.bss*)
  478. *(COMMON)
  479. . = ALIGN(8);
  480. __bss_end__ = .;
  481. _ebss = .;
  482. _end = .;
  483. } > RAM_DATA
  484. .heap (NOLOAD) :
  485. {
  486. . = ALIGN(8);
  487. __HeapBase = .;
  488. /* Place the STD heap here. */
  489. KEEP(*(.heap))
  490. __HeapLimit = .;
  491. } > RAM_DATA
  492. .aarch64_stack (NOLOAD) :
  493. {
  494. . = ALIGN(8);
  495. __AArch64StackBase = .;
  496. /* Place the Thread stacks here. */
  497. KEEP(*(.aarch64_stack*))
  498. __AArch64StackLimit = .;
  499. } > RAM_DATA
  500. .thread_stack (NOLOAD):
  501. {
  502. . = ALIGN(8);
  503. __ThreadStackBase = .;
  504. /* Place the Thread stacks here. */
  505. KEEP(*(.stack*))
  506. __ThreadStackLimit = .;
  507. } > RAM_DATA
  508. .sys_stack (NOLOAD) :
  509. {
  510. . = ALIGN(8);
  511. __SysStackBase = .;
  512. /* Place the sys_stack here. */
  513. KEEP(*(.sys_stack))
  514. __SysStackLimit = .;
  515. } > LOADER_DATA_STACK
  516. .svc_stack (NOLOAD) :
  517. {
  518. . = ALIGN(8);
  519. __SvcStackBase = .;
  520. /* Place the svc_stack here. */
  521. KEEP(*(.svc_stack))
  522. __SvcStackLimit = .;
  523. } > LOADER_DATA_STACK
  524. .irq_stack (NOLOAD) :
  525. {
  526. . = ALIGN(8);
  527. __IrqStackBase = .;
  528. /* Place the irq_stack here. */
  529. KEEP(*(.irq_stack))
  530. __IrqStackLimit = .;
  531. } > LOADER_DATA_STACK
  532. .fiq_stack (NOLOAD) :
  533. {
  534. . = ALIGN(8);
  535. __FiqStackBase = .;
  536. /* Place the fiq_stack here. */
  537. KEEP(*(.fiq_stack))
  538. __FiqStackLimit = .;
  539. } > LOADER_DATA_STACK
  540. .und_stack (NOLOAD) :
  541. {
  542. . = ALIGN(8);
  543. __UndStackBase = .;
  544. /* Place the und_stack here. */
  545. KEEP(*(.und_stack))
  546. __UndStackLimit = .;
  547. } > LOADER_DATA_STACK
  548. .abt_stack (NOLOAD) :
  549. {
  550. . = ALIGN(8);
  551. __AbtStackBase = .;
  552. /* Place the abt_stack here. */
  553. KEEP(*(.abt_stack))
  554. __AbtStackLimit = .;
  555. } > LOADER_DATA_STACK
  556. DATA_NONCACHE_INIT_START = (1 == _RZN_ORDINAL) ?
  557. _mdata_noncache :
  558. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  559. __ThreadStackLimit :
  560. _mdata_noncache;
  561. .data_noncache DATA_NONCACHE_START : AT (DATA_NONCACHE_INIT_START)
  562. {
  563. . = ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ? ALIGN(64) : ALIGN(8);
  564. _data_noncache_start = .;
  565. KEEP(*(.data_noncache*))
  566. _data_noncache_end = .;
  567. } > NONCACHE
  568. DMAC_LINK_MODE_INIT_START = (1 == _RZN_ORDINAL) ?
  569. _mdmac_link_mode :
  570. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  571. _data_noncache_end :
  572. _mdmac_link_mode;
  573. .dmac_link_mode DMAC_LINK_MODE_START : AT (DMAC_LINK_MODE_INIT_START)
  574. {
  575. . = ALIGN(8);
  576. _dmac_link_mode_start = .;
  577. KEEP(*(.dmac_link_mode*))
  578. _dmac_link_mode_end = .;
  579. } > NONCACHE
  580. SHARED_NONCACHE_BUFFER_INIT_START = (1 == _RZN_ORDINAL) ?
  581. _msncbuffer :
  582. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  583. _ncbuffer_end :
  584. _msncbuffer;
  585. .shared_noncache_buffer SHARED_NONCACHE_BUFFER_START : AT (SHARED_NONCACHE_BUFFER_INIT_START)
  586. {
  587. . = ALIGN(32);
  588. _sncbuffer_start = .;
  589. KEEP(*(.shared_noncache_buffer*))
  590. _sncbuffer_end = .;
  591. } > NONCACHE
  592. NONCACHE_BUFFER_INIT_START = (1 == _RZN_ORDINAL) ?
  593. _mncbuffer :
  594. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  595. _dmac_link_mode_end :
  596. _mncbuffer;
  597. .noncache_buffer NONCACHE_BUFFER_START : AT (NONCACHE_BUFFER_INIT_START)
  598. {
  599. . = ALIGN(32);
  600. _ncbuffer_start = .;
  601. KEEP(*(.noncache_buffer*))
  602. _ncbuffer_end = .;
  603. } > NONCACHE
  604. .lcdc_frame_buffer (NOLOAD) :
  605. {
  606. . = ALIGN(512);
  607. _lcdc_frame_buffer_start = .;
  608. KEEP(*(.lcdc_frame_buffer*))
  609. _lcdc_frame_buffer_end = .;
  610. } > LCDC_FRAME_BUFFER
  611. SECONDARY_START = ((1 == _RZN_ORDINAL) && DEFINED(CR52_0)) ? SYSTEM_RAM_ALIGN_START : ALIGN(__ThreadStackLimit, 0x00020000);
  612. SECONDARY_IMAGE = (1 == _RZN_ORDINAL) ? ALIGN(noncache_flash_contents_end, 0x00020000) : SECONDARY_START;
  613. .secondary SECONDARY_START : AT (SECONDARY_IMAGE)
  614. {
  615. . = ALIGN(0x20000);
  616. _secondary_start = .;
  617. KEEP(*(.secondary))
  618. _secondary_end = .;
  619. } > SYSTEM_RAM
  620. }
  621. __ddsc_xSPI0_CS0_SPACE_START = ORIGIN(xSPI0_CS0_SPACE);
  622. __ddsc_xSPI0_CS0_SPACE_END = (1 == _RZN_ORDINAL) ? noncache_flash_contents_end : __ddsc_xSPI0_CS0_SPACE_START;
  623. __ddsc_ATCM_START = ORIGIN(ATCM);
  624. __ddsc_ATCM_END = (1 == _RZN_ORDINAL) && DEFINED(CR52_0) ? __ThreadStackLimit : __ddsc_ATCM_START;
  625. __ddsc_BTCM_START = ORIGIN(BTCM);
  626. __ddsc_BTCM_END = (1 == _RZN_ORDINAL) && DEFINED(CR52_0) ? __AbtStackLimit : __ddsc_BTCM_START;
  627. __ddsc_SYSTEM_RAM_START = ORIGIN(SYSTEM_RAM);
  628. __ddsc_SYSTEM_RAM_END = (1 == _RZN_ORDINAL) ?
  629. DEFINED(CR52_0) ?
  630. __ddsc_SYSTEM_RAM_START :
  631. __ThreadStackLimit :
  632. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  633. _ncbuffer_end :
  634. __ThreadStackLimit;
  635. __ddsc_SECONDARY_START = (1 == _RZN_ORDINAL) ? 0 : 1;
  636. __ddsc_SECONDARY_END = 1;