elf32xtensa.xbn 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. /* This linker script generated from xt-genldscripts.tpp for LSP C:\usr\xtensa\XtDevTools\install\builds\RI-2020.4-win32\q7_check\xtensa-elf\lib\min-rt_0x20_stack_tcm1 */
  2. /* Linker Script for ld -N */
  3. MEMORY
  4. {
  5. sram0_seg : org = 0x20000000, len = 0x2000
  6. sram1_seg : org = 0x20002000, len = 0xFFE000
  7. dram0_0_seg : org = 0xE0180000, len = 0x20000
  8. dram1_0_seg : org = 0xE01A0000, len = 0x20000
  9. local_sram_0_seg : org = 0xFFA00000, len = 0x180000
  10. }
  11. PHDRS
  12. {
  13. sram0_phdr PT_LOAD;
  14. sram1_phdr PT_LOAD;
  15. sram1_bss_phdr PT_LOAD;
  16. dram0_0_phdr PT_LOAD;
  17. dram0_0_bss_phdr PT_LOAD;
  18. dram1_0_phdr PT_LOAD;
  19. dram1_0_bss_phdr PT_LOAD;
  20. local_sram_0_phdr PT_LOAD;
  21. local_sram_0_bss_phdr PT_LOAD;
  22. }
  23. /* Default entry point: */
  24. ENTRY(_ResetVector)
  25. /* Memory boundary addresses: */
  26. _memmap_mem_sram_start = 0x20000000;
  27. _memmap_mem_sram_end = 0x21000000;
  28. _memmap_mem_dram0_start = 0xe0180000;
  29. _memmap_mem_dram0_end = 0xe01a0000;
  30. _memmap_mem_dram1_start = 0xe01a0000;
  31. _memmap_mem_dram1_end = 0xe01c0000;
  32. _memmap_mem_local_sram_start = 0xffa00000;
  33. _memmap_mem_local_sram_end = 0xffb80000;
  34. /* Memory segment boundary addresses: */
  35. _memmap_seg_sram0_start = 0x20000000;
  36. _memmap_seg_sram0_max = 0x20002000;
  37. _memmap_seg_sram1_start = 0x20002000;
  38. _memmap_seg_sram1_max = 0x21000000;
  39. _memmap_seg_dram0_0_start = 0xe0180000;
  40. _memmap_seg_dram0_0_max = 0xe01a0000;
  41. _memmap_seg_dram1_0_start = 0xe01a0000;
  42. _memmap_seg_dram1_0_max = 0xe01c0000;
  43. _memmap_seg_local_sram_0_start = 0xffa00000;
  44. _memmap_seg_local_sram_0_max = 0xffb80000;
  45. _rom_store_table = 0;
  46. PROVIDE(_memmap_reset_vector = 0x20000000);
  47. PROVIDE(_memmap_vecbase_reset = 0x20000000);
  48. /* Various memory-map dependent cache attribute settings: */
  49. _memmap_cacheattr_wb_base = 0x10000010;
  50. _memmap_cacheattr_wt_base = 0x30000030;
  51. _memmap_cacheattr_bp_base = 0x40000040;
  52. _memmap_cacheattr_unused_mask = 0x0FFFFF0F;
  53. _memmap_cacheattr_wb_trapnull = 0x14444410;
  54. _memmap_cacheattr_wba_trapnull = 0x14444410;
  55. _memmap_cacheattr_wbna_trapnull = 0x24444420;
  56. _memmap_cacheattr_wt_trapnull = 0x34444430;
  57. _memmap_cacheattr_bp_trapnull = 0x44444440;
  58. _memmap_cacheattr_wb_strict = 0x10000010;
  59. _memmap_cacheattr_wt_strict = 0x30000030;
  60. _memmap_cacheattr_bp_strict = 0x40000040;
  61. _memmap_cacheattr_wb_allvalid = 0x14444414;
  62. _memmap_cacheattr_wt_allvalid = 0x34444434;
  63. _memmap_cacheattr_bp_allvalid = 0x44444444;
  64. _memmap_region_map = 0x00000082;
  65. PROVIDE(_memmap_cacheattr_reset = _memmap_cacheattr_wb_trapnull);
  66. SECTIONS
  67. {
  68. .DispatchVector.text : ALIGN(4)
  69. {
  70. _DispatchVector_text_start = ABSOLUTE(.);
  71. KEEP (*(.DispatchVector.text))
  72. . = ALIGN (4);
  73. _DispatchVector_text_end = ABSOLUTE(.);
  74. } >sram0_seg :sram0_phdr
  75. .ResetVector.text : ALIGN(4)
  76. {
  77. _ResetVector_text_start = ABSOLUTE(.);
  78. *(.ResetVector.text)
  79. . = ALIGN (4);
  80. _ResetVector_text_end = ABSOLUTE(.);
  81. } >sram0_seg :sram0_phdr
  82. .ResetHandler.text : ALIGN(4)
  83. {
  84. _ResetHandler_text_start = ABSOLUTE(.);
  85. *(.ResetHandler.literal .ResetHandler.text)
  86. . = ALIGN (4);
  87. _ResetHandler_text_end = ABSOLUTE(.);
  88. } >sram0_seg :sram0_phdr
  89. .DispatchHandler.text : ALIGN(4)
  90. {
  91. _DispatchHandler_text_start = ABSOLUTE(.);
  92. *(.DispatchHandler.literal .DispatchHandler.text)
  93. . = ALIGN (4);
  94. _DispatchHandler_text_end = ABSOLUTE(.);
  95. _memmap_seg_sram0_end = ALIGN(0x8);
  96. } >sram0_seg :sram0_phdr
  97. .sram.rodata : ALIGN(4)
  98. {
  99. _sram_rodata_start = ABSOLUTE(.);
  100. *(.sram.rodata)
  101. . = ALIGN (4);
  102. _sram_rodata_end = ABSOLUTE(.);
  103. } >sram1_seg :sram1_phdr
  104. .clib.rodata : ALIGN(4)
  105. {
  106. _clib_rodata_start = ABSOLUTE(.);
  107. *(.clib.rodata)
  108. . = ALIGN (4);
  109. _clib_rodata_end = ABSOLUTE(.);
  110. } >sram1_seg :sram1_phdr
  111. .rtos.rodata : ALIGN(4)
  112. {
  113. _rtos_rodata_start = ABSOLUTE(.);
  114. *(.rtos.rodata)
  115. . = ALIGN (4);
  116. _rtos_rodata_end = ABSOLUTE(.);
  117. } >sram1_seg :sram1_phdr
  118. .rodata : ALIGN(4)
  119. {
  120. _rodata_start = ABSOLUTE(.);
  121. *(.rodata)
  122. *(SORT(.rodata.sort.*))
  123. KEEP (*(SORT(.rodata.keepsort.*) .rodata.keep.*))
  124. *(.rodata.*)
  125. *(.gnu.linkonce.r.*)
  126. *(.rodata1)
  127. __XT_EXCEPTION_TABLE__ = ABSOLUTE(.);
  128. KEEP (*(.xt_except_table))
  129. KEEP (*(.gcc_except_table))
  130. *(.gnu.linkonce.e.*)
  131. *(.gnu.version_r)
  132. KEEP (*(.eh_frame))
  133. /* C++ constructor and destructor tables, properly ordered: */
  134. KEEP (*crtbegin.o(.ctors))
  135. KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))
  136. KEEP (*(SORT(.ctors.*)))
  137. KEEP (*(.ctors))
  138. KEEP (*crtbegin.o(.dtors))
  139. KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))
  140. KEEP (*(SORT(.dtors.*)))
  141. KEEP (*(.dtors))
  142. /* C++ exception handlers table: */
  143. __XT_EXCEPTION_DESCS__ = ABSOLUTE(.);
  144. *(.xt_except_desc)
  145. *(.gnu.linkonce.h.*)
  146. __XT_EXCEPTION_DESCS_END__ = ABSOLUTE(.);
  147. *(.xt_except_desc_end)
  148. *(.dynamic)
  149. *(.gnu.version_d)
  150. . = ALIGN(4); /* this table MUST be 4-byte aligned */
  151. _bss_table_start = ABSOLUTE(.);
  152. LONG(_bss_start)
  153. LONG(_bss_end)
  154. LONG(_dram0_bss_start)
  155. LONG(_dram0_bss_end)
  156. LONG(_dram1_bss_start)
  157. LONG(_dram1_bss_end)
  158. LONG(_local_sram_bss_start)
  159. LONG(_local_sram_bss_end)
  160. _bss_table_end = ABSOLUTE(.);
  161. . = ALIGN (4);
  162. _rodata_end = ABSOLUTE(.);
  163. } >sram1_seg :sram1_phdr
  164. .sram.text : ALIGN(4)
  165. {
  166. _sram_text_start = ABSOLUTE(.);
  167. *(.sram.literal .sram.text)
  168. . = ALIGN (4);
  169. _sram_text_end = ABSOLUTE(.);
  170. } >sram1_seg :sram1_phdr
  171. .text : ALIGN(4)
  172. {
  173. _stext = .;
  174. _text_start = ABSOLUTE(.);
  175. *(.entry.text)
  176. *(.init.literal)
  177. KEEP(*(.init))
  178. *(.literal.sort.* SORT(.text.sort.*))
  179. KEEP (*(.literal.keepsort.* SORT(.text.keepsort.*) .literal.keep.* .text.keep.* .literal.*personality* .text.*personality*))
  180. *(.literal .text .literal.* .text.* .stub .gnu.warning .gnu.linkonce.literal.* .gnu.linkonce.t.*.literal .gnu.linkonce.t.*)
  181. *(.fini.literal)
  182. KEEP(*(.fini))
  183. *(.gnu.version)
  184. . = ALIGN (4);
  185. _text_end = ABSOLUTE(.);
  186. _etext = .;
  187. } >sram1_seg :sram1_phdr
  188. .clib.text : ALIGN(4)
  189. {
  190. _clib_text_start = ABSOLUTE(.);
  191. *(.clib.literal .clib.text)
  192. . = ALIGN (4);
  193. _clib_text_end = ABSOLUTE(.);
  194. } >sram1_seg :sram1_phdr
  195. .rtos.text : ALIGN(4)
  196. {
  197. _rtos_text_start = ABSOLUTE(.);
  198. *(.rtos.literal .rtos.text)
  199. . = ALIGN (4);
  200. _rtos_text_end = ABSOLUTE(.);
  201. } >sram1_seg :sram1_phdr
  202. .clib.data : ALIGN(4)
  203. {
  204. _clib_data_start = ABSOLUTE(.);
  205. *(.clib.data)
  206. . = ALIGN (4);
  207. _clib_data_end = ABSOLUTE(.);
  208. } >sram1_seg :sram1_phdr
  209. .clib.percpu.data : ALIGN(4)
  210. {
  211. _clib_percpu_data_start = ABSOLUTE(.);
  212. *(.clib.percpu.data)
  213. . = ALIGN (4);
  214. _clib_percpu_data_end = ABSOLUTE(.);
  215. } >sram1_seg :sram1_phdr
  216. .rtos.percpu.data : ALIGN(4)
  217. {
  218. _rtos_percpu_data_start = ABSOLUTE(.);
  219. *(.rtos.percpu.data)
  220. . = ALIGN (4);
  221. _rtos_percpu_data_end = ABSOLUTE(.);
  222. } >sram1_seg :sram1_phdr
  223. .rtos.data : ALIGN(4)
  224. {
  225. _rtos_data_start = ABSOLUTE(.);
  226. *(.rtos.data)
  227. . = ALIGN (4);
  228. _rtos_data_end = ABSOLUTE(.);
  229. } >sram1_seg :sram1_phdr
  230. .sram.data : ALIGN(4)
  231. {
  232. _sram_data_start = ABSOLUTE(.);
  233. *(.sram.data)
  234. . = ALIGN (4);
  235. _sram_data_end = ABSOLUTE(.);
  236. } >sram1_seg :sram1_phdr
  237. .data : ALIGN(4)
  238. {
  239. _data_start = ABSOLUTE(.);
  240. *(.data)
  241. *(SORT(.data.sort.*))
  242. KEEP (*(SORT(.data.keepsort.*) .data.keep.*))
  243. *(.data.*)
  244. *(.gnu.linkonce.d.*)
  245. KEEP(*(.gnu.linkonce.d.*personality*))
  246. *(.data1)
  247. *(.sdata)
  248. *(.sdata.*)
  249. *(.gnu.linkonce.s.*)
  250. *(.sdata2)
  251. *(.sdata2.*)
  252. *(.gnu.linkonce.s2.*)
  253. KEEP(*(.jcr))
  254. *(__llvm_prf_cnts)
  255. *(__llvm_prf_data)
  256. *(__llvm_prf_vnds)
  257. . = ALIGN (4);
  258. _data_end = ABSOLUTE(.);
  259. } >sram1_seg :sram1_phdr
  260. __llvm_prf_names : ALIGN(4)
  261. {
  262. __llvm_prf_names_start = ABSOLUTE(.);
  263. *(__llvm_prf_names)
  264. . = ALIGN (4);
  265. __llvm_prf_names_end = ABSOLUTE(.);
  266. } >sram1_seg :sram1_phdr
  267. .bss (NOLOAD) : ALIGN(8)
  268. {
  269. . = ALIGN (8);
  270. _bss_start = ABSOLUTE(.);
  271. *(.dynsbss)
  272. *(.sbss)
  273. *(.sbss.*)
  274. *(.gnu.linkonce.sb.*)
  275. *(.scommon)
  276. *(.sbss2)
  277. *(.sbss2.*)
  278. *(.gnu.linkonce.sb2.*)
  279. *(.dynbss)
  280. *(.bss)
  281. *(SORT(.bss.sort.*))
  282. KEEP (*(SORT(.bss.keepsort.*) .bss.keep.*))
  283. *(.bss.*)
  284. *(.gnu.linkonce.b.*)
  285. *(COMMON)
  286. *(.clib.bss)
  287. *(.clib.percpu.bss)
  288. *(.rtos.percpu.bss)
  289. *(.rtos.bss)
  290. *(.sram.bss)
  291. *(.debug.bss)
  292. . = ALIGN (8);
  293. _bss_end = ABSOLUTE(.);
  294. _end = ALIGN(0x8);
  295. PROVIDE(end = ALIGN(0x8));
  296. _memmap_seg_sram1_end = ALIGN(0x8);
  297. } >sram1_seg :sram1_bss_phdr
  298. _heap_sentry = 0x21000000;
  299. _memmap_mem_sram_max = ABSOLUTE(.);
  300. .dram0.rodata : ALIGN(4)
  301. {
  302. _dram0_rodata_start = ABSOLUTE(.);
  303. *(.dram0.rodata)
  304. . = ALIGN (4);
  305. _dram0_rodata_end = ABSOLUTE(.);
  306. } >dram0_0_seg :dram0_0_phdr
  307. .dram0.data : ALIGN(4)
  308. {
  309. _dram0_data_start = ABSOLUTE(.);
  310. *(.dram0.data)
  311. . = ALIGN (4);
  312. _dram0_data_end = ABSOLUTE(.);
  313. } >dram0_0_seg :dram0_0_phdr
  314. .dram0.bss (NOLOAD) : ALIGN(8)
  315. {
  316. . = ALIGN (8);
  317. _dram0_bss_start = ABSOLUTE(.);
  318. *(.dram0.bss)
  319. *(.dram0_user.bss)
  320. . = ALIGN (8);
  321. _dram0_bss_end = ABSOLUTE(.);
  322. _memmap_seg_dram0_0_end = ALIGN(0x8);
  323. } >dram0_0_seg :dram0_0_bss_phdr
  324. _memmap_mem_dram0_max = ABSOLUTE(.);
  325. .dram1.rodata : ALIGN(4)
  326. {
  327. _dram1_rodata_start = ABSOLUTE(.);
  328. *(.dram1.rodata)
  329. . = ALIGN (4);
  330. _dram1_rodata_end = ABSOLUTE(.);
  331. } >dram1_0_seg :dram1_0_phdr
  332. .dram1.data : ALIGN(4)
  333. {
  334. _dram1_data_start = ABSOLUTE(.);
  335. *(.dram1.data)
  336. . = ALIGN (4);
  337. _dram1_data_end = ABSOLUTE(.);
  338. } >dram1_0_seg :dram1_0_phdr
  339. .dram1.bss (NOLOAD) : ALIGN(8)
  340. {
  341. . = ALIGN (8);
  342. _dram1_bss_start = ABSOLUTE(.);
  343. *(.dram1.bss)
  344. *(.dram1_user.bss)
  345. . = ALIGN (8);
  346. _dram1_bss_end = ABSOLUTE(.);
  347. _stack_sentry = ALIGN(0x8);
  348. _memmap_seg_dram1_0_end = ALIGN(0x8);
  349. } >dram1_0_seg :dram1_0_bss_phdr
  350. PROVIDE(__stack = 0xe01c0000);
  351. _isb_default = 0xe01bfe10;
  352. _memmap_mem_dram1_max = ABSOLUTE(.);
  353. .local_sram.bss (NOLOAD) : ALIGN(8)
  354. {
  355. . = ALIGN (8);
  356. _local_sram_bss_start = ABSOLUTE(.);
  357. *(.local_sram.bss)
  358. . = ALIGN (8);
  359. _local_sram_bss_end = ABSOLUTE(.);
  360. _memmap_seg_local_sram_0_end = ALIGN(0x8);
  361. } >local_sram_0_seg :local_sram_0_bss_phdr
  362. _memmap_mem_local_sram_max = ABSOLUTE(.);
  363. .debug 0 : { *(.debug) }
  364. .line 0 : { *(.line) }
  365. .debug_srcinfo 0 : { *(.debug_srcinfo) }
  366. .debug_sfnames 0 : { *(.debug_sfnames) }
  367. .debug_aranges 0 : { *(.debug_aranges) }
  368. .debug_pubnames 0 : { *(.debug_pubnames) }
  369. .debug_info 0 : { *(.debug_info) }
  370. .debug_abbrev 0 : { *(.debug_abbrev) }
  371. .debug_line 0 : { *(.debug_line) }
  372. .debug_frame 0 : { *(.debug_frame) }
  373. .debug_str 0 : { *(.debug_str) }
  374. .debug_loc 0 : { *(.debug_loc) }
  375. .debug_macinfo 0 : { *(.debug_macinfo) }
  376. .debug_weaknames 0 : { *(.debug_weaknames) }
  377. .debug_funcnames 0 : { *(.debug_funcnames) }
  378. .debug_typenames 0 : { *(.debug_typenames) }
  379. .debug_varnames 0 : { *(.debug_varnames) }
  380. .xt.insn 0 :
  381. {
  382. KEEP (*(.xt.insn))
  383. KEEP (*(.gnu.linkonce.x.*))
  384. }
  385. .xt.prop 0 :
  386. {
  387. KEEP (*(.xt.prop))
  388. KEEP (*(.xt.prop.*))
  389. KEEP (*(.gnu.linkonce.prop.*))
  390. }
  391. .xt.lit 0 :
  392. {
  393. KEEP (*(.xt.lit))
  394. KEEP (*(.xt.lit.*))
  395. KEEP (*(.gnu.linkonce.p.*))
  396. }
  397. .debug.xt.callgraph 0 :
  398. {
  399. KEEP (*(.debug.xt.callgraph .debug.xt.callgraph.* .gnu.linkonce.xt.callgraph.*))
  400. }
  401. }