elf32xtensa.xbn 13 KB

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