fsp_xspi0_boot_scons.ld 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696
  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. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.o(.text*)
  256. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.o(.text*)
  257. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.o(.text*)
  258. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.o(.text*)
  259. build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(.text*)
  260. build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(.text*)
  261. build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(.text*)
  262. build/rzn/fsp/src/bsp/mcu/all/bsp_semaphore.o(.text*)
  263. build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.text*)
  264. build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(.text*)
  265. build/rzn/fsp/src/bsp/mcu/all/bsp_tzc400.o(.text*)
  266. build/rzn/fsp/src/bsp/mcu/all/bsp_address_expander.o(.text*)
  267. build/rzn/fsp/src/r_ioport/r_ioport.o(.text*)
  268. KEEP(*(.warm_start))
  269. KEEP(*(.loader_user_data*))
  270. . = ALIGN(0x200);
  271. _loader_text_end = .;
  272. } > LOADER_TEXT_STACK
  273. LOADER_DATA_IMAGE = (1 == _RZN_ORDINAL) ? _mloader_data : _loader_data_start;
  274. .loader_data _loader_text_end : AT (LOADER_DATA_IMAGE)
  275. {
  276. _loader_data_start = .;
  277. __loader_data_start = .;
  278. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.o(.data*)
  279. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.o(.rodata*)
  280. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/*/startup.o(.rodata*)
  281. build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(.data*)
  282. build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(.data*)
  283. build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(.data*)
  284. build/rzn/fsp/src/bsp/mcu/all/bsp_semaphore.o(.data*)
  285. build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.data*)
  286. build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.rodata*)
  287. build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(.data*)
  288. build/rzn/fsp/src/bsp/mcu/all/bsp_tzc400.o(.data*)
  289. build/rzn/fsp/src/bsp/mcu/all/bsp_tzc400.o(.rodata*)
  290. build/rzn/fsp/src/bsp/mcu/all/bsp_address_expander.o(.data*)
  291. build/rzn/fsp/src/r_ioport/r_ioport.o(.data*)
  292. . = ALIGN(8);
  293. __loader_data_end = .;
  294. __loader_bss_start = .;
  295. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/startup_core.o(.bss*)
  296. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/cr/system_core.o(.bss*)
  297. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/startup.o(.bss*)
  298. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/system.o(.bss*)
  299. build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(.bss*)
  300. build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(.bss*)
  301. build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(.bss*)
  302. build/rzn/fsp/src/bsp/mcu/all/bsp_semaphore.o(.bss*)
  303. build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.bss*)
  304. build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(.bss*)
  305. build/rzn/fsp/src/bsp/mcu/all/bsp_tzc400.o(.bss*)
  306. build/rzn/fsp/src/bsp/mcu/all/bsp_address_expander.o(.bss*)
  307. build/rzn/fsp/src/r_ioport/r_ioport.o(.bss*)
  308. KEEP(*(.ttbr))
  309. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(COMMON)
  310. build/rzn/fsp/src/bsp/mcu/all/cr/bsp_irq_core.o(COMMON)
  311. build/rzn/fsp/src/bsp/mcu/all/bsp_clocks.o(COMMON)
  312. build/rzn/fsp/src/bsp/mcu/all/bsp_irq.o(COMMON)
  313. build/rzn/fsp/src/bsp/mcu/all/bsp_semaphore.o(COMMON)
  314. build/rzn/fsp/src/bsp/mcu/all/bsp_register_protection.o(.COMMON)
  315. build/rzn/fsp/src/bsp/mcu/all/bsp_cache.o(COMMON)
  316. build/rzn/fsp/src/bsp/mcu/all/bsp_tzc400.o(COMMON)
  317. build/rzn/fsp/src/bsp/mcu/all/bsp_address_expander.o(COMMON)
  318. build/rzn/fsp/src/r_ioport/r_ioport.o(.COMMON)
  319. . = ALIGN(8);
  320. __loader_bss_end = . ;
  321. build/rzn/fsp/src/bsp/cmsis/Device/RENESAS/Source/*.o(.software_reset) /* Do not initialize */
  322. _loader_data_end = .;
  323. } > LOADER_DATA_STACK
  324. INTVEC_IMAGE = (1 == _RZN_ORDINAL) ? _mfvector : _fvector_start;
  325. .intvec INTVEC_ADDRESS : AT (INTVEC_IMAGE)
  326. {
  327. _fvector_start = .;
  328. KEEP(*(.intvec))
  329. . = ALIGN(0x80);
  330. KEEP(*(.intvec_0x080))
  331. . = ALIGN(0x80);
  332. KEEP(*(.intvec_0x100))
  333. . = ALIGN(0x80);
  334. KEEP(*(.intvec_0x180))
  335. . = ALIGN(0x80);
  336. KEEP(*(.intvec_0x200))
  337. . = ALIGN(0x80);
  338. KEEP(*(.intvec_0x280))
  339. . = ALIGN(0x80);
  340. KEEP(*(.intvec_0x300))
  341. . = ALIGN(0x80);
  342. KEEP(*(.intvec_0x380))
  343. . = ALIGN(0x80);
  344. KEEP(*(.intvec_0x400))
  345. . = ALIGN(0x80);
  346. KEEP(*(.intvec_0x480))
  347. . = ALIGN(0x80);
  348. KEEP(*(.intvec_0x500))
  349. . = ALIGN(0x80);
  350. KEEP(*(.intvec_0x580))
  351. . = ALIGN(0x80);
  352. KEEP(*(.intvec_0x600))
  353. . = ALIGN(0x80);
  354. KEEP(*(.intvec_0x680))
  355. . = ALIGN(0x80);
  356. KEEP(*(.intvec_0x700))
  357. . = ALIGN(0x80);
  358. KEEP(*(.intvec_0x780))
  359. _fvector_end = .;
  360. } > RAM_TEXT
  361. IMAGE_INFO_ADDRESS = RAM_START + IMAGE_INFO_OFFSET;
  362. .image_info IMAGE_INFO_ADDRESS : AT (IMAGE_INFO_ADDRESS)
  363. {
  364. _image_info_start = .;
  365. KEEP(*(.image_info))
  366. _image_info_end = .;
  367. } > RAM_DATA
  368. TEXT_IMAGE = (1 == _RZN_ORDINAL) ? _mtext : _text_start;
  369. .text TEXT_ADDRESS : AT (TEXT_IMAGE)
  370. {
  371. _text_start = .;
  372. __text_start = .;
  373. *(.text*)
  374. KEEP(*(.reset_handler))
  375. KEEP(*(.init))
  376. KEEP(*(.fini))
  377. /* .ctors */
  378. *crtbegin.o(.ctors)
  379. *crtbegin?.o(.ctors)
  380. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
  381. *(SORT(.ctors.*))
  382. *(.ctors)
  383. _ctor_end = .;
  384. /* .dtors */
  385. *crtbegin.o(.dtors)
  386. *crtbegin?.o(.dtors)
  387. *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
  388. *(SORT(.dtors.*))
  389. *(.dtors)
  390. _dtor_end = .;
  391. /* section information for utest */
  392. . = ALIGN(4);
  393. __rt_utest_tc_tab_start = .;
  394. KEEP(*(UtestTcTab))
  395. __rt_utest_tc_tab_end = .;
  396. /* section information for finsh shell */
  397. . = ALIGN(4);
  398. __fsymtab_start = .;
  399. KEEP(*(FSymTab))
  400. __fsymtab_end = .;
  401. . = ALIGN(4);
  402. __vsymtab_start = .;
  403. KEEP(*(VSymTab))
  404. __vsymtab_end = .;
  405. /* section information for initial. */
  406. . = ALIGN(4);
  407. __rt_init_start = .;
  408. KEEP(*(SORT(.rti_fn*)))
  409. __rt_init_end = .;
  410. /* new GCC version uses .init_array */
  411. PROVIDE(__ctors_start__ = .);
  412. KEEP (*(SORT(.init_array.*)))
  413. KEEP (*(.init_array))
  414. PROVIDE(__ctors_end__ = .);
  415. . = ALIGN(4);
  416. KEEP(*(FalPartTable))
  417. KEEP(*(.eh_frame*))
  418. __text_end = .;
  419. } > RAM_TEXT
  420. .rvectors :
  421. {
  422. _rvectors_start = .;
  423. KEEP(*(.rvectors))
  424. _rvectors_end = .;
  425. } > RAM_TEXT
  426. .ARM.extab :
  427. {
  428. __extab_start = .;
  429. *(.ARM.extab* .gnu.linkonce.armextab.*)
  430. __extab_end = .;
  431. } > RAM_TEXT
  432. .ARM.exidx :
  433. {
  434. __exidx_start = .;
  435. *(.ARM.exidx* .gnu.linkonce.armexidx.*)
  436. __exidx_end = .;
  437. _text_end = .;
  438. } > RAM_TEXT
  439. DATA_IMAGE = (1 == _RZN_ORDINAL) ? _mdata : _data_start;
  440. .data _text_end : AT (DATA_IMAGE)
  441. {
  442. _data_start = .;
  443. __data_start = .;
  444. *(vtable)
  445. *(.data.*)
  446. *(.data)
  447. *(.rodata*)
  448. _erodata = .;
  449. . = ALIGN(8);
  450. /* preinit data */
  451. PROVIDE_HIDDEN (__preinit_array_start = .);
  452. KEEP(*(.preinit_array))
  453. PROVIDE_HIDDEN (__preinit_array_end = .);
  454. . = ALIGN(8);
  455. /* init data */
  456. PROVIDE_HIDDEN (__init_array_start = .);
  457. KEEP(*(SORT(.init_array.*)))
  458. KEEP(*(.init_array))
  459. PROVIDE_HIDDEN (__init_array_end = .);
  460. . = ALIGN(8);
  461. /* finit data */
  462. PROVIDE_HIDDEN (__fini_array_start = .);
  463. KEEP(*(SORT(.fini_array.*)))
  464. KEEP(*(.fini_array))
  465. PROVIDE_HIDDEN (__fini_array_end = .);
  466. KEEP(*(.jcr*))
  467. . = ALIGN(8);
  468. __data_end = .;
  469. } > RAM_DATA
  470. .got :
  471. {
  472. __got_start = .;
  473. *(.got)
  474. *(.got.plt)
  475. __got_end = .;
  476. /* All data end */
  477. _data_end = .;
  478. } > RAM_DATA
  479. .bss :
  480. {
  481. . = ALIGN(8);
  482. __bss_start__ = .;
  483. _bss = .;
  484. *(.bss*)
  485. *(COMMON)
  486. . = ALIGN(8);
  487. __bss_end__ = .;
  488. _ebss = .;
  489. _end = .;
  490. } > RAM_DATA
  491. .heap (NOLOAD) :
  492. {
  493. . = ALIGN(8);
  494. __HeapBase = .;
  495. /* Place the STD heap here. */
  496. KEEP(*(.heap))
  497. __HeapLimit = .;
  498. } > RAM_DATA
  499. .aarch64_stack (NOLOAD) :
  500. {
  501. . = ALIGN(8);
  502. __AArch64StackBase = .;
  503. /* Place the Thread stacks here. */
  504. KEEP(*(.aarch64_stack*))
  505. __AArch64StackLimit = .;
  506. } > RAM_DATA
  507. .thread_stack (NOLOAD):
  508. {
  509. . = ALIGN(8);
  510. __ThreadStackBase = .;
  511. /* Place the Thread stacks here. */
  512. KEEP(*(.stack*))
  513. __ThreadStackLimit = .;
  514. } > RAM_DATA
  515. .sys_stack (NOLOAD) :
  516. {
  517. . = ALIGN(8);
  518. __SysStackBase = .;
  519. /* Place the sys_stack here. */
  520. KEEP(*(.sys_stack))
  521. __SysStackLimit = .;
  522. } > LOADER_DATA_STACK
  523. .svc_stack (NOLOAD) :
  524. {
  525. . = ALIGN(8);
  526. __SvcStackBase = .;
  527. /* Place the svc_stack here. */
  528. KEEP(*(.svc_stack))
  529. __SvcStackLimit = .;
  530. } > LOADER_DATA_STACK
  531. .irq_stack (NOLOAD) :
  532. {
  533. . = ALIGN(8);
  534. __IrqStackBase = .;
  535. /* Place the irq_stack here. */
  536. KEEP(*(.irq_stack))
  537. __IrqStackLimit = .;
  538. } > LOADER_DATA_STACK
  539. .fiq_stack (NOLOAD) :
  540. {
  541. . = ALIGN(8);
  542. __FiqStackBase = .;
  543. /* Place the fiq_stack here. */
  544. KEEP(*(.fiq_stack))
  545. __FiqStackLimit = .;
  546. } > LOADER_DATA_STACK
  547. .und_stack (NOLOAD) :
  548. {
  549. . = ALIGN(8);
  550. __UndStackBase = .;
  551. /* Place the und_stack here. */
  552. KEEP(*(.und_stack))
  553. __UndStackLimit = .;
  554. } > LOADER_DATA_STACK
  555. .abt_stack (NOLOAD) :
  556. {
  557. . = ALIGN(8);
  558. __AbtStackBase = .;
  559. /* Place the abt_stack here. */
  560. KEEP(*(.abt_stack))
  561. __AbtStackLimit = .;
  562. } > LOADER_DATA_STACK
  563. DATA_NONCACHE_INIT_START = (1 == _RZN_ORDINAL) ?
  564. _mdata_noncache :
  565. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  566. __ThreadStackLimit :
  567. _mdata_noncache;
  568. .data_noncache DATA_NONCACHE_START : AT (DATA_NONCACHE_INIT_START)
  569. {
  570. . = ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ? ALIGN(64) : ALIGN(8);
  571. _data_noncache_start = .;
  572. KEEP(*(.data_noncache*))
  573. _data_noncache_end = .;
  574. } > NONCACHE
  575. DMAC_LINK_MODE_INIT_START = (1 == _RZN_ORDINAL) ?
  576. _mdmac_link_mode :
  577. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  578. _data_noncache_end :
  579. _mdmac_link_mode;
  580. .dmac_link_mode DMAC_LINK_MODE_START : AT (DMAC_LINK_MODE_INIT_START)
  581. {
  582. . = ALIGN(8);
  583. _dmac_link_mode_start = .;
  584. KEEP(*(.dmac_link_mode*))
  585. _dmac_link_mode_end = .;
  586. } > NONCACHE
  587. SHARED_NONCACHE_BUFFER_INIT_START = (1 == _RZN_ORDINAL) ?
  588. _msncbuffer :
  589. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  590. _ncbuffer_end :
  591. _msncbuffer;
  592. .shared_noncache_buffer SHARED_NONCACHE_BUFFER_START : AT (SHARED_NONCACHE_BUFFER_INIT_START)
  593. {
  594. . = ALIGN(32);
  595. _sncbuffer_start = .;
  596. KEEP(*(.shared_noncache_buffer*))
  597. _sncbuffer_end = .;
  598. } > NONCACHE
  599. NONCACHE_BUFFER_INIT_START = (1 == _RZN_ORDINAL) ?
  600. _mncbuffer :
  601. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  602. _dmac_link_mode_end :
  603. _mncbuffer;
  604. .noncache_buffer NONCACHE_BUFFER_START : AT (NONCACHE_BUFFER_INIT_START)
  605. {
  606. . = ALIGN(32);
  607. _ncbuffer_start = .;
  608. KEEP(*(.noncache_buffer*))
  609. _ncbuffer_end = .;
  610. } > NONCACHE
  611. .lcdc_frame_buffer (NOLOAD) :
  612. {
  613. . = ALIGN(512);
  614. _lcdc_frame_buffer_start = .;
  615. KEEP(*(.lcdc_frame_buffer*))
  616. _lcdc_frame_buffer_end = .;
  617. } > LCDC_FRAME_BUFFER
  618. SECONDARY_START = ((1 == _RZN_ORDINAL) && DEFINED(CR52_0)) ? SYSTEM_RAM_ALIGN_START : ALIGN(__ThreadStackLimit, 0x00020000);
  619. SECONDARY_IMAGE = (1 == _RZN_ORDINAL) ? ALIGN(noncache_flash_contents_end, 0x00020000) : SECONDARY_START;
  620. .secondary SECONDARY_START : AT (SECONDARY_IMAGE)
  621. {
  622. . = ALIGN(0x20000);
  623. _secondary_start = .;
  624. KEEP(*(.secondary))
  625. _secondary_end = .;
  626. } > SYSTEM_RAM
  627. }
  628. __ddsc_xSPI0_CS0_SPACE_START = ORIGIN(xSPI0_CS0_SPACE);
  629. __ddsc_xSPI0_CS0_SPACE_END = (1 == _RZN_ORDINAL) ? noncache_flash_contents_end : __ddsc_xSPI0_CS0_SPACE_START;
  630. __ddsc_ATCM_START = ORIGIN(ATCM);
  631. __ddsc_ATCM_END = (1 == _RZN_ORDINAL) && DEFINED(CR52_0) ? __ThreadStackLimit : __ddsc_ATCM_START;
  632. __ddsc_BTCM_START = ORIGIN(BTCM);
  633. __ddsc_BTCM_END = (1 == _RZN_ORDINAL) && DEFINED(CR52_0) ? __AbtStackLimit : __ddsc_BTCM_START;
  634. __ddsc_SYSTEM_RAM_START = ORIGIN(SYSTEM_RAM);
  635. __ddsc_SYSTEM_RAM_END = (1 == _RZN_ORDINAL) ?
  636. DEFINED(CR52_0) ?
  637. __ddsc_SYSTEM_RAM_START :
  638. __ThreadStackLimit :
  639. ((0 == HAS_SYSTEM_RAM_MIRROR) && (DEFINED(CR52_0) || DEFINED(CR52_1))) ?
  640. _ncbuffer_end :
  641. __ThreadStackLimit;
  642. __ddsc_SECONDARY_START = (1 == _RZN_ORDINAL) ? 0 : 1;
  643. __ddsc_SECONDARY_END = 1;