Advertisement
Guest User

Untitled

a guest
Nov 13th, 2017
455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 69.55 KB | None | 0 0
  1. /*--------------------------------------------------------------------------
  2. * MPLAB XC Compiler - PIC32MZ BootLoader linker script
  3. *
  4. * This software is developed by Microchip Technology Inc. and its
  5. * subsidiaries ("Microchip").
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions are
  9. * met:
  10. *
  11. * 1. Redistributions of source code must retain the above copyright
  12. * notice, this list of conditions and the following disclaimer.
  13. * 2. Redistributions in binary form must reproduce the above
  14. * copyright notice, this list of conditions and the following
  15. * disclaimer in the documentation and/or other materials provided
  16. * with the distribution.
  17. * 3. Microchip's name may not be used to endorse or promote products
  18. * derived from this software without specific prior written
  19. * permission.
  20. *
  21. * THIS SOFTWARE IS PROVIDED BY MICROCHIP "AS IS" AND ANY EXPRESS OR IMPLIED
  22. * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  23. * MERCHANTABILITY AND FITNESS FOR PURPOSE ARE DISCLAIMED. IN NO EVENT
  24. * SHALL MICROCHIP BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  25. * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING BUT NOT LIMITED TO
  26. * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA OR PROFITS;
  27. * OR BUSINESS INTERRUPTION) HOWSOEVER CAUSED AND ON ANY THEORY OF LIABILITY,
  28. * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
  29. * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  30. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31. *
  32. *-------------------------------------------------------------------------*/
  33.  
  34.  
  35. /* Custom linker script, for bootloaders residing completely in boot flash */
  36.  
  37. /* NOTE: This single-file linker script replaces the two-file system used
  38. * for older PIC32 devices.
  39. */
  40.  
  41. OUTPUT_FORMAT("elf32-tradlittlemips")
  42. OUTPUT_ARCH(pic32mx)
  43. ENTRY(_reset)
  44. /*
  45. * Provide for a minimum stack and heap size
  46. * - _min_stack_size - represents the minimum space that must be made
  47. * available for the stack. Can be overridden from
  48. * the command line using the linker's --defsym option.
  49. * - _min_heap_size - represents the minimum space that must be made
  50. * available for the heap. Must be specified on
  51. * the command line using the linker's --defsym option.
  52. */
  53. EXTERN (_min_stack_size _min_heap_size)
  54.  
  55. /*************************************************************************
  56. * Processor-specific object file. Contains SFR definitions.
  57. *************************************************************************/
  58. INPUT("processor.o")
  59.  
  60. /*************************************************************************
  61. * Processor-specific peripheral libraries are optional
  62. *************************************************************************/
  63. OPTIONAL("libmchp_peripheral.a")
  64.  
  65.  
  66. /*************************************************************************
  67. * Vector-offset initialization
  68. *************************************************************************/
  69. OPTIONAL("vector_offset_init.o")
  70.  
  71. /*************************************************************************
  72. * For interrupt vector handling
  73. *************************************************************************/
  74. PROVIDE(_vector_spacing = 0x00000001);
  75. PROVIDE(_ebase_address = 0x9FC01000);
  76.  
  77. /*************************************************************************
  78. * Memory Address Equates
  79. * _RESET_ADDR -- Reset Vector
  80. * _BEV_EXCPT_ADDR -- Boot exception Vector
  81. * _DBG_EXCPT_ADDR -- In-circuit Debugging Exception Vector
  82. * _SIMPLE_TLB_REFILL_EXCPT_ADDR -- Simple TLB-Refill Exception Vector
  83. * _CACHE_ERR_EXCPT_ADDR -- Cache-error Exception Vector
  84. * _GEN_EXCPT_ADDR -- General Exception Vector
  85. *************************************************************************/
  86.  
  87. _BEV_EXCPT_ADDR = 0xBFC00380;
  88. _DBG_EXCPT_ADDR = 0xBFC00480;
  89. _RESET_ADDR = 0xBFC00000;
  90. _SIMPLE_TLB_REFILL_EXCPT_ADDR = _ebase_address + 0;
  91. _CACHE_ERR_EXCPT_ADDR = _ebase_address + 0x100;
  92. _GEN_EXCPT_ADDR = _ebase_address + 0x180;
  93.  
  94. /*************************************************************************
  95. * Memory Regions
  96. *
  97. * Memory regions without attributes cannot be used for orphaned sections.
  98. * Only sections specifically assigned to these regions can be allocated
  99. * into these regions.
  100. *
  101. * The Debug exception vector is located at 0x9FC00480.
  102. * The config_<address> sections are used to locate the config words at
  103. * their absolute addresses.
  104. *************************************************************************/
  105. MEMORY
  106. {
  107. kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x480
  108. kseg0_program_mem (rx) : ORIGIN = 0x9fc01000, LENGTH = 0x2FF00 - 0x1000
  109. protected_reg3 : ORIGIN = 0x9FC14000, LENGTH = 0x20000-0x14000
  110. kseg0_boot_mem : ORIGIN = 0x9fc004b0, LENGTH = 0x00000000
  111. kseg1_boot_mem_4B0 : ORIGIN = 0xBFC004B0, LENGTH = 0x1000 - 0x4B0
  112. config_BFC0FF40 : ORIGIN = 0xBFC0FF40, LENGTH = 0x4
  113. config_BFC0FF44 : ORIGIN = 0xBFC0FF44, LENGTH = 0x4
  114. config_BFC0FF48 : ORIGIN = 0xBFC0FF48, LENGTH = 0x4
  115. config_BFC0FF4C : ORIGIN = 0xBFC0FF4C, LENGTH = 0x4
  116. config_BFC0FF50 : ORIGIN = 0xBFC0FF50, LENGTH = 0x4
  117. config_BFC0FF54 : ORIGIN = 0xBFC0FF54, LENGTH = 0x4
  118. config_BFC0FF58 : ORIGIN = 0xBFC0FF58, LENGTH = 0x4
  119. config_BFC0FF5C : ORIGIN = 0xBFC0FF5C, LENGTH = 0x4
  120. config_BFC0FF60 : ORIGIN = 0xBFC0FF60, LENGTH = 0x4
  121. config_BFC0FF64 : ORIGIN = 0xBFC0FF64, LENGTH = 0x4
  122. config_BFC0FF68 : ORIGIN = 0xBFC0FF68, LENGTH = 0x4
  123. config_BFC0FF6C : ORIGIN = 0xBFC0FF6C, LENGTH = 0x4
  124. config_BFC0FF70 : ORIGIN = 0xBFC0FF70, LENGTH = 0x4
  125. config_BFC0FF74 : ORIGIN = 0xBFC0FF74, LENGTH = 0x4
  126. config_BFC0FF78 : ORIGIN = 0xBFC0FF78, LENGTH = 0x4
  127. config_BFC0FF7C : ORIGIN = 0xBFC0FF7C, LENGTH = 0x4
  128. config_BFC0FFC0 : ORIGIN = 0xBFC0FFC0, LENGTH = 0x4
  129. config_BFC0FFC4 : ORIGIN = 0xBFC0FFC4, LENGTH = 0x4
  130. config_BFC0FFC8 : ORIGIN = 0xBFC0FFC8, LENGTH = 0x4
  131. config_BFC0FFCC : ORIGIN = 0xBFC0FFCC, LENGTH = 0x4
  132. config_BFC0FFD0 : ORIGIN = 0xBFC0FFD0, LENGTH = 0x4
  133. config_BFC0FFD4 : ORIGIN = 0xBFC0FFD4, LENGTH = 0x4
  134. config_BFC0FFD8 : ORIGIN = 0xBFC0FFD8, LENGTH = 0x4
  135. config_BFC0FFDC : ORIGIN = 0xBFC0FFDC, LENGTH = 0x4
  136. config_BFC0FFE0 : ORIGIN = 0xBFC0FFE0, LENGTH = 0x4
  137. config_BFC0FFE4 : ORIGIN = 0xBFC0FFE4, LENGTH = 0x4
  138. config_BFC0FFE8 : ORIGIN = 0xBFC0FFE8, LENGTH = 0x4
  139. config_BFC0FFEC : ORIGIN = 0xBFC0FFEC, LENGTH = 0x4
  140. config_BFC0FFF0 : ORIGIN = 0xBFC0FFF0, LENGTH = 0x4
  141. config_BFC0FFF4 : ORIGIN = 0xBFC0FFF4, LENGTH = 0x4
  142. config_BFC0FFF8 : ORIGIN = 0xBFC0FFF8, LENGTH = 0x4
  143. config_BFC0FFFC : ORIGIN = 0xBFC0FFFC, LENGTH = 0x4
  144. lowerbootaliaslastpage : ORIGIN = 0xBFC10000, LENGTH = 0x4000
  145. upperbootalias : ORIGIN = 0xBFC20000, LENGTH = 0x14000
  146. boot1 : ORIGIN = 0xBFC40000, LENGTH = 0xFF00
  147. config_BFC4FF40 : ORIGIN = 0xBFC4FF40, LENGTH = 0x4
  148. config_BFC4FF44 : ORIGIN = 0xBFC4FF44, LENGTH = 0x4
  149. config_BFC4FF48 : ORIGIN = 0xBFC4FF48, LENGTH = 0x4
  150. config_BFC4FF4C : ORIGIN = 0xBFC4FF4C, LENGTH = 0x4
  151. config_BFC4FF50 : ORIGIN = 0xBFC4FF50, LENGTH = 0x4
  152. config_BFC4FF54 : ORIGIN = 0xBFC4FF54, LENGTH = 0x4
  153. config_BFC4FF58 : ORIGIN = 0xBFC4FF58, LENGTH = 0x4
  154. config_BFC4FF5C : ORIGIN = 0xBFC4FF5C, LENGTH = 0x4
  155. config_BFC4FF60 : ORIGIN = 0xBFC4FF60, LENGTH = 0x4
  156. config_BFC4FF64 : ORIGIN = 0xBFC4FF64, LENGTH = 0x4
  157. config_BFC4FF68 : ORIGIN = 0xBFC4FF68, LENGTH = 0x4
  158. config_BFC4FF6C : ORIGIN = 0xBFC4FF6C, LENGTH = 0x4
  159. config_BFC4FF70 : ORIGIN = 0xBFC4FF70, LENGTH = 0x4
  160. config_BFC4FF74 : ORIGIN = 0xBFC4FF74, LENGTH = 0x4
  161. config_BFC4FF78 : ORIGIN = 0xBFC4FF78, LENGTH = 0x4
  162. config_BFC4FF7C : ORIGIN = 0xBFC4FF7C, LENGTH = 0x4
  163. config_BFC4FFC0 : ORIGIN = 0xBFC4FFC0, LENGTH = 0x4
  164. config_BFC4FFC4 : ORIGIN = 0xBFC4FFC4, LENGTH = 0x4
  165. config_BFC4FFC8 : ORIGIN = 0xBFC4FFC8, LENGTH = 0x4
  166. config_BFC4FFCC : ORIGIN = 0xBFC4FFCC, LENGTH = 0x4
  167. config_BFC4FFD0 : ORIGIN = 0xBFC4FFD0, LENGTH = 0x4
  168. config_BFC4FFD4 : ORIGIN = 0xBFC4FFD4, LENGTH = 0x4
  169. config_BFC4FFD8 : ORIGIN = 0xBFC4FFD8, LENGTH = 0x4
  170. config_BFC4FFDC : ORIGIN = 0xBFC4FFDC, LENGTH = 0x4
  171. config_BFC4FFE0 : ORIGIN = 0xBFC4FFE0, LENGTH = 0x4
  172. config_BFC4FFE4 : ORIGIN = 0xBFC4FFE4, LENGTH = 0x4
  173. config_BFC4FFE8 : ORIGIN = 0xBFC4FFE8, LENGTH = 0x4
  174. config_BFC4FFEC : ORIGIN = 0xBFC4FFEC, LENGTH = 0x4
  175. config_BFC4FFF0 : ORIGIN = 0xBFC4FFF0, LENGTH = 0x4
  176. config_BFC4FFF4 : ORIGIN = 0xBFC4FFF4, LENGTH = 0x4
  177. config_BFC4FFF8 : ORIGIN = 0xBFC4FFF8, LENGTH = 0x4
  178. config_BFC4FFFC : ORIGIN = 0xBFC4FFFC, LENGTH = 0x4
  179. boot1lastpage : ORIGIN = 0xBFC50000, LENGTH = 0x4000
  180. config_BFC54000 : ORIGIN = 0xBFC54000, LENGTH = 0x4
  181. config_BFC54004 : ORIGIN = 0xBFC54004, LENGTH = 0x4
  182. config_BFC54008 : ORIGIN = 0xBFC54008, LENGTH = 0x4
  183. config_BFC5400C : ORIGIN = 0xBFC5400C, LENGTH = 0x4
  184. config_BFC54010 : ORIGIN = 0xBFC54010, LENGTH = 0x4
  185. config_BFC54020 : ORIGIN = 0xBFC54020, LENGTH = 0x4
  186. config_BFC54024 : ORIGIN = 0xBFC54024, LENGTH = 0x4
  187. boot2 : ORIGIN = 0xBFC60000, LENGTH = 0xFF00
  188. config_BFC6FF40 : ORIGIN = 0xBFC6FF40, LENGTH = 0x4
  189. config_BFC6FF44 : ORIGIN = 0xBFC6FF44, LENGTH = 0x4
  190. config_BFC6FF48 : ORIGIN = 0xBFC6FF48, LENGTH = 0x4
  191. config_BFC6FF4C : ORIGIN = 0xBFC6FF4C, LENGTH = 0x4
  192. config_BFC6FF50 : ORIGIN = 0xBFC6FF50, LENGTH = 0x4
  193. config_BFC6FF54 : ORIGIN = 0xBFC6FF54, LENGTH = 0x4
  194. config_BFC6FF58 : ORIGIN = 0xBFC6FF58, LENGTH = 0x4
  195. config_BFC6FF5C : ORIGIN = 0xBFC6FF5C, LENGTH = 0x4
  196. config_BFC6FF60 : ORIGIN = 0xBFC6FF60, LENGTH = 0x4
  197. config_BFC6FF64 : ORIGIN = 0xBFC6FF64, LENGTH = 0x4
  198. config_BFC6FF68 : ORIGIN = 0xBFC6FF68, LENGTH = 0x4
  199. config_BFC6FF6C : ORIGIN = 0xBFC6FF6C, LENGTH = 0x4
  200. config_BFC6FF70 : ORIGIN = 0xBFC6FF70, LENGTH = 0x4
  201. config_BFC6FF74 : ORIGIN = 0xBFC6FF74, LENGTH = 0x4
  202. config_BFC6FF78 : ORIGIN = 0xBFC6FF78, LENGTH = 0x4
  203. config_BFC6FF7C : ORIGIN = 0xBFC6FF7C, LENGTH = 0x4
  204. config_BFC6FFC0 : ORIGIN = 0xBFC6FFC0, LENGTH = 0x4
  205. config_BFC6FFC4 : ORIGIN = 0xBFC6FFC4, LENGTH = 0x4
  206. config_BFC6FFC8 : ORIGIN = 0xBFC6FFC8, LENGTH = 0x4
  207. config_BFC6FFCC : ORIGIN = 0xBFC6FFCC, LENGTH = 0x4
  208. config_BFC6FFD0 : ORIGIN = 0xBFC6FFD0, LENGTH = 0x4
  209. config_BFC6FFD4 : ORIGIN = 0xBFC6FFD4, LENGTH = 0x4
  210. config_BFC6FFD8 : ORIGIN = 0xBFC6FFD8, LENGTH = 0x4
  211. config_BFC6FFDC : ORIGIN = 0xBFC6FFDC, LENGTH = 0x4
  212. config_BFC6FFE0 : ORIGIN = 0xBFC6FFE0, LENGTH = 0x4
  213. config_BFC6FFE4 : ORIGIN = 0xBFC6FFE4, LENGTH = 0x4
  214. config_BFC6FFE8 : ORIGIN = 0xBFC6FFE8, LENGTH = 0x4
  215. config_BFC6FFEC : ORIGIN = 0xBFC6FFEC, LENGTH = 0x4
  216. config_BFC6FFF0 : ORIGIN = 0xBFC6FFF0, LENGTH = 0x4
  217. config_BFC6FFF4 : ORIGIN = 0xBFC6FFF4, LENGTH = 0x4
  218. config_BFC6FFF8 : ORIGIN = 0xBFC6FFF8, LENGTH = 0x4
  219. config_BFC6FFFC : ORIGIN = 0xBFC6FFFC, LENGTH = 0x4
  220. boot2lastpage : ORIGIN = 0xBFC70000, LENGTH = 0x4000
  221. configsfrs_BFC0FF40 : ORIGIN = 0xBFC0FF40, LENGTH = 0x40
  222. configsfrs_BFC0FFC0 : ORIGIN = 0xBFC0FFC0, LENGTH = 0x40
  223. configsfrs_BFC4FF40 : ORIGIN = 0xBFC4FF40, LENGTH = 0x40
  224. configsfrs_BFC4FFC0 : ORIGIN = 0xBFC4FFC0, LENGTH = 0x40
  225. configsfrs_BFC54000 : ORIGIN = 0xBFC54000, LENGTH = 0x14
  226. configsfrs_BFC54020 : ORIGIN = 0xBFC54020, LENGTH = 0x8
  227. configsfrs_BFC6FF40 : ORIGIN = 0xBFC6FF40, LENGTH = 0x40
  228. configsfrs_BFC6FFC0 : ORIGIN = 0xBFC6FFC0, LENGTH = 0x40
  229. kseg0_data_mem (w!x) : ORIGIN = 0x80000000, LENGTH = 0x80000
  230. sfrs : ORIGIN = 0xBF800000, LENGTH = 0x100000
  231.  
  232. kseg2_sqi_data_mem : ORIGIN = 0xD0000000, LENGTH = 0x4000000
  233.  
  234. kseg3_sqi_data_mem : ORIGIN = 0xF0000000, LENGTH = 0x4000000
  235. }
  236.  
  237. /*************************************************************************
  238. * Configuration-word sections. Map the config-pragma input sections to
  239. * absolute-address output sections.
  240. *************************************************************************/
  241. SECTIONS
  242. {
  243. .config_BFC0FF40 : {
  244. KEEP(*(.config_BFC0FF40))
  245. } > config_BFC0FF40
  246. .config_BFC0FF44 : {
  247. KEEP(*(.config_BFC0FF44))
  248. } > config_BFC0FF44
  249. .config_BFC0FF48 : {
  250. KEEP(*(.config_BFC0FF48))
  251. } > config_BFC0FF48
  252. .config_BFC0FF4C : {
  253. KEEP(*(.config_BFC0FF4C))
  254. } > config_BFC0FF4C
  255. .config_BFC0FF50 : {
  256. KEEP(*(.config_BFC0FF50))
  257. } > config_BFC0FF50
  258. .config_BFC0FF54 : {
  259. KEEP(*(.config_BFC0FF54))
  260. } > config_BFC0FF54
  261. .config_BFC0FF58 : {
  262. KEEP(*(.config_BFC0FF58))
  263. } > config_BFC0FF58
  264. .config_BFC0FF5C : {
  265. KEEP(*(.config_BFC0FF5C))
  266. } > config_BFC0FF5C
  267. .config_BFC0FF60 : {
  268. KEEP(*(.config_BFC0FF60))
  269. } > config_BFC0FF60
  270. .config_BFC0FF64 : {
  271. KEEP(*(.config_BFC0FF64))
  272. } > config_BFC0FF64
  273. .config_BFC0FF68 : {
  274. KEEP(*(.config_BFC0FF68))
  275. } > config_BFC0FF68
  276. .config_BFC0FF6C : {
  277. KEEP(*(.config_BFC0FF6C))
  278. } > config_BFC0FF6C
  279. .config_BFC0FF70 : {
  280. KEEP(*(.config_BFC0FF70))
  281. } > config_BFC0FF70
  282. .config_BFC0FF74 : {
  283. KEEP(*(.config_BFC0FF74))
  284. } > config_BFC0FF74
  285. .config_BFC0FF78 : {
  286. KEEP(*(.config_BFC0FF78))
  287. } > config_BFC0FF78
  288. .config_BFC0FF7C : {
  289. KEEP(*(.config_BFC0FF7C))
  290. } > config_BFC0FF7C
  291. .config_BFC0FFC0 : {
  292. KEEP(*(.config_BFC0FFC0))
  293. } > config_BFC0FFC0
  294. .config_BFC0FFC4 : {
  295. KEEP(*(.config_BFC0FFC4))
  296. } > config_BFC0FFC4
  297. .config_BFC0FFC8 : {
  298. KEEP(*(.config_BFC0FFC8))
  299. } > config_BFC0FFC8
  300. .config_BFC0FFCC : {
  301. KEEP(*(.config_BFC0FFCC))
  302. } > config_BFC0FFCC
  303. .config_BFC0FFD0 : {
  304. KEEP(*(.config_BFC0FFD0))
  305. } > config_BFC0FFD0
  306. .config_BFC0FFD4 : {
  307. KEEP(*(.config_BFC0FFD4))
  308. } > config_BFC0FFD4
  309. .config_BFC0FFD8 : {
  310. KEEP(*(.config_BFC0FFD8))
  311. } > config_BFC0FFD8
  312. .config_BFC0FFDC : {
  313. KEEP(*(.config_BFC0FFDC))
  314. } > config_BFC0FFDC
  315. .config_BFC0FFE0 : {
  316. KEEP(*(.config_BFC0FFE0))
  317. } > config_BFC0FFE0
  318. .config_BFC0FFE4 : {
  319. KEEP(*(.config_BFC0FFE4))
  320. } > config_BFC0FFE4
  321. .config_BFC0FFE8 : {
  322. KEEP(*(.config_BFC0FFE8))
  323. } > config_BFC0FFE8
  324. .config_BFC0FFEC : {
  325. KEEP(*(.config_BFC0FFEC))
  326. } > config_BFC0FFEC
  327. .config_BFC0FFF0 : {
  328. KEEP(*(.config_BFC0FFF0))
  329. } > config_BFC0FFF0
  330. .config_BFC0FFF4 : {
  331. KEEP(*(.config_BFC0FFF4))
  332. } > config_BFC0FFF4
  333. .config_BFC0FFF8 : {
  334. KEEP(*(.config_BFC0FFF8))
  335. } > config_BFC0FFF8
  336. .config_BFC0FFFC : {
  337. KEEP(*(.config_BFC0FFFC))
  338. } > config_BFC0FFFC
  339. .config_BFC4FF40 : {
  340. KEEP(*(.config_BFC4FF40))
  341. } > config_BFC4FF40
  342. .config_BFC4FF44 : {
  343. KEEP(*(.config_BFC4FF44))
  344. } > config_BFC4FF44
  345. .config_BFC4FF48 : {
  346. KEEP(*(.config_BFC4FF48))
  347. } > config_BFC4FF48
  348. .config_BFC4FF4C : {
  349. KEEP(*(.config_BFC4FF4C))
  350. } > config_BFC4FF4C
  351. .config_BFC4FF50 : {
  352. KEEP(*(.config_BFC4FF50))
  353. } > config_BFC4FF50
  354. .config_BFC4FF54 : {
  355. KEEP(*(.config_BFC4FF54))
  356. } > config_BFC4FF54
  357. .config_BFC4FF58 : {
  358. KEEP(*(.config_BFC4FF58))
  359. } > config_BFC4FF58
  360. .config_BFC4FF5C : {
  361. KEEP(*(.config_BFC4FF5C))
  362. } > config_BFC4FF5C
  363. .config_BFC4FF60 : {
  364. KEEP(*(.config_BFC4FF60))
  365. } > config_BFC4FF60
  366. .config_BFC4FF64 : {
  367. KEEP(*(.config_BFC4FF64))
  368. } > config_BFC4FF64
  369. .config_BFC4FF68 : {
  370. KEEP(*(.config_BFC4FF68))
  371. } > config_BFC4FF68
  372. .config_BFC4FF6C : {
  373. KEEP(*(.config_BFC4FF6C))
  374. } > config_BFC4FF6C
  375. .config_BFC4FF70 : {
  376. KEEP(*(.config_BFC4FF70))
  377. } > config_BFC4FF70
  378. .config_BFC4FF74 : {
  379. KEEP(*(.config_BFC4FF74))
  380. } > config_BFC4FF74
  381. .config_BFC4FF78 : {
  382. KEEP(*(.config_BFC4FF78))
  383. } > config_BFC4FF78
  384. .config_BFC4FF7C : {
  385. KEEP(*(.config_BFC4FF7C))
  386. } > config_BFC4FF7C
  387. .config_BFC4FFC0 : {
  388. KEEP(*(.config_BFC4FFC0))
  389. } > config_BFC4FFC0
  390. .config_BFC4FFC4 : {
  391. KEEP(*(.config_BFC4FFC4))
  392. } > config_BFC4FFC4
  393. .config_BFC4FFC8 : {
  394. KEEP(*(.config_BFC4FFC8))
  395. } > config_BFC4FFC8
  396. .config_BFC4FFCC : {
  397. KEEP(*(.config_BFC4FFCC))
  398. } > config_BFC4FFCC
  399. .config_BFC4FFD0 : {
  400. KEEP(*(.config_BFC4FFD0))
  401. } > config_BFC4FFD0
  402. .config_BFC4FFD4 : {
  403. KEEP(*(.config_BFC4FFD4))
  404. } > config_BFC4FFD4
  405. .config_BFC4FFD8 : {
  406. KEEP(*(.config_BFC4FFD8))
  407. } > config_BFC4FFD8
  408. .config_BFC4FFDC : {
  409. KEEP(*(.config_BFC4FFDC))
  410. } > config_BFC4FFDC
  411. .config_BFC4FFE0 : {
  412. KEEP(*(.config_BFC4FFE0))
  413. } > config_BFC4FFE0
  414. .config_BFC4FFE4 : {
  415. KEEP(*(.config_BFC4FFE4))
  416. } > config_BFC4FFE4
  417. .config_BFC4FFE8 : {
  418. KEEP(*(.config_BFC4FFE8))
  419. } > config_BFC4FFE8
  420. .config_BFC4FFEC : {
  421. KEEP(*(.config_BFC4FFEC))
  422. } > config_BFC4FFEC
  423. .config_BFC4FFF0 : {
  424. KEEP(*(.config_BFC4FFF0))
  425. } > config_BFC4FFF0
  426. .config_BFC4FFF4 : {
  427. KEEP(*(.config_BFC4FFF4))
  428. } > config_BFC4FFF4
  429. .config_BFC4FFF8 : {
  430. KEEP(*(.config_BFC4FFF8))
  431. } > config_BFC4FFF8
  432. .config_BFC4FFFC : {
  433. KEEP(*(.config_BFC4FFFC))
  434. } > config_BFC4FFFC
  435. .config_BFC54000 : {
  436. KEEP(*(.config_BFC54000))
  437. } > config_BFC54000
  438. .config_BFC54004 : {
  439. KEEP(*(.config_BFC54004))
  440. } > config_BFC54004
  441. .config_BFC54008 : {
  442. KEEP(*(.config_BFC54008))
  443. } > config_BFC54008
  444. .config_BFC5400C : {
  445. KEEP(*(.config_BFC5400C))
  446. } > config_BFC5400C
  447. .config_BFC54010 : {
  448. KEEP(*(.config_BFC54010))
  449. } > config_BFC54010
  450. .config_BFC54020 : {
  451. KEEP(*(.config_BFC54020))
  452. } > config_BFC54020
  453. .config_BFC54024 : {
  454. KEEP(*(.config_BFC54024))
  455. } > config_BFC54024
  456. .config_BFC6FF40 : {
  457. KEEP(*(.config_BFC6FF40))
  458. } > config_BFC6FF40
  459. .config_BFC6FF44 : {
  460. KEEP(*(.config_BFC6FF44))
  461. } > config_BFC6FF44
  462. .config_BFC6FF48 : {
  463. KEEP(*(.config_BFC6FF48))
  464. } > config_BFC6FF48
  465. .config_BFC6FF4C : {
  466. KEEP(*(.config_BFC6FF4C))
  467. } > config_BFC6FF4C
  468. .config_BFC6FF50 : {
  469. KEEP(*(.config_BFC6FF50))
  470. } > config_BFC6FF50
  471. .config_BFC6FF54 : {
  472. KEEP(*(.config_BFC6FF54))
  473. } > config_BFC6FF54
  474. .config_BFC6FF58 : {
  475. KEEP(*(.config_BFC6FF58))
  476. } > config_BFC6FF58
  477. .config_BFC6FF5C : {
  478. KEEP(*(.config_BFC6FF5C))
  479. } > config_BFC6FF5C
  480. .config_BFC6FF60 : {
  481. KEEP(*(.config_BFC6FF60))
  482. } > config_BFC6FF60
  483. .config_BFC6FF64 : {
  484. KEEP(*(.config_BFC6FF64))
  485. } > config_BFC6FF64
  486. .config_BFC6FF68 : {
  487. KEEP(*(.config_BFC6FF68))
  488. } > config_BFC6FF68
  489. .config_BFC6FF6C : {
  490. KEEP(*(.config_BFC6FF6C))
  491. } > config_BFC6FF6C
  492. .config_BFC6FF70 : {
  493. KEEP(*(.config_BFC6FF70))
  494. } > config_BFC6FF70
  495. .config_BFC6FF74 : {
  496. KEEP(*(.config_BFC6FF74))
  497. } > config_BFC6FF74
  498. .config_BFC6FF78 : {
  499. KEEP(*(.config_BFC6FF78))
  500. } > config_BFC6FF78
  501. .config_BFC6FF7C : {
  502. KEEP(*(.config_BFC6FF7C))
  503. } > config_BFC6FF7C
  504. .config_BFC6FFC0 : {
  505. KEEP(*(.config_BFC6FFC0))
  506. } > config_BFC6FFC0
  507. .config_BFC6FFC4 : {
  508. KEEP(*(.config_BFC6FFC4))
  509. } > config_BFC6FFC4
  510. .config_BFC6FFC8 : {
  511. KEEP(*(.config_BFC6FFC8))
  512. } > config_BFC6FFC8
  513. .config_BFC6FFCC : {
  514. KEEP(*(.config_BFC6FFCC))
  515. } > config_BFC6FFCC
  516. .config_BFC6FFD0 : {
  517. KEEP(*(.config_BFC6FFD0))
  518. } > config_BFC6FFD0
  519. .config_BFC6FFD4 : {
  520. KEEP(*(.config_BFC6FFD4))
  521. } > config_BFC6FFD4
  522. .config_BFC6FFD8 : {
  523. KEEP(*(.config_BFC6FFD8))
  524. } > config_BFC6FFD8
  525. .config_BFC6FFDC : {
  526. KEEP(*(.config_BFC6FFDC))
  527. } > config_BFC6FFDC
  528. .config_BFC6FFE0 : {
  529. KEEP(*(.config_BFC6FFE0))
  530. } > config_BFC6FFE0
  531. .config_BFC6FFE4 : {
  532. KEEP(*(.config_BFC6FFE4))
  533. } > config_BFC6FFE4
  534. .config_BFC6FFE8 : {
  535. KEEP(*(.config_BFC6FFE8))
  536. } > config_BFC6FFE8
  537. .config_BFC6FFEC : {
  538. KEEP(*(.config_BFC6FFEC))
  539. } > config_BFC6FFEC
  540. .config_BFC6FFF0 : {
  541. KEEP(*(.config_BFC6FFF0))
  542. } > config_BFC6FFF0
  543. .config_BFC6FFF4 : {
  544. KEEP(*(.config_BFC6FFF4))
  545. } > config_BFC6FFF4
  546. .config_BFC6FFF8 : {
  547. KEEP(*(.config_BFC6FFF8))
  548. } > config_BFC6FFF8
  549. .config_BFC6FFFC : {
  550. KEEP(*(.config_BFC6FFFC))
  551. } > config_BFC6FFFC
  552. }
  553. SECTIONS
  554. {
  555. /* Boot Sections */
  556. .reset _RESET_ADDR :
  557. {
  558. KEEP(*(.reset))
  559. KEEP(*(.reset.startup))
  560. } > kseg1_boot_mem
  561. .bev_excpt _BEV_EXCPT_ADDR :
  562. {
  563. KEEP(*(.bev_handler))
  564. } > kseg1_boot_mem
  565. .cache_init :
  566. {
  567. *(.cache_init)
  568. *(.cache_init.*)
  569. } > kseg1_boot_mem_4B0
  570. .simple_tlb_refill_excpt _SIMPLE_TLB_REFILL_EXCPT_ADDR :
  571. {
  572. KEEP(*(.simple_tlb_refill_vector))
  573. } > kseg0_program_mem
  574. .cache_err_excpt _CACHE_ERR_EXCPT_ADDR :
  575. {
  576. KEEP(*(.cache_err_vector))
  577. } > kseg0_program_mem
  578. .app_excpt _GEN_EXCPT_ADDR :
  579. {
  580. KEEP(*(.gen_handler))
  581. } > kseg0_program_mem
  582.  
  583. /* Interrupt vector table with vector offsets */
  584. .vectors _ebase_address + 0x200 :
  585. {
  586. /* Symbol __vector_offset_n points to .vector_n if it exists,
  587. * otherwise points to the default handler. The
  588. * vector_offset_init.o module then provides a .data section
  589. * containing values used to initialize the vector-offset SFRs
  590. * in the crt0 startup code.
  591. */
  592. __vector_offset_0 = (DEFINED(__vector_dispatch_0) ? (. - _ebase_address) : __vector_offset_default);
  593. KEEP(*(.vector_0))
  594. __vector_offset_1 = (DEFINED(__vector_dispatch_1) ? (. - _ebase_address) : __vector_offset_default);
  595. KEEP(*(.vector_1))
  596. __vector_offset_2 = (DEFINED(__vector_dispatch_2) ? (. - _ebase_address) : __vector_offset_default);
  597. KEEP(*(.vector_2))
  598. __vector_offset_3 = (DEFINED(__vector_dispatch_3) ? (. - _ebase_address) : __vector_offset_default);
  599. KEEP(*(.vector_3))
  600. __vector_offset_4 = (DEFINED(__vector_dispatch_4) ? (. - _ebase_address) : __vector_offset_default);
  601. KEEP(*(.vector_4))
  602. __vector_offset_5 = (DEFINED(__vector_dispatch_5) ? (. - _ebase_address) : __vector_offset_default);
  603. KEEP(*(.vector_5))
  604. __vector_offset_6 = (DEFINED(__vector_dispatch_6) ? (. - _ebase_address) : __vector_offset_default);
  605. KEEP(*(.vector_6))
  606. __vector_offset_7 = (DEFINED(__vector_dispatch_7) ? (. - _ebase_address) : __vector_offset_default);
  607. KEEP(*(.vector_7))
  608. __vector_offset_8 = (DEFINED(__vector_dispatch_8) ? (. - _ebase_address) : __vector_offset_default);
  609. KEEP(*(.vector_8))
  610. __vector_offset_9 = (DEFINED(__vector_dispatch_9) ? (. - _ebase_address) : __vector_offset_default);
  611. KEEP(*(.vector_9))
  612. __vector_offset_10 = (DEFINED(__vector_dispatch_10) ? (. - _ebase_address) : __vector_offset_default);
  613. KEEP(*(.vector_10))
  614. __vector_offset_11 = (DEFINED(__vector_dispatch_11) ? (. - _ebase_address) : __vector_offset_default);
  615. KEEP(*(.vector_11))
  616. __vector_offset_12 = (DEFINED(__vector_dispatch_12) ? (. - _ebase_address) : __vector_offset_default);
  617. KEEP(*(.vector_12))
  618. __vector_offset_13 = (DEFINED(__vector_dispatch_13) ? (. - _ebase_address) : __vector_offset_default);
  619. KEEP(*(.vector_13))
  620. __vector_offset_14 = (DEFINED(__vector_dispatch_14) ? (. - _ebase_address) : __vector_offset_default);
  621. KEEP(*(.vector_14))
  622. __vector_offset_15 = (DEFINED(__vector_dispatch_15) ? (. - _ebase_address) : __vector_offset_default);
  623. KEEP(*(.vector_15))
  624. __vector_offset_16 = (DEFINED(__vector_dispatch_16) ? (. - _ebase_address) : __vector_offset_default);
  625. KEEP(*(.vector_16))
  626. __vector_offset_17 = (DEFINED(__vector_dispatch_17) ? (. - _ebase_address) : __vector_offset_default);
  627. KEEP(*(.vector_17))
  628. __vector_offset_18 = (DEFINED(__vector_dispatch_18) ? (. - _ebase_address) : __vector_offset_default);
  629. KEEP(*(.vector_18))
  630. __vector_offset_19 = (DEFINED(__vector_dispatch_19) ? (. - _ebase_address) : __vector_offset_default);
  631. KEEP(*(.vector_19))
  632. __vector_offset_20 = (DEFINED(__vector_dispatch_20) ? (. - _ebase_address) : __vector_offset_default);
  633. KEEP(*(.vector_20))
  634. __vector_offset_21 = (DEFINED(__vector_dispatch_21) ? (. - _ebase_address) : __vector_offset_default);
  635. KEEP(*(.vector_21))
  636. __vector_offset_22 = (DEFINED(__vector_dispatch_22) ? (. - _ebase_address) : __vector_offset_default);
  637. KEEP(*(.vector_22))
  638. __vector_offset_23 = (DEFINED(__vector_dispatch_23) ? (. - _ebase_address) : __vector_offset_default);
  639. KEEP(*(.vector_23))
  640. __vector_offset_24 = (DEFINED(__vector_dispatch_24) ? (. - _ebase_address) : __vector_offset_default);
  641. KEEP(*(.vector_24))
  642. __vector_offset_25 = (DEFINED(__vector_dispatch_25) ? (. - _ebase_address) : __vector_offset_default);
  643. KEEP(*(.vector_25))
  644. __vector_offset_26 = (DEFINED(__vector_dispatch_26) ? (. - _ebase_address) : __vector_offset_default);
  645. KEEP(*(.vector_26))
  646. __vector_offset_27 = (DEFINED(__vector_dispatch_27) ? (. - _ebase_address) : __vector_offset_default);
  647. KEEP(*(.vector_27))
  648. __vector_offset_28 = (DEFINED(__vector_dispatch_28) ? (. - _ebase_address) : __vector_offset_default);
  649. KEEP(*(.vector_28))
  650. __vector_offset_29 = (DEFINED(__vector_dispatch_29) ? (. - _ebase_address) : __vector_offset_default);
  651. KEEP(*(.vector_29))
  652. __vector_offset_30 = (DEFINED(__vector_dispatch_30) ? (. - _ebase_address) : __vector_offset_default);
  653. KEEP(*(.vector_30))
  654. __vector_offset_31 = (DEFINED(__vector_dispatch_31) ? (. - _ebase_address) : __vector_offset_default);
  655. KEEP(*(.vector_31))
  656. __vector_offset_32 = (DEFINED(__vector_dispatch_32) ? (. - _ebase_address) : __vector_offset_default);
  657. KEEP(*(.vector_32))
  658. __vector_offset_33 = (DEFINED(__vector_dispatch_33) ? (. - _ebase_address) : __vector_offset_default);
  659. KEEP(*(.vector_33))
  660. __vector_offset_34 = (DEFINED(__vector_dispatch_34) ? (. - _ebase_address) : __vector_offset_default);
  661. KEEP(*(.vector_34))
  662. __vector_offset_35 = (DEFINED(__vector_dispatch_35) ? (. - _ebase_address) : __vector_offset_default);
  663. KEEP(*(.vector_35))
  664. __vector_offset_36 = (DEFINED(__vector_dispatch_36) ? (. - _ebase_address) : __vector_offset_default);
  665. KEEP(*(.vector_36))
  666. __vector_offset_37 = (DEFINED(__vector_dispatch_37) ? (. - _ebase_address) : __vector_offset_default);
  667. KEEP(*(.vector_37))
  668. __vector_offset_38 = (DEFINED(__vector_dispatch_38) ? (. - _ebase_address) : __vector_offset_default);
  669. KEEP(*(.vector_38))
  670. __vector_offset_39 = (DEFINED(__vector_dispatch_39) ? (. - _ebase_address) : __vector_offset_default);
  671. KEEP(*(.vector_39))
  672. __vector_offset_40 = (DEFINED(__vector_dispatch_40) ? (. - _ebase_address) : __vector_offset_default);
  673. KEEP(*(.vector_40))
  674. __vector_offset_41 = (DEFINED(__vector_dispatch_41) ? (. - _ebase_address) : __vector_offset_default);
  675. KEEP(*(.vector_41))
  676. __vector_offset_42 = (DEFINED(__vector_dispatch_42) ? (. - _ebase_address) : __vector_offset_default);
  677. KEEP(*(.vector_42))
  678. __vector_offset_43 = (DEFINED(__vector_dispatch_43) ? (. - _ebase_address) : __vector_offset_default);
  679. KEEP(*(.vector_43))
  680. __vector_offset_44 = (DEFINED(__vector_dispatch_44) ? (. - _ebase_address) : __vector_offset_default);
  681. KEEP(*(.vector_44))
  682. __vector_offset_45 = (DEFINED(__vector_dispatch_45) ? (. - _ebase_address) : __vector_offset_default);
  683. KEEP(*(.vector_45))
  684. __vector_offset_46 = (DEFINED(__vector_dispatch_46) ? (. - _ebase_address) : __vector_offset_default);
  685. KEEP(*(.vector_46))
  686. __vector_offset_47 = (DEFINED(__vector_dispatch_47) ? (. - _ebase_address) : __vector_offset_default);
  687. KEEP(*(.vector_47))
  688. __vector_offset_48 = (DEFINED(__vector_dispatch_48) ? (. - _ebase_address) : __vector_offset_default);
  689. KEEP(*(.vector_48))
  690. __vector_offset_49 = (DEFINED(__vector_dispatch_49) ? (. - _ebase_address) : __vector_offset_default);
  691. KEEP(*(.vector_49))
  692. __vector_offset_50 = (DEFINED(__vector_dispatch_50) ? (. - _ebase_address) : __vector_offset_default);
  693. KEEP(*(.vector_50))
  694. __vector_offset_51 = (DEFINED(__vector_dispatch_51) ? (. - _ebase_address) : __vector_offset_default);
  695. KEEP(*(.vector_51))
  696. __vector_offset_52 = (DEFINED(__vector_dispatch_52) ? (. - _ebase_address) : __vector_offset_default);
  697. KEEP(*(.vector_52))
  698. __vector_offset_53 = (DEFINED(__vector_dispatch_53) ? (. - _ebase_address) : __vector_offset_default);
  699. KEEP(*(.vector_53))
  700. __vector_offset_54 = (DEFINED(__vector_dispatch_54) ? (. - _ebase_address) : __vector_offset_default);
  701. KEEP(*(.vector_54))
  702. __vector_offset_55 = (DEFINED(__vector_dispatch_55) ? (. - _ebase_address) : __vector_offset_default);
  703. KEEP(*(.vector_55))
  704. __vector_offset_56 = (DEFINED(__vector_dispatch_56) ? (. - _ebase_address) : __vector_offset_default);
  705. KEEP(*(.vector_56))
  706. __vector_offset_57 = (DEFINED(__vector_dispatch_57) ? (. - _ebase_address) : __vector_offset_default);
  707. KEEP(*(.vector_57))
  708. __vector_offset_58 = (DEFINED(__vector_dispatch_58) ? (. - _ebase_address) : __vector_offset_default);
  709. KEEP(*(.vector_58))
  710. __vector_offset_59 = (DEFINED(__vector_dispatch_59) ? (. - _ebase_address) : __vector_offset_default);
  711. KEEP(*(.vector_59))
  712. __vector_offset_60 = (DEFINED(__vector_dispatch_60) ? (. - _ebase_address) : __vector_offset_default);
  713. KEEP(*(.vector_60))
  714. __vector_offset_61 = (DEFINED(__vector_dispatch_61) ? (. - _ebase_address) : __vector_offset_default);
  715. KEEP(*(.vector_61))
  716. __vector_offset_62 = (DEFINED(__vector_dispatch_62) ? (. - _ebase_address) : __vector_offset_default);
  717. KEEP(*(.vector_62))
  718. __vector_offset_63 = (DEFINED(__vector_dispatch_63) ? (. - _ebase_address) : __vector_offset_default);
  719. KEEP(*(.vector_63))
  720. __vector_offset_64 = (DEFINED(__vector_dispatch_64) ? (. - _ebase_address) : __vector_offset_default);
  721. KEEP(*(.vector_64))
  722. __vector_offset_65 = (DEFINED(__vector_dispatch_65) ? (. - _ebase_address) : __vector_offset_default);
  723. KEEP(*(.vector_65))
  724. __vector_offset_66 = (DEFINED(__vector_dispatch_66) ? (. - _ebase_address) : __vector_offset_default);
  725. KEEP(*(.vector_66))
  726. __vector_offset_67 = (DEFINED(__vector_dispatch_67) ? (. - _ebase_address) : __vector_offset_default);
  727. KEEP(*(.vector_67))
  728. __vector_offset_68 = (DEFINED(__vector_dispatch_68) ? (. - _ebase_address) : __vector_offset_default);
  729. KEEP(*(.vector_68))
  730. __vector_offset_69 = (DEFINED(__vector_dispatch_69) ? (. - _ebase_address) : __vector_offset_default);
  731. KEEP(*(.vector_69))
  732. __vector_offset_70 = (DEFINED(__vector_dispatch_70) ? (. - _ebase_address) : __vector_offset_default);
  733. KEEP(*(.vector_70))
  734. __vector_offset_71 = (DEFINED(__vector_dispatch_71) ? (. - _ebase_address) : __vector_offset_default);
  735. KEEP(*(.vector_71))
  736. __vector_offset_72 = (DEFINED(__vector_dispatch_72) ? (. - _ebase_address) : __vector_offset_default);
  737. KEEP(*(.vector_72))
  738. __vector_offset_73 = (DEFINED(__vector_dispatch_73) ? (. - _ebase_address) : __vector_offset_default);
  739. KEEP(*(.vector_73))
  740. __vector_offset_74 = (DEFINED(__vector_dispatch_74) ? (. - _ebase_address) : __vector_offset_default);
  741. KEEP(*(.vector_74))
  742. __vector_offset_75 = (DEFINED(__vector_dispatch_75) ? (. - _ebase_address) : __vector_offset_default);
  743. KEEP(*(.vector_75))
  744. __vector_offset_76 = (DEFINED(__vector_dispatch_76) ? (. - _ebase_address) : __vector_offset_default);
  745. KEEP(*(.vector_76))
  746. __vector_offset_77 = (DEFINED(__vector_dispatch_77) ? (. - _ebase_address) : __vector_offset_default);
  747. KEEP(*(.vector_77))
  748. __vector_offset_78 = (DEFINED(__vector_dispatch_78) ? (. - _ebase_address) : __vector_offset_default);
  749. KEEP(*(.vector_78))
  750. __vector_offset_79 = (DEFINED(__vector_dispatch_79) ? (. - _ebase_address) : __vector_offset_default);
  751. KEEP(*(.vector_79))
  752. __vector_offset_80 = (DEFINED(__vector_dispatch_80) ? (. - _ebase_address) : __vector_offset_default);
  753. KEEP(*(.vector_80))
  754. __vector_offset_81 = (DEFINED(__vector_dispatch_81) ? (. - _ebase_address) : __vector_offset_default);
  755. KEEP(*(.vector_81))
  756. __vector_offset_82 = (DEFINED(__vector_dispatch_82) ? (. - _ebase_address) : __vector_offset_default);
  757. KEEP(*(.vector_82))
  758. __vector_offset_83 = (DEFINED(__vector_dispatch_83) ? (. - _ebase_address) : __vector_offset_default);
  759. KEEP(*(.vector_83))
  760. __vector_offset_84 = (DEFINED(__vector_dispatch_84) ? (. - _ebase_address) : __vector_offset_default);
  761. KEEP(*(.vector_84))
  762. __vector_offset_85 = (DEFINED(__vector_dispatch_85) ? (. - _ebase_address) : __vector_offset_default);
  763. KEEP(*(.vector_85))
  764. __vector_offset_86 = (DEFINED(__vector_dispatch_86) ? (. - _ebase_address) : __vector_offset_default);
  765. KEEP(*(.vector_86))
  766. __vector_offset_87 = (DEFINED(__vector_dispatch_87) ? (. - _ebase_address) : __vector_offset_default);
  767. KEEP(*(.vector_87))
  768. __vector_offset_88 = (DEFINED(__vector_dispatch_88) ? (. - _ebase_address) : __vector_offset_default);
  769. KEEP(*(.vector_88))
  770. __vector_offset_89 = (DEFINED(__vector_dispatch_89) ? (. - _ebase_address) : __vector_offset_default);
  771. KEEP(*(.vector_89))
  772. __vector_offset_90 = (DEFINED(__vector_dispatch_90) ? (. - _ebase_address) : __vector_offset_default);
  773. KEEP(*(.vector_90))
  774. __vector_offset_91 = (DEFINED(__vector_dispatch_91) ? (. - _ebase_address) : __vector_offset_default);
  775. KEEP(*(.vector_91))
  776. __vector_offset_92 = (DEFINED(__vector_dispatch_92) ? (. - _ebase_address) : __vector_offset_default);
  777. KEEP(*(.vector_92))
  778. __vector_offset_93 = (DEFINED(__vector_dispatch_93) ? (. - _ebase_address) : __vector_offset_default);
  779. KEEP(*(.vector_93))
  780. __vector_offset_94 = (DEFINED(__vector_dispatch_94) ? (. - _ebase_address) : __vector_offset_default);
  781. KEEP(*(.vector_94))
  782. __vector_offset_95 = (DEFINED(__vector_dispatch_95) ? (. - _ebase_address) : __vector_offset_default);
  783. KEEP(*(.vector_95))
  784. __vector_offset_96 = (DEFINED(__vector_dispatch_96) ? (. - _ebase_address) : __vector_offset_default);
  785. KEEP(*(.vector_96))
  786. __vector_offset_97 = (DEFINED(__vector_dispatch_97) ? (. - _ebase_address) : __vector_offset_default);
  787. KEEP(*(.vector_97))
  788. __vector_offset_98 = (DEFINED(__vector_dispatch_98) ? (. - _ebase_address) : __vector_offset_default);
  789. KEEP(*(.vector_98))
  790. __vector_offset_99 = (DEFINED(__vector_dispatch_99) ? (. - _ebase_address) : __vector_offset_default);
  791. KEEP(*(.vector_99))
  792. __vector_offset_100 = (DEFINED(__vector_dispatch_100) ? (. - _ebase_address) : __vector_offset_default);
  793. KEEP(*(.vector_100))
  794. __vector_offset_101 = (DEFINED(__vector_dispatch_101) ? (. - _ebase_address) : __vector_offset_default);
  795. KEEP(*(.vector_101))
  796. __vector_offset_102 = (DEFINED(__vector_dispatch_102) ? (. - _ebase_address) : __vector_offset_default);
  797. KEEP(*(.vector_102))
  798. __vector_offset_103 = (DEFINED(__vector_dispatch_103) ? (. - _ebase_address) : __vector_offset_default);
  799. KEEP(*(.vector_103))
  800. __vector_offset_104 = (DEFINED(__vector_dispatch_104) ? (. - _ebase_address) : __vector_offset_default);
  801. KEEP(*(.vector_104))
  802. __vector_offset_105 = (DEFINED(__vector_dispatch_105) ? (. - _ebase_address) : __vector_offset_default);
  803. KEEP(*(.vector_105))
  804. __vector_offset_106 = (DEFINED(__vector_dispatch_106) ? (. - _ebase_address) : __vector_offset_default);
  805. KEEP(*(.vector_106))
  806. __vector_offset_107 = (DEFINED(__vector_dispatch_107) ? (. - _ebase_address) : __vector_offset_default);
  807. KEEP(*(.vector_107))
  808. __vector_offset_108 = (DEFINED(__vector_dispatch_108) ? (. - _ebase_address) : __vector_offset_default);
  809. KEEP(*(.vector_108))
  810. __vector_offset_109 = (DEFINED(__vector_dispatch_109) ? (. - _ebase_address) : __vector_offset_default);
  811. KEEP(*(.vector_109))
  812. __vector_offset_110 = (DEFINED(__vector_dispatch_110) ? (. - _ebase_address) : __vector_offset_default);
  813. KEEP(*(.vector_110))
  814. __vector_offset_111 = (DEFINED(__vector_dispatch_111) ? (. - _ebase_address) : __vector_offset_default);
  815. KEEP(*(.vector_111))
  816. __vector_offset_112 = (DEFINED(__vector_dispatch_112) ? (. - _ebase_address) : __vector_offset_default);
  817. KEEP(*(.vector_112))
  818. __vector_offset_113 = (DEFINED(__vector_dispatch_113) ? (. - _ebase_address) : __vector_offset_default);
  819. KEEP(*(.vector_113))
  820. __vector_offset_114 = (DEFINED(__vector_dispatch_114) ? (. - _ebase_address) : __vector_offset_default);
  821. KEEP(*(.vector_114))
  822. __vector_offset_115 = (DEFINED(__vector_dispatch_115) ? (. - _ebase_address) : __vector_offset_default);
  823. KEEP(*(.vector_115))
  824. __vector_offset_116 = (DEFINED(__vector_dispatch_116) ? (. - _ebase_address) : __vector_offset_default);
  825. KEEP(*(.vector_116))
  826. __vector_offset_117 = (DEFINED(__vector_dispatch_117) ? (. - _ebase_address) : __vector_offset_default);
  827. KEEP(*(.vector_117))
  828. __vector_offset_118 = (DEFINED(__vector_dispatch_118) ? (. - _ebase_address) : __vector_offset_default);
  829. KEEP(*(.vector_118))
  830. __vector_offset_119 = (DEFINED(__vector_dispatch_119) ? (. - _ebase_address) : __vector_offset_default);
  831. KEEP(*(.vector_119))
  832. __vector_offset_120 = (DEFINED(__vector_dispatch_120) ? (. - _ebase_address) : __vector_offset_default);
  833. KEEP(*(.vector_120))
  834. __vector_offset_121 = (DEFINED(__vector_dispatch_121) ? (. - _ebase_address) : __vector_offset_default);
  835. KEEP(*(.vector_121))
  836. __vector_offset_122 = (DEFINED(__vector_dispatch_122) ? (. - _ebase_address) : __vector_offset_default);
  837. KEEP(*(.vector_122))
  838. __vector_offset_123 = (DEFINED(__vector_dispatch_123) ? (. - _ebase_address) : __vector_offset_default);
  839. KEEP(*(.vector_123))
  840. __vector_offset_124 = (DEFINED(__vector_dispatch_124) ? (. - _ebase_address) : __vector_offset_default);
  841. KEEP(*(.vector_124))
  842. __vector_offset_125 = (DEFINED(__vector_dispatch_125) ? (. - _ebase_address) : __vector_offset_default);
  843. KEEP(*(.vector_125))
  844. __vector_offset_126 = (DEFINED(__vector_dispatch_126) ? (. - _ebase_address) : __vector_offset_default);
  845. KEEP(*(.vector_126))
  846. __vector_offset_127 = (DEFINED(__vector_dispatch_127) ? (. - _ebase_address) : __vector_offset_default);
  847. KEEP(*(.vector_127))
  848. __vector_offset_128 = (DEFINED(__vector_dispatch_128) ? (. - _ebase_address) : __vector_offset_default);
  849. KEEP(*(.vector_128))
  850. __vector_offset_129 = (DEFINED(__vector_dispatch_129) ? (. - _ebase_address) : __vector_offset_default);
  851. KEEP(*(.vector_129))
  852. __vector_offset_130 = (DEFINED(__vector_dispatch_130) ? (. - _ebase_address) : __vector_offset_default);
  853. KEEP(*(.vector_130))
  854. __vector_offset_131 = (DEFINED(__vector_dispatch_131) ? (. - _ebase_address) : __vector_offset_default);
  855. KEEP(*(.vector_131))
  856. __vector_offset_132 = (DEFINED(__vector_dispatch_132) ? (. - _ebase_address) : __vector_offset_default);
  857. KEEP(*(.vector_132))
  858. __vector_offset_133 = (DEFINED(__vector_dispatch_133) ? (. - _ebase_address) : __vector_offset_default);
  859. KEEP(*(.vector_133))
  860. __vector_offset_134 = (DEFINED(__vector_dispatch_134) ? (. - _ebase_address) : __vector_offset_default);
  861. KEEP(*(.vector_134))
  862. __vector_offset_135 = (DEFINED(__vector_dispatch_135) ? (. - _ebase_address) : __vector_offset_default);
  863. KEEP(*(.vector_135))
  864. __vector_offset_136 = (DEFINED(__vector_dispatch_136) ? (. - _ebase_address) : __vector_offset_default);
  865. KEEP(*(.vector_136))
  866. __vector_offset_137 = (DEFINED(__vector_dispatch_137) ? (. - _ebase_address) : __vector_offset_default);
  867. KEEP(*(.vector_137))
  868. __vector_offset_138 = (DEFINED(__vector_dispatch_138) ? (. - _ebase_address) : __vector_offset_default);
  869. KEEP(*(.vector_138))
  870. __vector_offset_139 = (DEFINED(__vector_dispatch_139) ? (. - _ebase_address) : __vector_offset_default);
  871. KEEP(*(.vector_139))
  872. __vector_offset_140 = (DEFINED(__vector_dispatch_140) ? (. - _ebase_address) : __vector_offset_default);
  873. KEEP(*(.vector_140))
  874. __vector_offset_141 = (DEFINED(__vector_dispatch_141) ? (. - _ebase_address) : __vector_offset_default);
  875. KEEP(*(.vector_141))
  876. __vector_offset_142 = (DEFINED(__vector_dispatch_142) ? (. - _ebase_address) : __vector_offset_default);
  877. KEEP(*(.vector_142))
  878. __vector_offset_143 = (DEFINED(__vector_dispatch_143) ? (. - _ebase_address) : __vector_offset_default);
  879. KEEP(*(.vector_143))
  880. __vector_offset_144 = (DEFINED(__vector_dispatch_144) ? (. - _ebase_address) : __vector_offset_default);
  881. KEEP(*(.vector_144))
  882. __vector_offset_145 = (DEFINED(__vector_dispatch_145) ? (. - _ebase_address) : __vector_offset_default);
  883. KEEP(*(.vector_145))
  884. __vector_offset_146 = (DEFINED(__vector_dispatch_146) ? (. - _ebase_address) : __vector_offset_default);
  885. KEEP(*(.vector_146))
  886. __vector_offset_147 = (DEFINED(__vector_dispatch_147) ? (. - _ebase_address) : __vector_offset_default);
  887. KEEP(*(.vector_147))
  888. __vector_offset_148 = (DEFINED(__vector_dispatch_148) ? (. - _ebase_address) : __vector_offset_default);
  889. KEEP(*(.vector_148))
  890. __vector_offset_149 = (DEFINED(__vector_dispatch_149) ? (. - _ebase_address) : __vector_offset_default);
  891. KEEP(*(.vector_149))
  892. __vector_offset_150 = (DEFINED(__vector_dispatch_150) ? (. - _ebase_address) : __vector_offset_default);
  893. KEEP(*(.vector_150))
  894. __vector_offset_151 = (DEFINED(__vector_dispatch_151) ? (. - _ebase_address) : __vector_offset_default);
  895. KEEP(*(.vector_151))
  896. __vector_offset_152 = (DEFINED(__vector_dispatch_152) ? (. - _ebase_address) : __vector_offset_default);
  897. KEEP(*(.vector_152))
  898. __vector_offset_153 = (DEFINED(__vector_dispatch_153) ? (. - _ebase_address) : __vector_offset_default);
  899. KEEP(*(.vector_153))
  900. __vector_offset_154 = (DEFINED(__vector_dispatch_154) ? (. - _ebase_address) : __vector_offset_default);
  901. KEEP(*(.vector_154))
  902. __vector_offset_155 = (DEFINED(__vector_dispatch_155) ? (. - _ebase_address) : __vector_offset_default);
  903. KEEP(*(.vector_155))
  904. __vector_offset_156 = (DEFINED(__vector_dispatch_156) ? (. - _ebase_address) : __vector_offset_default);
  905. KEEP(*(.vector_156))
  906. __vector_offset_157 = (DEFINED(__vector_dispatch_157) ? (. - _ebase_address) : __vector_offset_default);
  907. KEEP(*(.vector_157))
  908. __vector_offset_158 = (DEFINED(__vector_dispatch_158) ? (. - _ebase_address) : __vector_offset_default);
  909. KEEP(*(.vector_158))
  910. __vector_offset_159 = (DEFINED(__vector_dispatch_159) ? (. - _ebase_address) : __vector_offset_default);
  911. KEEP(*(.vector_159))
  912. __vector_offset_160 = (DEFINED(__vector_dispatch_160) ? (. - _ebase_address) : __vector_offset_default);
  913. KEEP(*(.vector_160))
  914. __vector_offset_161 = (DEFINED(__vector_dispatch_161) ? (. - _ebase_address) : __vector_offset_default);
  915. KEEP(*(.vector_161))
  916. __vector_offset_162 = (DEFINED(__vector_dispatch_162) ? (. - _ebase_address) : __vector_offset_default);
  917. KEEP(*(.vector_162))
  918. __vector_offset_163 = (DEFINED(__vector_dispatch_163) ? (. - _ebase_address) : __vector_offset_default);
  919. KEEP(*(.vector_163))
  920. __vector_offset_164 = (DEFINED(__vector_dispatch_164) ? (. - _ebase_address) : __vector_offset_default);
  921. KEEP(*(.vector_164))
  922. __vector_offset_165 = (DEFINED(__vector_dispatch_165) ? (. - _ebase_address) : __vector_offset_default);
  923. KEEP(*(.vector_165))
  924. __vector_offset_166 = (DEFINED(__vector_dispatch_166) ? (. - _ebase_address) : __vector_offset_default);
  925. KEEP(*(.vector_166))
  926. __vector_offset_167 = (DEFINED(__vector_dispatch_167) ? (. - _ebase_address) : __vector_offset_default);
  927. KEEP(*(.vector_167))
  928. __vector_offset_168 = (DEFINED(__vector_dispatch_168) ? (. - _ebase_address) : __vector_offset_default);
  929. KEEP(*(.vector_168))
  930. __vector_offset_169 = (DEFINED(__vector_dispatch_169) ? (. - _ebase_address) : __vector_offset_default);
  931. KEEP(*(.vector_169))
  932. __vector_offset_170 = (DEFINED(__vector_dispatch_170) ? (. - _ebase_address) : __vector_offset_default);
  933. KEEP(*(.vector_170))
  934. __vector_offset_171 = (DEFINED(__vector_dispatch_171) ? (. - _ebase_address) : __vector_offset_default);
  935. KEEP(*(.vector_171))
  936. __vector_offset_172 = (DEFINED(__vector_dispatch_172) ? (. - _ebase_address) : __vector_offset_default);
  937. KEEP(*(.vector_172))
  938. __vector_offset_173 = (DEFINED(__vector_dispatch_173) ? (. - _ebase_address) : __vector_offset_default);
  939. KEEP(*(.vector_173))
  940. __vector_offset_174 = (DEFINED(__vector_dispatch_174) ? (. - _ebase_address) : __vector_offset_default);
  941. KEEP(*(.vector_174))
  942. __vector_offset_175 = (DEFINED(__vector_dispatch_175) ? (. - _ebase_address) : __vector_offset_default);
  943. KEEP(*(.vector_175))
  944. __vector_offset_176 = (DEFINED(__vector_dispatch_176) ? (. - _ebase_address) : __vector_offset_default);
  945. KEEP(*(.vector_176))
  946. __vector_offset_177 = (DEFINED(__vector_dispatch_177) ? (. - _ebase_address) : __vector_offset_default);
  947. KEEP(*(.vector_177))
  948. __vector_offset_178 = (DEFINED(__vector_dispatch_178) ? (. - _ebase_address) : __vector_offset_default);
  949. KEEP(*(.vector_178))
  950. __vector_offset_179 = (DEFINED(__vector_dispatch_179) ? (. - _ebase_address) : __vector_offset_default);
  951. KEEP(*(.vector_179))
  952. __vector_offset_180 = (DEFINED(__vector_dispatch_180) ? (. - _ebase_address) : __vector_offset_default);
  953. KEEP(*(.vector_180))
  954. __vector_offset_181 = (DEFINED(__vector_dispatch_181) ? (. - _ebase_address) : __vector_offset_default);
  955. KEEP(*(.vector_181))
  956. __vector_offset_182 = (DEFINED(__vector_dispatch_182) ? (. - _ebase_address) : __vector_offset_default);
  957. KEEP(*(.vector_182))
  958. __vector_offset_183 = (DEFINED(__vector_dispatch_183) ? (. - _ebase_address) : __vector_offset_default);
  959. KEEP(*(.vector_183))
  960. __vector_offset_184 = (DEFINED(__vector_dispatch_184) ? (. - _ebase_address) : __vector_offset_default);
  961. KEEP(*(.vector_184))
  962. __vector_offset_185 = (DEFINED(__vector_dispatch_185) ? (. - _ebase_address) : __vector_offset_default);
  963. KEEP(*(.vector_185))
  964. __vector_offset_186 = (DEFINED(__vector_dispatch_186) ? (. - _ebase_address) : __vector_offset_default);
  965. KEEP(*(.vector_186))
  966. __vector_offset_187 = (DEFINED(__vector_dispatch_187) ? (. - _ebase_address) : __vector_offset_default);
  967. KEEP(*(.vector_187))
  968. __vector_offset_188 = (DEFINED(__vector_dispatch_188) ? (. - _ebase_address) : __vector_offset_default);
  969. KEEP(*(.vector_188))
  970. __vector_offset_189 = (DEFINED(__vector_dispatch_189) ? (. - _ebase_address) : __vector_offset_default);
  971. KEEP(*(.vector_189))
  972. __vector_offset_190 = (DEFINED(__vector_dispatch_190) ? (. - _ebase_address) : __vector_offset_default);
  973. KEEP(*(.vector_190))
  974. __vector_offset_191 = (DEFINED(__vector_dispatch_191) ? (. - _ebase_address) : __vector_offset_default);
  975. KEEP(*(.vector_191))
  976. __vector_offset_192 = (DEFINED(__vector_dispatch_192) ? (. - _ebase_address) : __vector_offset_default);
  977. KEEP(*(.vector_192))
  978. __vector_offset_193 = (DEFINED(__vector_dispatch_193) ? (. - _ebase_address) : __vector_offset_default);
  979. KEEP(*(.vector_193))
  980. __vector_offset_194 = (DEFINED(__vector_dispatch_194) ? (. - _ebase_address) : __vector_offset_default);
  981. KEEP(*(.vector_194))
  982. __vector_offset_195 = (DEFINED(__vector_dispatch_195) ? (. - _ebase_address) : __vector_offset_default);
  983. KEEP(*(.vector_195))
  984. __vector_offset_196 = (DEFINED(__vector_dispatch_196) ? (. - _ebase_address) : __vector_offset_default);
  985. KEEP(*(.vector_196))
  986. __vector_offset_197 = (DEFINED(__vector_dispatch_197) ? (. - _ebase_address) : __vector_offset_default);
  987. KEEP(*(.vector_197))
  988. __vector_offset_198 = (DEFINED(__vector_dispatch_198) ? (. - _ebase_address) : __vector_offset_default);
  989. KEEP(*(.vector_198))
  990. __vector_offset_199 = (DEFINED(__vector_dispatch_199) ? (. - _ebase_address) : __vector_offset_default);
  991. KEEP(*(.vector_199))
  992. __vector_offset_200 = (DEFINED(__vector_dispatch_200) ? (. - _ebase_address) : __vector_offset_default);
  993. KEEP(*(.vector_200))
  994. __vector_offset_201 = (DEFINED(__vector_dispatch_201) ? (. - _ebase_address) : __vector_offset_default);
  995. KEEP(*(.vector_201))
  996. __vector_offset_202 = (DEFINED(__vector_dispatch_202) ? (. - _ebase_address) : __vector_offset_default);
  997. KEEP(*(.vector_202))
  998. __vector_offset_203 = (DEFINED(__vector_dispatch_203) ? (. - _ebase_address) : __vector_offset_default);
  999. KEEP(*(.vector_203))
  1000. __vector_offset_204 = (DEFINED(__vector_dispatch_204) ? (. - _ebase_address) : __vector_offset_default);
  1001. KEEP(*(.vector_204))
  1002. __vector_offset_205 = (DEFINED(__vector_dispatch_205) ? (. - _ebase_address) : __vector_offset_default);
  1003. KEEP(*(.vector_205))
  1004. __vector_offset_206 = (DEFINED(__vector_dispatch_206) ? (. - _ebase_address) : __vector_offset_default);
  1005. KEEP(*(.vector_206))
  1006. __vector_offset_207 = (DEFINED(__vector_dispatch_207) ? (. - _ebase_address) : __vector_offset_default);
  1007. KEEP(*(.vector_207))
  1008. __vector_offset_208 = (DEFINED(__vector_dispatch_208) ? (. - _ebase_address) : __vector_offset_default);
  1009. KEEP(*(.vector_208))
  1010. __vector_offset_209 = (DEFINED(__vector_dispatch_209) ? (. - _ebase_address) : __vector_offset_default);
  1011. KEEP(*(.vector_209))
  1012. __vector_offset_210 = (DEFINED(__vector_dispatch_210) ? (. - _ebase_address) : __vector_offset_default);
  1013. KEEP(*(.vector_210))
  1014. __vector_offset_211 = (DEFINED(__vector_dispatch_211) ? (. - _ebase_address) : __vector_offset_default);
  1015. KEEP(*(.vector_211))
  1016. __vector_offset_212 = (DEFINED(__vector_dispatch_212) ? (. - _ebase_address) : __vector_offset_default);
  1017. KEEP(*(.vector_212))
  1018. __vector_offset_213 = (DEFINED(__vector_dispatch_213) ? (. - _ebase_address) : __vector_offset_default);
  1019. KEEP(*(.vector_213))
  1020. __vector_offset_214 = (DEFINED(__vector_dispatch_214) ? (. - _ebase_address) : __vector_offset_default);
  1021. KEEP(*(.vector_214))
  1022. __vector_offset_215 = (DEFINED(__vector_dispatch_215) ? (. - _ebase_address) : __vector_offset_default);
  1023. KEEP(*(.vector_215))
  1024. __vector_offset_216 = (DEFINED(__vector_dispatch_216) ? (. - _ebase_address) : __vector_offset_default);
  1025. KEEP(*(.vector_216))
  1026. __vector_offset_217 = (DEFINED(__vector_dispatch_217) ? (. - _ebase_address) : __vector_offset_default);
  1027. KEEP(*(.vector_217))
  1028. __vector_offset_218 = (DEFINED(__vector_dispatch_218) ? (. - _ebase_address) : __vector_offset_default);
  1029. KEEP(*(.vector_218))
  1030. __vector_offset_219 = (DEFINED(__vector_dispatch_219) ? (. - _ebase_address) : __vector_offset_default);
  1031. KEEP(*(.vector_219))
  1032. __vector_offset_220 = (DEFINED(__vector_dispatch_220) ? (. - _ebase_address) : __vector_offset_default);
  1033. KEEP(*(.vector_220))
  1034. __vector_offset_221 = (DEFINED(__vector_dispatch_221) ? (. - _ebase_address) : __vector_offset_default);
  1035. KEEP(*(.vector_221))
  1036. __vector_offset_222 = (DEFINED(__vector_dispatch_222) ? (. - _ebase_address) : __vector_offset_default);
  1037. KEEP(*(.vector_222))
  1038. __vector_offset_223 = (DEFINED(__vector_dispatch_223) ? (. - _ebase_address) : __vector_offset_default);
  1039. KEEP(*(.vector_223))
  1040. __vector_offset_224 = (DEFINED(__vector_dispatch_224) ? (. - _ebase_address) : __vector_offset_default);
  1041. KEEP(*(.vector_224))
  1042. __vector_offset_225 = (DEFINED(__vector_dispatch_225) ? (. - _ebase_address) : __vector_offset_default);
  1043. KEEP(*(.vector_225))
  1044. __vector_offset_226 = (DEFINED(__vector_dispatch_226) ? (. - _ebase_address) : __vector_offset_default);
  1045. KEEP(*(.vector_226))
  1046. __vector_offset_227 = (DEFINED(__vector_dispatch_227) ? (. - _ebase_address) : __vector_offset_default);
  1047. KEEP(*(.vector_227))
  1048. __vector_offset_228 = (DEFINED(__vector_dispatch_228) ? (. - _ebase_address) : __vector_offset_default);
  1049. KEEP(*(.vector_228))
  1050. __vector_offset_229 = (DEFINED(__vector_dispatch_229) ? (. - _ebase_address) : __vector_offset_default);
  1051. KEEP(*(.vector_229))
  1052. __vector_offset_230 = (DEFINED(__vector_dispatch_230) ? (. - _ebase_address) : __vector_offset_default);
  1053. KEEP(*(.vector_230))
  1054. __vector_offset_231 = (DEFINED(__vector_dispatch_231) ? (. - _ebase_address) : __vector_offset_default);
  1055. KEEP(*(.vector_231))
  1056. __vector_offset_232 = (DEFINED(__vector_dispatch_232) ? (. - _ebase_address) : __vector_offset_default);
  1057. KEEP(*(.vector_232))
  1058. __vector_offset_233 = (DEFINED(__vector_dispatch_233) ? (. - _ebase_address) : __vector_offset_default);
  1059. KEEP(*(.vector_233))
  1060. __vector_offset_234 = (DEFINED(__vector_dispatch_234) ? (. - _ebase_address) : __vector_offset_default);
  1061. KEEP(*(.vector_234))
  1062. __vector_offset_235 = (DEFINED(__vector_dispatch_235) ? (. - _ebase_address) : __vector_offset_default);
  1063. KEEP(*(.vector_235))
  1064. __vector_offset_236 = (DEFINED(__vector_dispatch_236) ? (. - _ebase_address) : __vector_offset_default);
  1065. KEEP(*(.vector_236))
  1066. __vector_offset_237 = (DEFINED(__vector_dispatch_237) ? (. - _ebase_address) : __vector_offset_default);
  1067. KEEP(*(.vector_237))
  1068. __vector_offset_238 = (DEFINED(__vector_dispatch_238) ? (. - _ebase_address) : __vector_offset_default);
  1069. KEEP(*(.vector_238))
  1070. __vector_offset_239 = (DEFINED(__vector_dispatch_239) ? (. - _ebase_address) : __vector_offset_default);
  1071. KEEP(*(.vector_239))
  1072. __vector_offset_240 = (DEFINED(__vector_dispatch_240) ? (. - _ebase_address) : __vector_offset_default);
  1073. KEEP(*(.vector_240))
  1074. __vector_offset_241 = (DEFINED(__vector_dispatch_241) ? (. - _ebase_address) : __vector_offset_default);
  1075. KEEP(*(.vector_241))
  1076. __vector_offset_242 = (DEFINED(__vector_dispatch_242) ? (. - _ebase_address) : __vector_offset_default);
  1077. KEEP(*(.vector_242))
  1078. __vector_offset_243 = (DEFINED(__vector_dispatch_243) ? (. - _ebase_address) : __vector_offset_default);
  1079. KEEP(*(.vector_243))
  1080. __vector_offset_244 = (DEFINED(__vector_dispatch_244) ? (. - _ebase_address) : __vector_offset_default);
  1081. KEEP(*(.vector_244))
  1082. __vector_offset_245 = (DEFINED(__vector_dispatch_245) ? (. - _ebase_address) : __vector_offset_default);
  1083. KEEP(*(.vector_245))
  1084. __vector_offset_246 = (DEFINED(__vector_dispatch_246) ? (. - _ebase_address) : __vector_offset_default);
  1085. KEEP(*(.vector_246))
  1086. __vector_offset_247 = (DEFINED(__vector_dispatch_247) ? (. - _ebase_address) : __vector_offset_default);
  1087. KEEP(*(.vector_247))
  1088. __vector_offset_248 = (DEFINED(__vector_dispatch_248) ? (. - _ebase_address) : __vector_offset_default);
  1089. KEEP(*(.vector_248))
  1090. __vector_offset_249 = (DEFINED(__vector_dispatch_249) ? (. - _ebase_address) : __vector_offset_default);
  1091. KEEP(*(.vector_249))
  1092. __vector_offset_250 = (DEFINED(__vector_dispatch_250) ? (. - _ebase_address) : __vector_offset_default);
  1093. KEEP(*(.vector_250))
  1094. __vector_offset_251 = (DEFINED(__vector_dispatch_251) ? (. - _ebase_address) : __vector_offset_default);
  1095. KEEP(*(.vector_251))
  1096. __vector_offset_252 = (DEFINED(__vector_dispatch_252) ? (. - _ebase_address) : __vector_offset_default);
  1097. KEEP(*(.vector_252))
  1098. __vector_offset_253 = (DEFINED(__vector_dispatch_253) ? (. - _ebase_address) : __vector_offset_default);
  1099. KEEP(*(.vector_253))
  1100. __vector_offset_254 = (DEFINED(__vector_dispatch_254) ? (. - _ebase_address) : __vector_offset_default);
  1101. KEEP(*(.vector_254))
  1102. __vector_offset_255 = (DEFINED(__vector_dispatch_255) ? (. - _ebase_address) : __vector_offset_default);
  1103. KEEP(*(.vector_255))
  1104. /* Default interrupt handler */
  1105. __vector_offset_default = . - _ebase_address;
  1106. KEEP(*(.vector_default))
  1107. } > kseg0_program_mem
  1108.  
  1109. /* The startup code is in the .reset.startup section.
  1110. * Keep this here for backwards compatibility with older
  1111. * C32 v1.xx releases.
  1112. */
  1113. .startup ORIGIN(kseg0_boot_mem) :
  1114. {
  1115. KEEP(*(.startup))
  1116. } > kseg0_boot_mem
  1117. /* Code Sections - Note that input sections *(.text) and *(.text.*)
  1118. ** are not mapped here. The best-fit allocator locates them,
  1119. ** so that .text may flow around absolute sections as needed.
  1120. */
  1121. .text :
  1122. {
  1123. *(.stub .gnu.linkonce.t.*)
  1124. KEEP (*(.text.*personality*))
  1125. *(.mips16.fn.*)
  1126. *(.mips16.call.*)
  1127. *(.gnu.warning)
  1128. . = ALIGN(4) ;
  1129. } >kseg0_program_mem
  1130. /* Global-namespace object initialization */
  1131. .init :
  1132. {
  1133. KEEP (*crti.o(.init))
  1134. KEEP (*crtbegin.o(.init))
  1135. KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *crtn.o ).init))
  1136. KEEP (*crtend.o(.init))
  1137. KEEP (*crtn.o(.init))
  1138. . = ALIGN(4) ;
  1139. } >kseg0_program_mem
  1140. .fini :
  1141. {
  1142. KEEP (*(.fini))
  1143. . = ALIGN(4) ;
  1144. } >kseg0_program_mem
  1145. .preinit_array :
  1146. {
  1147. PROVIDE_HIDDEN (__preinit_array_start = .);
  1148. KEEP (*(.preinit_array))
  1149. PROVIDE_HIDDEN (__preinit_array_end = .);
  1150. . = ALIGN(4) ;
  1151. } >kseg0_program_mem
  1152. .init_array :
  1153. {
  1154. PROVIDE_HIDDEN (__init_array_start = .);
  1155. KEEP (*(SORT(.init_array.*)))
  1156. KEEP (*(.init_array))
  1157. PROVIDE_HIDDEN (__init_array_end = .);
  1158. . = ALIGN(4) ;
  1159. } >kseg0_program_mem
  1160. .fini_array :
  1161. {
  1162. PROVIDE_HIDDEN (__fini_array_start = .);
  1163. KEEP (*(SORT(.fini_array.*)))
  1164. KEEP (*(.fini_array))
  1165. PROVIDE_HIDDEN (__fini_array_end = .);
  1166. . = ALIGN(4) ;
  1167. } >kseg0_program_mem
  1168. .ctors :
  1169. {
  1170. /* XC32 uses crtbegin.o to find the start of
  1171. the constructors, so we make sure it is
  1172. first. Because this is a wildcard, it
  1173. doesn't matter if the user does not
  1174. actually link against crtbegin.o; the
  1175. linker won't look for a file to match a
  1176. wildcard. The wildcard also means that it
  1177. doesn't matter which directory crtbegin.o
  1178. is in. */
  1179. KEEP (*crtbegin.o(.ctors))
  1180. KEEP (*crtbegin?.o(.ctors))
  1181. /* We don't want to include the .ctor section from
  1182. the crtend.o file until after the sorted ctors.
  1183. The .ctor section from the crtend file contains the
  1184. end of ctors marker and it must be last */
  1185. KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
  1186. KEEP (*(SORT(.ctors.*)))
  1187. KEEP (*(.ctors))
  1188. . = ALIGN(4) ;
  1189. } >kseg0_program_mem
  1190. .dtors :
  1191. {
  1192. KEEP (*crtbegin.o(.dtors))
  1193. KEEP (*crtbegin?.o(.dtors))
  1194. KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
  1195. KEEP (*(SORT(.dtors.*)))
  1196. KEEP (*(.dtors))
  1197. . = ALIGN(4) ;
  1198. } >kseg0_program_mem
  1199. /* Read-only sections */
  1200. .rodata :
  1201. {
  1202. *( .gnu.linkonce.r.*)
  1203. *(.rodata1)
  1204. . = ALIGN(4) ;
  1205. } >kseg0_program_mem
  1206. /*
  1207. * Small initialized constant global and static data can be placed in the
  1208. * .sdata2 section. This is different from .sdata, which contains small
  1209. * initialized non-constant global and static data.
  1210. */
  1211. .sdata2 ALIGN(4) :
  1212. {
  1213. *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
  1214. . = ALIGN(4) ;
  1215. } >kseg0_program_mem
  1216. /*
  1217. * Uninitialized constant global and static data (i.e., variables which will
  1218. * always be zero). Again, this is different from .sbss, which contains
  1219. * small non-initialized, non-constant global and static data.
  1220. */
  1221. .sbss2 ALIGN(4) :
  1222. {
  1223. *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
  1224. . = ALIGN(4) ;
  1225. } >kseg0_program_mem
  1226. .eh_frame_hdr :
  1227. {
  1228. *(.eh_frame_hdr)
  1229. } >kseg0_program_mem
  1230. . = ALIGN(4) ;
  1231. .eh_frame : ONLY_IF_RO
  1232. {
  1233. KEEP (*(.eh_frame))
  1234. } >kseg0_program_mem
  1235. . = ALIGN(4) ;
  1236. .gcc_except_table : ONLY_IF_RO
  1237. {
  1238. *(.gcc_except_table .gcc_except_table.*)
  1239. } >kseg0_program_mem
  1240. . = ALIGN(4) ;
  1241. .dbg_data (NOLOAD) :
  1242. {
  1243. . += (DEFINED (_DEBUGGER) ? 0x200 : 0x0);
  1244. /* Additional data memory required for DSPr2 registers */
  1245. . += (DEFINED (_DEBUGGER) ? 0x80 : 0x0);
  1246. } >kseg0_data_mem
  1247. .jcr :
  1248. {
  1249. KEEP (*(.jcr))
  1250. . = ALIGN(4) ;
  1251. } >kseg0_data_mem
  1252. .eh_frame : ONLY_IF_RW
  1253. {
  1254. KEEP (*(.eh_frame))
  1255. } >kseg0_data_mem
  1256. . = ALIGN(4) ;
  1257. .gcc_except_table : ONLY_IF_RW
  1258. {
  1259. *(.gcc_except_table .gcc_except_table.*)
  1260. } >kseg0_data_mem
  1261. . = ALIGN(4) ;
  1262. /* Persistent data - Use the new C 'persistent' attribute instead. */
  1263. .persist :
  1264. {
  1265. _persist_begin = .;
  1266. *(.persist .persist.*)
  1267. *(.pbss .pbss.*)
  1268. . = ALIGN(4) ;
  1269. _persist_end = .;
  1270. } >kseg0_data_mem
  1271. /*
  1272. * Note that input sections named .data* are not mapped here.
  1273. * The best-fit allocator locates them, so that they may flow
  1274. * around absolute sections as needed.
  1275. */
  1276. .data :
  1277. {
  1278. *( .gnu.linkonce.d.*)
  1279. SORT(CONSTRUCTORS)
  1280. *(.data1)
  1281. . = ALIGN(4) ;
  1282. } >kseg0_data_mem
  1283. . = .;
  1284. _gp = ALIGN(16) + 0x7ff0;
  1285. .got ALIGN(4) :
  1286. {
  1287. *(.got.plt) *(.got)
  1288. . = ALIGN(4) ;
  1289. } >kseg0_data_mem /* AT>kseg0_program_mem */
  1290. /*
  1291. * Note that 'small' data sections are still mapped in the linker
  1292. * script. This ensures that they are grouped together for
  1293. * gp-relative addressing. Absolute sections are allocated after
  1294. * the 'small' data sections so small data cannot flow around them.
  1295. */
  1296. /*
  1297. * We want the small data sections together, so single-instruction offsets
  1298. * can access them all, and initialized data all before uninitialized, so
  1299. * we can shorten the on-disk segment size.
  1300. */
  1301. .sdata ALIGN(4) :
  1302. {
  1303. _sdata_begin = . ;
  1304. *(.sdata .sdata.* .gnu.linkonce.s.*)
  1305. . = ALIGN(4) ;
  1306. _sdata_end = . ;
  1307. } >kseg0_data_mem
  1308. .lit8 :
  1309. {
  1310. *(.lit8)
  1311. } >kseg0_data_mem
  1312. .lit4 :
  1313. {
  1314. *(.lit4)
  1315. } >kseg0_data_mem
  1316. . = ALIGN (4) ;
  1317. _data_end = . ;
  1318. _bss_begin = . ;
  1319. .sbss ALIGN(4) :
  1320. {
  1321. _sbss_begin = . ;
  1322. *(.dynsbss)
  1323. *(.sbss .sbss.* .gnu.linkonce.sb.*)
  1324. *(.scommon)
  1325. _sbss_end = . ;
  1326. . = ALIGN(4) ;
  1327. } >kseg0_data_mem
  1328. /*
  1329. * Align here to ensure that the .bss section occupies space up to
  1330. * _end. Align after .bss to ensure correct alignment even if the
  1331. * .bss section disappears because there are no input sections.
  1332. *
  1333. * Note that input sections named .bss* are no longer mapped here.
  1334. * The best-fit allocator locates them, so that they may flow
  1335. * around absolute sections as needed.
  1336. *
  1337. */
  1338. .bss :
  1339. {
  1340. *(.dynbss)
  1341. *(COMMON)
  1342. /* Align here to ensure that the .bss section occupies space up to
  1343. _end. Align after .bss to ensure correct alignment even if the
  1344. .bss section disappears because there are no input sections. */
  1345. . = ALIGN(. != 0 ? 4 : 1);
  1346. } >kseg0_data_mem
  1347. . = ALIGN(4) ;
  1348. _end = . ;
  1349. _bss_end = . ;
  1350. /*
  1351. * The heap and stack are best-fit allocated by the linker after other
  1352. * data and bss sections have been allocated.
  1353. */
  1354. /*
  1355. * RAM functions go at the end of our stack and heap allocation.
  1356. * Alignment of 2K required by the boundary register (BMXDKPBA).
  1357. *
  1358. * RAM functions are now allocated by the linker. The linker generates
  1359. * _ramfunc_begin and _bmxdkpba_address symbols depending on the
  1360. * location of RAM functions.
  1361. */
  1362. _bmxdudba_address = LENGTH(kseg0_data_mem) ;
  1363. _bmxdupba_address = LENGTH(kseg0_data_mem) ;
  1364. /* The .pdr section belongs in the absolute section */
  1365. /DISCARD/ : { *(.pdr) }
  1366. .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
  1367. .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
  1368. .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
  1369. .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
  1370. .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
  1371. .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
  1372. .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
  1373. .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
  1374. .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
  1375. .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
  1376. /* Stabs debugging sections. */
  1377. .stab 0 : { *(.stab) }
  1378. .stabstr 0 : { *(.stabstr) }
  1379. .stab.excl 0 : { *(.stab.excl) }
  1380. .stab.exclstr 0 : { *(.stab.exclstr) }
  1381. .stab.index 0 : { *(.stab.index) }
  1382. .stab.indexstr 0 : { *(.stab.indexstr) }
  1383. .comment 0 : { *(.comment) }
  1384. /* DWARF debug sections used by MPLAB X for source-level debugging.
  1385. Symbols in the DWARF debugging sections are relative to the beginning
  1386. of the section so we begin them at 0. */
  1387. /* DWARF 1 */
  1388. .debug 0 : { *(.debug) }
  1389. .line 0 : { *(.line) }
  1390. /* GNU DWARF 1 extensions */
  1391. .debug_srcinfo 0 : { *(.debug_srcinfo) }
  1392. .debug_sfnames 0 : { *(.debug_sfnames) }
  1393. /* DWARF 1.1 and DWARF 2 */
  1394. .debug_aranges 0 : { *(.debug_aranges) }
  1395. .debug_pubnames 0 : { *(.debug_pubnames) }
  1396. /* DWARF 2 */
  1397. .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) }
  1398. .debug_abbrev 0 : { *(.debug_abbrev) }
  1399. .debug_line 0 : { *(.debug_line) }
  1400. .debug_frame 0 : { *(.debug_frame) }
  1401. .debug_str 0 : { *(.debug_str) }
  1402. .debug_loc 0 : { *(.debug_loc) }
  1403. .debug_macinfo 0 : { *(.debug_macinfo) }
  1404. /* SGI/MIPS DWARF 2 extensions */
  1405. .debug_weaknames 0 : { *(.debug_weaknames) }
  1406. .debug_funcnames 0 : { *(.debug_funcnames) }
  1407. .debug_typenames 0 : { *(.debug_typenames) }
  1408. .debug_varnames 0 : { *(.debug_varnames) }
  1409. .debug_pubtypes 0 : { *(.debug_pubtypes) }
  1410. .debug_ranges 0 : { *(.debug_ranges) }
  1411. /DISCARD/ : { *(.rel.dyn) }
  1412. .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
  1413. /DISCARD/ : { *(.note.GNU-stack) }
  1414. /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.discard) }
  1415. /DISCARD/ : { *(._debug_exception) }
  1416. }
  1417.  
  1418. /*************************************************************************
  1419. * L1 Cache initialization symbols
  1420. *************************************************************************/
  1421. /*
  1422. * Provide virtual addresses for cache initialization
  1423. * These symbols are used by the pic32_init_cache.o module to set up
  1424. * the cache at startup.
  1425. */
  1426. EXTERN (__pic32_init_cache_program_base_addr)
  1427. PROVIDE (__pic32_init_cache_program_base_addr = 0x9D000000) ;
  1428. EXTERN (__pic32_init_cache_data_base_addr)
  1429. PROVIDE (__pic32_init_cache_data_base_addr = 0x80000000) ;
  1430.  
  1431. /*************************************************************************
  1432. * TLB-Based MMU Initialization section for EBI/SQI memory regions
  1433. *************************************************************************/
  1434. /*
  1435. * Provide virtual and physical addresses of the SQI for TLB initialization
  1436. * These symbols are used below to create a table, which is in turn used to
  1437. * initialize the TLB at startup.
  1438. */
  1439. EXTERN (__pic32_init_sqi_kseg2_virtual_base_addr)
  1440. PROVIDE (__pic32_init_sqi_kseg2_virtual_base_addr = 0xD0000000) ;
  1441. EXTERN (__pic32_init_sqi_kseg2_physical_base_addr)
  1442. PROVIDE (__pic32_init_sqi_kseg2_physical_base_addr = 0x30000000) ;
  1443. EXTERN (__pic32_init_sqi_kseg2_entrylo0_bitset)
  1444. PROVIDE (__pic32_init_sqi_kseg2_entrylo0_bitset = 0x1F) ;
  1445.  
  1446. /* ENTRYHI = VPN2<31:13> VPN2X<12:11> 0<10:8> ASID<7:0> */
  1447. __pic32_tlb_0_entryhi = __pic32_init_sqi_kseg2_virtual_base_addr ;
  1448.  
  1449.  
  1450. /* Create one 64MB page table entry consisting of two 32MB physical pages.
  1451. * ENTRYLO0 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0>
  1452. * Shift __pic32_init_sqi_kseg3_physical_base_addr to PFN.
  1453. * Bitwise-OR the other bits of ENTRYLO0.
  1454. */
  1455. __pic32_tlb_0_entrylo0 = (__pic32_init_sqi_kseg2_physical_base_addr >> 6) | __pic32_init_sqi_kseg2_entrylo0_bitset ;
  1456.  
  1457.  
  1458. /* ENTRYLO1 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0> */
  1459. __pic32_tlb_0_entrylo1 = __pic32_tlb_0_entrylo0 | 0x00080000 ;
  1460.  
  1461. EXTERN (__pic32_init_sqi_kseg3_virtual_base_addr)
  1462. PROVIDE (__pic32_init_sqi_kseg3_virtual_base_addr = 0xF0000000) ;
  1463. EXTERN (__pic32_init_sqi_kseg3_physical_base_addr)
  1464. PROVIDE (__pic32_init_sqi_kseg3_physical_base_addr = 0x30000000) ;
  1465. EXTERN (__pic32_init_sqi_kseg3_entrylo0_bitset)
  1466. PROVIDE (__pic32_init_sqi_kseg3_entrylo0_bitset = 0x17) ;
  1467.  
  1468. /* ENTRYHI = VPN2<31:13> VPN2X<12:11> 0<10:8> ASID<7:0> */
  1469. __pic32_tlb_1_entryhi = __pic32_init_sqi_kseg3_virtual_base_addr ;
  1470.  
  1471.  
  1472. /* Create one 64MB page table entry consisting of two 32MB physical pages.
  1473. * ENTRYLO0 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0>
  1474. * Shift __pic32_init_sqi_kseg3_physical_base_addr to PFN.
  1475. * Bitwise-OR the other bits of ENTRYLO0.
  1476. */
  1477. __pic32_tlb_1_entrylo0 = (__pic32_init_sqi_kseg3_physical_base_addr >> 6) | __pic32_init_sqi_kseg3_entrylo0_bitset ;
  1478.  
  1479.  
  1480. /* ENTRYLO1 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0> */
  1481. __pic32_tlb_1_entrylo1 = __pic32_tlb_1_entrylo0 | 0x00080000 ;
  1482. /*
  1483. * The default pic32_init_tlb_ebi_sqi.o module, which is
  1484. * called by the default C startup code (crt0_<isa>.o),
  1485. * uses the table created in the .tlb_init_values output
  1486. * section to initialize the Translation Lookaside buffer (TLB)
  1487. * of the Memory Mangagement Unit (MMU).
  1488. */
  1489. SECTIONS
  1490. {
  1491. .tlb_init_values :
  1492. {
  1493. . = ALIGN(4) ;
  1494. __pic32_tlb_init_values_begin = ABSOLUTE(.);
  1495. LONG(__pic32_tlb_0_entryhi) ;
  1496. LONG(__pic32_tlb_0_entrylo0) ;
  1497. LONG(__pic32_tlb_0_entrylo1) ;
  1498. LONG(__pic32_tlb_1_entryhi) ;
  1499. LONG(__pic32_tlb_1_entrylo0) ;
  1500. LONG(__pic32_tlb_1_entrylo1) ;
  1501. __pic32_tlb_init_values_end = ABSOLUTE(.);
  1502. __pic32_tlb_init_values_count = 2 ;
  1503. } > kseg1_boot_mem_4B0
  1504.  
  1505. .fill1 :
  1506. {
  1507. FILL(0xFF);
  1508. . = ORIGIN(protected_reg3) + LENGTH(protected_reg3) - 1;
  1509. BYTE(0xFF)
  1510.  
  1511. } > protected_reg3
  1512.  
  1513. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement