Advertisement
Guest User

XC32 Harmony V1.9 Application Linker Script

a guest
Feb 8th, 2017
419
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 54.87 KB | None | 0 0
  1. /*--------------------------------------------------------------------------
  2.  * MPLAB XC Compiler -  PIC32MZ Application 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 applications programmed through a bootloader */
  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 = 0x9D001000);
  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. _RESET_ADDR                    = 0x9D000000;
  88. _SIMPLE_TLB_REFILL_EXCPT_ADDR  = _ebase_address + 0;
  89. _CACHE_ERR_EXCPT_ADDR          = _ebase_address + 0x100;
  90. _GEN_EXCPT_ADDR                = _ebase_address + 0x180;
  91.  
  92. /*************************************************************************
  93.  * Memory Regions
  94.  *
  95.  * Memory regions without attributes cannot be used for orphaned sections.
  96.  * Only sections specifically assigned to these regions can be allocated
  97.  * into these regions.
  98.  *
  99.  * The Debug exception vector is located at 0x9FC00480.
  100.  * The config_<address> sections are used to locate the config words at
  101.  * their absolute addresses.
  102.  *************************************************************************/
  103. MEMORY
  104. {
  105.     kseg1_boot_mem          : ORIGIN = 0x9D000000, LENGTH = 0x480
  106.     kseg0_program_mem  (rx) : ORIGIN = 0x9D000000 + 0x480, LENGTH = 0x200000 - 0x480 /* All C files will be located here */
  107.    
  108.     kseg0_boot_mem          : ORIGIN = 0x9D000000, LENGTH = 0x0  
  109.   kseg0_data_mem       (w!x)  : ORIGIN = 0x80000000, LENGTH = 0x80000
  110.   sfrs                        : ORIGIN = 0xBF800000, LENGTH = 0x100000
  111.   kseg2_ebi_data_mem          : ORIGIN = 0xC0000000, LENGTH = 0x4000000
  112.   kseg2_sqi_data_mem          : ORIGIN = 0xD0000000, LENGTH = 0x4000000
  113.   kseg3_ebi_data_mem          : ORIGIN = 0xE0000000, LENGTH = 0x4000000
  114.   kseg3_sqi_data_mem          : ORIGIN = 0xF0000000, LENGTH = 0x4000000
  115. }
  116.  
  117. /*************************************************************************
  118.  * Configuration-word sections. Map the config-pragma input sections to
  119.  * absolute-address output sections.
  120.  *************************************************************************/
  121. SECTIONS
  122. {
  123.   /* Boot Sections */
  124.   .reset _RESET_ADDR :
  125.   {
  126.     KEEP(*(.reset))
  127.     KEEP(*(.reset.startup))
  128.   } > kseg1_boot_mem
  129.   .simple_tlb_refill_excpt _SIMPLE_TLB_REFILL_EXCPT_ADDR :
  130.   {
  131.     KEEP(*(.simple_tlb_refill_vector))
  132.   } > kseg0_program_mem
  133.   .cache_err_excpt _CACHE_ERR_EXCPT_ADDR :
  134.   {
  135.     KEEP(*(.cache_err_vector))
  136.   } > kseg0_program_mem
  137.   .app_excpt _GEN_EXCPT_ADDR :
  138.   {
  139.     KEEP(*(.gen_handler))
  140.   } > kseg0_program_mem
  141.  
  142.   /* Interrupt vector table with vector offsets */
  143.   .vectors _ebase_address + 0x200 :
  144.   {
  145.     /*  Symbol __vector_offset_n points to .vector_n if it exists,
  146.      *  otherwise points to the default handler. The
  147.      *  vector_offset_init.o module then provides a .data section
  148.      *  containing values used to initialize the vector-offset SFRs
  149.      *  in the crt0 startup code.
  150.      */
  151.     __vector_offset_0 = (DEFINED(__vector_dispatch_0) ? (. - _ebase_address) : __vector_offset_default);
  152.     KEEP(*(.vector_0))
  153.     __vector_offset_1 = (DEFINED(__vector_dispatch_1) ? (. - _ebase_address) : __vector_offset_default);
  154.     KEEP(*(.vector_1))
  155.     __vector_offset_2 = (DEFINED(__vector_dispatch_2) ? (. - _ebase_address) : __vector_offset_default);
  156.     KEEP(*(.vector_2))
  157.     __vector_offset_3 = (DEFINED(__vector_dispatch_3) ? (. - _ebase_address) : __vector_offset_default);
  158.     KEEP(*(.vector_3))
  159.     __vector_offset_4 = (DEFINED(__vector_dispatch_4) ? (. - _ebase_address) : __vector_offset_default);
  160.     KEEP(*(.vector_4))
  161.     __vector_offset_5 = (DEFINED(__vector_dispatch_5) ? (. - _ebase_address) : __vector_offset_default);
  162.     KEEP(*(.vector_5))
  163.     __vector_offset_6 = (DEFINED(__vector_dispatch_6) ? (. - _ebase_address) : __vector_offset_default);
  164.     KEEP(*(.vector_6))
  165.     __vector_offset_7 = (DEFINED(__vector_dispatch_7) ? (. - _ebase_address) : __vector_offset_default);
  166.     KEEP(*(.vector_7))
  167.     __vector_offset_8 = (DEFINED(__vector_dispatch_8) ? (. - _ebase_address) : __vector_offset_default);
  168.     KEEP(*(.vector_8))
  169.     __vector_offset_9 = (DEFINED(__vector_dispatch_9) ? (. - _ebase_address) : __vector_offset_default);
  170.     KEEP(*(.vector_9))
  171.     __vector_offset_10 = (DEFINED(__vector_dispatch_10) ? (. - _ebase_address) : __vector_offset_default);
  172.     KEEP(*(.vector_10))
  173.     __vector_offset_11 = (DEFINED(__vector_dispatch_11) ? (. - _ebase_address) : __vector_offset_default);
  174.     KEEP(*(.vector_11))
  175.     __vector_offset_12 = (DEFINED(__vector_dispatch_12) ? (. - _ebase_address) : __vector_offset_default);
  176.     KEEP(*(.vector_12))
  177.     __vector_offset_13 = (DEFINED(__vector_dispatch_13) ? (. - _ebase_address) : __vector_offset_default);
  178.     KEEP(*(.vector_13))
  179.     __vector_offset_14 = (DEFINED(__vector_dispatch_14) ? (. - _ebase_address) : __vector_offset_default);
  180.     KEEP(*(.vector_14))
  181.     __vector_offset_15 = (DEFINED(__vector_dispatch_15) ? (. - _ebase_address) : __vector_offset_default);
  182.     KEEP(*(.vector_15))
  183.     __vector_offset_16 = (DEFINED(__vector_dispatch_16) ? (. - _ebase_address) : __vector_offset_default);
  184.     KEEP(*(.vector_16))
  185.     __vector_offset_17 = (DEFINED(__vector_dispatch_17) ? (. - _ebase_address) : __vector_offset_default);
  186.     KEEP(*(.vector_17))
  187.     __vector_offset_18 = (DEFINED(__vector_dispatch_18) ? (. - _ebase_address) : __vector_offset_default);
  188.     KEEP(*(.vector_18))
  189.     __vector_offset_19 = (DEFINED(__vector_dispatch_19) ? (. - _ebase_address) : __vector_offset_default);
  190.     KEEP(*(.vector_19))
  191.     __vector_offset_20 = (DEFINED(__vector_dispatch_20) ? (. - _ebase_address) : __vector_offset_default);
  192.     KEEP(*(.vector_20))
  193.     __vector_offset_21 = (DEFINED(__vector_dispatch_21) ? (. - _ebase_address) : __vector_offset_default);
  194.     KEEP(*(.vector_21))
  195.     __vector_offset_22 = (DEFINED(__vector_dispatch_22) ? (. - _ebase_address) : __vector_offset_default);
  196.     KEEP(*(.vector_22))
  197.     __vector_offset_23 = (DEFINED(__vector_dispatch_23) ? (. - _ebase_address) : __vector_offset_default);
  198.     KEEP(*(.vector_23))
  199.     __vector_offset_24 = (DEFINED(__vector_dispatch_24) ? (. - _ebase_address) : __vector_offset_default);
  200.     KEEP(*(.vector_24))
  201.     __vector_offset_25 = (DEFINED(__vector_dispatch_25) ? (. - _ebase_address) : __vector_offset_default);
  202.     KEEP(*(.vector_25))
  203.     __vector_offset_26 = (DEFINED(__vector_dispatch_26) ? (. - _ebase_address) : __vector_offset_default);
  204.     KEEP(*(.vector_26))
  205.     __vector_offset_27 = (DEFINED(__vector_dispatch_27) ? (. - _ebase_address) : __vector_offset_default);
  206.     KEEP(*(.vector_27))
  207.     __vector_offset_28 = (DEFINED(__vector_dispatch_28) ? (. - _ebase_address) : __vector_offset_default);
  208.     KEEP(*(.vector_28))
  209.     __vector_offset_29 = (DEFINED(__vector_dispatch_29) ? (. - _ebase_address) : __vector_offset_default);
  210.     KEEP(*(.vector_29))
  211.     __vector_offset_30 = (DEFINED(__vector_dispatch_30) ? (. - _ebase_address) : __vector_offset_default);
  212.     KEEP(*(.vector_30))
  213.     __vector_offset_31 = (DEFINED(__vector_dispatch_31) ? (. - _ebase_address) : __vector_offset_default);
  214.     KEEP(*(.vector_31))
  215.     __vector_offset_32 = (DEFINED(__vector_dispatch_32) ? (. - _ebase_address) : __vector_offset_default);
  216.     KEEP(*(.vector_32))
  217.     __vector_offset_33 = (DEFINED(__vector_dispatch_33) ? (. - _ebase_address) : __vector_offset_default);
  218.     KEEP(*(.vector_33))
  219.     __vector_offset_34 = (DEFINED(__vector_dispatch_34) ? (. - _ebase_address) : __vector_offset_default);
  220.     KEEP(*(.vector_34))
  221.     __vector_offset_35 = (DEFINED(__vector_dispatch_35) ? (. - _ebase_address) : __vector_offset_default);
  222.     KEEP(*(.vector_35))
  223.     __vector_offset_36 = (DEFINED(__vector_dispatch_36) ? (. - _ebase_address) : __vector_offset_default);
  224.     KEEP(*(.vector_36))
  225.     __vector_offset_37 = (DEFINED(__vector_dispatch_37) ? (. - _ebase_address) : __vector_offset_default);
  226.     KEEP(*(.vector_37))
  227.     __vector_offset_38 = (DEFINED(__vector_dispatch_38) ? (. - _ebase_address) : __vector_offset_default);
  228.     KEEP(*(.vector_38))
  229.     __vector_offset_39 = (DEFINED(__vector_dispatch_39) ? (. - _ebase_address) : __vector_offset_default);
  230.     KEEP(*(.vector_39))
  231.     __vector_offset_40 = (DEFINED(__vector_dispatch_40) ? (. - _ebase_address) : __vector_offset_default);
  232.     KEEP(*(.vector_40))
  233.     __vector_offset_41 = (DEFINED(__vector_dispatch_41) ? (. - _ebase_address) : __vector_offset_default);
  234.     KEEP(*(.vector_41))
  235.     __vector_offset_42 = (DEFINED(__vector_dispatch_42) ? (. - _ebase_address) : __vector_offset_default);
  236.     KEEP(*(.vector_42))
  237.     __vector_offset_43 = (DEFINED(__vector_dispatch_43) ? (. - _ebase_address) : __vector_offset_default);
  238.     KEEP(*(.vector_43))
  239.     __vector_offset_44 = (DEFINED(__vector_dispatch_44) ? (. - _ebase_address) : __vector_offset_default);
  240.     KEEP(*(.vector_44))
  241.     __vector_offset_45 = (DEFINED(__vector_dispatch_45) ? (. - _ebase_address) : __vector_offset_default);
  242.     KEEP(*(.vector_45))
  243.     __vector_offset_46 = (DEFINED(__vector_dispatch_46) ? (. - _ebase_address) : __vector_offset_default);
  244.     KEEP(*(.vector_46))
  245.     __vector_offset_47 = (DEFINED(__vector_dispatch_47) ? (. - _ebase_address) : __vector_offset_default);
  246.     KEEP(*(.vector_47))
  247.     __vector_offset_48 = (DEFINED(__vector_dispatch_48) ? (. - _ebase_address) : __vector_offset_default);
  248.     KEEP(*(.vector_48))
  249.     __vector_offset_49 = (DEFINED(__vector_dispatch_49) ? (. - _ebase_address) : __vector_offset_default);
  250.     KEEP(*(.vector_49))
  251.     __vector_offset_50 = (DEFINED(__vector_dispatch_50) ? (. - _ebase_address) : __vector_offset_default);
  252.     KEEP(*(.vector_50))
  253.     __vector_offset_51 = (DEFINED(__vector_dispatch_51) ? (. - _ebase_address) : __vector_offset_default);
  254.     KEEP(*(.vector_51))
  255.     __vector_offset_52 = (DEFINED(__vector_dispatch_52) ? (. - _ebase_address) : __vector_offset_default);
  256.     KEEP(*(.vector_52))
  257.     __vector_offset_53 = (DEFINED(__vector_dispatch_53) ? (. - _ebase_address) : __vector_offset_default);
  258.     KEEP(*(.vector_53))
  259.     __vector_offset_54 = (DEFINED(__vector_dispatch_54) ? (. - _ebase_address) : __vector_offset_default);
  260.     KEEP(*(.vector_54))
  261.     __vector_offset_55 = (DEFINED(__vector_dispatch_55) ? (. - _ebase_address) : __vector_offset_default);
  262.     KEEP(*(.vector_55))
  263.     __vector_offset_56 = (DEFINED(__vector_dispatch_56) ? (. - _ebase_address) : __vector_offset_default);
  264.     KEEP(*(.vector_56))
  265.     __vector_offset_57 = (DEFINED(__vector_dispatch_57) ? (. - _ebase_address) : __vector_offset_default);
  266.     KEEP(*(.vector_57))
  267.     __vector_offset_58 = (DEFINED(__vector_dispatch_58) ? (. - _ebase_address) : __vector_offset_default);
  268.     KEEP(*(.vector_58))
  269.     __vector_offset_59 = (DEFINED(__vector_dispatch_59) ? (. - _ebase_address) : __vector_offset_default);
  270.     KEEP(*(.vector_59))
  271.     __vector_offset_60 = (DEFINED(__vector_dispatch_60) ? (. - _ebase_address) : __vector_offset_default);
  272.     KEEP(*(.vector_60))
  273.     __vector_offset_61 = (DEFINED(__vector_dispatch_61) ? (. - _ebase_address) : __vector_offset_default);
  274.     KEEP(*(.vector_61))
  275.     __vector_offset_62 = (DEFINED(__vector_dispatch_62) ? (. - _ebase_address) : __vector_offset_default);
  276.     KEEP(*(.vector_62))
  277.     __vector_offset_63 = (DEFINED(__vector_dispatch_63) ? (. - _ebase_address) : __vector_offset_default);
  278.     KEEP(*(.vector_63))
  279.     __vector_offset_64 = (DEFINED(__vector_dispatch_64) ? (. - _ebase_address) : __vector_offset_default);
  280.     KEEP(*(.vector_64))
  281.     __vector_offset_65 = (DEFINED(__vector_dispatch_65) ? (. - _ebase_address) : __vector_offset_default);
  282.     KEEP(*(.vector_65))
  283.     __vector_offset_66 = (DEFINED(__vector_dispatch_66) ? (. - _ebase_address) : __vector_offset_default);
  284.     KEEP(*(.vector_66))
  285.     __vector_offset_67 = (DEFINED(__vector_dispatch_67) ? (. - _ebase_address) : __vector_offset_default);
  286.     KEEP(*(.vector_67))
  287.     __vector_offset_68 = (DEFINED(__vector_dispatch_68) ? (. - _ebase_address) : __vector_offset_default);
  288.     KEEP(*(.vector_68))
  289.     __vector_offset_69 = (DEFINED(__vector_dispatch_69) ? (. - _ebase_address) : __vector_offset_default);
  290.     KEEP(*(.vector_69))
  291.     __vector_offset_70 = (DEFINED(__vector_dispatch_70) ? (. - _ebase_address) : __vector_offset_default);
  292.     KEEP(*(.vector_70))
  293.     __vector_offset_71 = (DEFINED(__vector_dispatch_71) ? (. - _ebase_address) : __vector_offset_default);
  294.     KEEP(*(.vector_71))
  295.     __vector_offset_72 = (DEFINED(__vector_dispatch_72) ? (. - _ebase_address) : __vector_offset_default);
  296.     KEEP(*(.vector_72))
  297.     __vector_offset_73 = (DEFINED(__vector_dispatch_73) ? (. - _ebase_address) : __vector_offset_default);
  298.     KEEP(*(.vector_73))
  299.     __vector_offset_74 = (DEFINED(__vector_dispatch_74) ? (. - _ebase_address) : __vector_offset_default);
  300.     KEEP(*(.vector_74))
  301.     __vector_offset_75 = (DEFINED(__vector_dispatch_75) ? (. - _ebase_address) : __vector_offset_default);
  302.     KEEP(*(.vector_75))
  303.     __vector_offset_76 = (DEFINED(__vector_dispatch_76) ? (. - _ebase_address) : __vector_offset_default);
  304.     KEEP(*(.vector_76))
  305.     __vector_offset_77 = (DEFINED(__vector_dispatch_77) ? (. - _ebase_address) : __vector_offset_default);
  306.     KEEP(*(.vector_77))
  307.     __vector_offset_78 = (DEFINED(__vector_dispatch_78) ? (. - _ebase_address) : __vector_offset_default);
  308.     KEEP(*(.vector_78))
  309.     __vector_offset_79 = (DEFINED(__vector_dispatch_79) ? (. - _ebase_address) : __vector_offset_default);
  310.     KEEP(*(.vector_79))
  311.     __vector_offset_80 = (DEFINED(__vector_dispatch_80) ? (. - _ebase_address) : __vector_offset_default);
  312.     KEEP(*(.vector_80))
  313.     __vector_offset_81 = (DEFINED(__vector_dispatch_81) ? (. - _ebase_address) : __vector_offset_default);
  314.     KEEP(*(.vector_81))
  315.     __vector_offset_82 = (DEFINED(__vector_dispatch_82) ? (. - _ebase_address) : __vector_offset_default);
  316.     KEEP(*(.vector_82))
  317.     __vector_offset_83 = (DEFINED(__vector_dispatch_83) ? (. - _ebase_address) : __vector_offset_default);
  318.     KEEP(*(.vector_83))
  319.     __vector_offset_84 = (DEFINED(__vector_dispatch_84) ? (. - _ebase_address) : __vector_offset_default);
  320.     KEEP(*(.vector_84))
  321.     __vector_offset_85 = (DEFINED(__vector_dispatch_85) ? (. - _ebase_address) : __vector_offset_default);
  322.     KEEP(*(.vector_85))
  323.     __vector_offset_86 = (DEFINED(__vector_dispatch_86) ? (. - _ebase_address) : __vector_offset_default);
  324.     KEEP(*(.vector_86))
  325.     __vector_offset_87 = (DEFINED(__vector_dispatch_87) ? (. - _ebase_address) : __vector_offset_default);
  326.     KEEP(*(.vector_87))
  327.     __vector_offset_88 = (DEFINED(__vector_dispatch_88) ? (. - _ebase_address) : __vector_offset_default);
  328.     KEEP(*(.vector_88))
  329.     __vector_offset_89 = (DEFINED(__vector_dispatch_89) ? (. - _ebase_address) : __vector_offset_default);
  330.     KEEP(*(.vector_89))
  331.     __vector_offset_90 = (DEFINED(__vector_dispatch_90) ? (. - _ebase_address) : __vector_offset_default);
  332.     KEEP(*(.vector_90))
  333.     __vector_offset_91 = (DEFINED(__vector_dispatch_91) ? (. - _ebase_address) : __vector_offset_default);
  334.     KEEP(*(.vector_91))
  335.     __vector_offset_92 = (DEFINED(__vector_dispatch_92) ? (. - _ebase_address) : __vector_offset_default);
  336.     KEEP(*(.vector_92))
  337.     __vector_offset_93 = (DEFINED(__vector_dispatch_93) ? (. - _ebase_address) : __vector_offset_default);
  338.     KEEP(*(.vector_93))
  339.     __vector_offset_94 = (DEFINED(__vector_dispatch_94) ? (. - _ebase_address) : __vector_offset_default);
  340.     KEEP(*(.vector_94))
  341.     __vector_offset_95 = (DEFINED(__vector_dispatch_95) ? (. - _ebase_address) : __vector_offset_default);
  342.     KEEP(*(.vector_95))
  343.     __vector_offset_96 = (DEFINED(__vector_dispatch_96) ? (. - _ebase_address) : __vector_offset_default);
  344.     KEEP(*(.vector_96))
  345.     __vector_offset_97 = (DEFINED(__vector_dispatch_97) ? (. - _ebase_address) : __vector_offset_default);
  346.     KEEP(*(.vector_97))
  347.     __vector_offset_98 = (DEFINED(__vector_dispatch_98) ? (. - _ebase_address) : __vector_offset_default);
  348.     KEEP(*(.vector_98))
  349.     __vector_offset_99 = (DEFINED(__vector_dispatch_99) ? (. - _ebase_address) : __vector_offset_default);
  350.     KEEP(*(.vector_99))
  351.     __vector_offset_100 = (DEFINED(__vector_dispatch_100) ? (. - _ebase_address) : __vector_offset_default);
  352.     KEEP(*(.vector_100))
  353.     __vector_offset_101 = (DEFINED(__vector_dispatch_101) ? (. - _ebase_address) : __vector_offset_default);
  354.     KEEP(*(.vector_101))
  355.     __vector_offset_102 = (DEFINED(__vector_dispatch_102) ? (. - _ebase_address) : __vector_offset_default);
  356.     KEEP(*(.vector_102))
  357.     __vector_offset_103 = (DEFINED(__vector_dispatch_103) ? (. - _ebase_address) : __vector_offset_default);
  358.     KEEP(*(.vector_103))
  359.     __vector_offset_104 = (DEFINED(__vector_dispatch_104) ? (. - _ebase_address) : __vector_offset_default);
  360.     KEEP(*(.vector_104))
  361.     __vector_offset_105 = (DEFINED(__vector_dispatch_105) ? (. - _ebase_address) : __vector_offset_default);
  362.     KEEP(*(.vector_105))
  363.     __vector_offset_106 = (DEFINED(__vector_dispatch_106) ? (. - _ebase_address) : __vector_offset_default);
  364.     KEEP(*(.vector_106))
  365.     __vector_offset_107 = (DEFINED(__vector_dispatch_107) ? (. - _ebase_address) : __vector_offset_default);
  366.     KEEP(*(.vector_107))
  367.     __vector_offset_108 = (DEFINED(__vector_dispatch_108) ? (. - _ebase_address) : __vector_offset_default);
  368.     KEEP(*(.vector_108))
  369.     __vector_offset_109 = (DEFINED(__vector_dispatch_109) ? (. - _ebase_address) : __vector_offset_default);
  370.     KEEP(*(.vector_109))
  371.     __vector_offset_110 = (DEFINED(__vector_dispatch_110) ? (. - _ebase_address) : __vector_offset_default);
  372.     KEEP(*(.vector_110))
  373.     __vector_offset_111 = (DEFINED(__vector_dispatch_111) ? (. - _ebase_address) : __vector_offset_default);
  374.     KEEP(*(.vector_111))
  375.     __vector_offset_112 = (DEFINED(__vector_dispatch_112) ? (. - _ebase_address) : __vector_offset_default);
  376.     KEEP(*(.vector_112))
  377.     __vector_offset_113 = (DEFINED(__vector_dispatch_113) ? (. - _ebase_address) : __vector_offset_default);
  378.     KEEP(*(.vector_113))
  379.     __vector_offset_114 = (DEFINED(__vector_dispatch_114) ? (. - _ebase_address) : __vector_offset_default);
  380.     KEEP(*(.vector_114))
  381.     __vector_offset_115 = (DEFINED(__vector_dispatch_115) ? (. - _ebase_address) : __vector_offset_default);
  382.     KEEP(*(.vector_115))
  383.     __vector_offset_116 = (DEFINED(__vector_dispatch_116) ? (. - _ebase_address) : __vector_offset_default);
  384.     KEEP(*(.vector_116))
  385.     __vector_offset_117 = (DEFINED(__vector_dispatch_117) ? (. - _ebase_address) : __vector_offset_default);
  386.     KEEP(*(.vector_117))
  387.     __vector_offset_118 = (DEFINED(__vector_dispatch_118) ? (. - _ebase_address) : __vector_offset_default);
  388.     KEEP(*(.vector_118))
  389.     __vector_offset_119 = (DEFINED(__vector_dispatch_119) ? (. - _ebase_address) : __vector_offset_default);
  390.     KEEP(*(.vector_119))
  391.     __vector_offset_120 = (DEFINED(__vector_dispatch_120) ? (. - _ebase_address) : __vector_offset_default);
  392.     KEEP(*(.vector_120))
  393.     __vector_offset_121 = (DEFINED(__vector_dispatch_121) ? (. - _ebase_address) : __vector_offset_default);
  394.     KEEP(*(.vector_121))
  395.     __vector_offset_122 = (DEFINED(__vector_dispatch_122) ? (. - _ebase_address) : __vector_offset_default);
  396.     KEEP(*(.vector_122))
  397.     __vector_offset_123 = (DEFINED(__vector_dispatch_123) ? (. - _ebase_address) : __vector_offset_default);
  398.     KEEP(*(.vector_123))
  399.     __vector_offset_124 = (DEFINED(__vector_dispatch_124) ? (. - _ebase_address) : __vector_offset_default);
  400.     KEEP(*(.vector_124))
  401.     __vector_offset_125 = (DEFINED(__vector_dispatch_125) ? (. - _ebase_address) : __vector_offset_default);
  402.     KEEP(*(.vector_125))
  403.     __vector_offset_126 = (DEFINED(__vector_dispatch_126) ? (. - _ebase_address) : __vector_offset_default);
  404.     KEEP(*(.vector_126))
  405.     __vector_offset_127 = (DEFINED(__vector_dispatch_127) ? (. - _ebase_address) : __vector_offset_default);
  406.     KEEP(*(.vector_127))
  407.     __vector_offset_128 = (DEFINED(__vector_dispatch_128) ? (. - _ebase_address) : __vector_offset_default);
  408.     KEEP(*(.vector_128))
  409.     __vector_offset_129 = (DEFINED(__vector_dispatch_129) ? (. - _ebase_address) : __vector_offset_default);
  410.     KEEP(*(.vector_129))
  411.     __vector_offset_130 = (DEFINED(__vector_dispatch_130) ? (. - _ebase_address) : __vector_offset_default);
  412.     KEEP(*(.vector_130))
  413.     __vector_offset_131 = (DEFINED(__vector_dispatch_131) ? (. - _ebase_address) : __vector_offset_default);
  414.     KEEP(*(.vector_131))
  415.     __vector_offset_132 = (DEFINED(__vector_dispatch_132) ? (. - _ebase_address) : __vector_offset_default);
  416.     KEEP(*(.vector_132))
  417.     __vector_offset_133 = (DEFINED(__vector_dispatch_133) ? (. - _ebase_address) : __vector_offset_default);
  418.     KEEP(*(.vector_133))
  419.     __vector_offset_134 = (DEFINED(__vector_dispatch_134) ? (. - _ebase_address) : __vector_offset_default);
  420.     KEEP(*(.vector_134))
  421.     __vector_offset_135 = (DEFINED(__vector_dispatch_135) ? (. - _ebase_address) : __vector_offset_default);
  422.     KEEP(*(.vector_135))
  423.     __vector_offset_136 = (DEFINED(__vector_dispatch_136) ? (. - _ebase_address) : __vector_offset_default);
  424.     KEEP(*(.vector_136))
  425.     __vector_offset_137 = (DEFINED(__vector_dispatch_137) ? (. - _ebase_address) : __vector_offset_default);
  426.     KEEP(*(.vector_137))
  427.     __vector_offset_138 = (DEFINED(__vector_dispatch_138) ? (. - _ebase_address) : __vector_offset_default);
  428.     KEEP(*(.vector_138))
  429.     __vector_offset_139 = (DEFINED(__vector_dispatch_139) ? (. - _ebase_address) : __vector_offset_default);
  430.     KEEP(*(.vector_139))
  431.     __vector_offset_140 = (DEFINED(__vector_dispatch_140) ? (. - _ebase_address) : __vector_offset_default);
  432.     KEEP(*(.vector_140))
  433.     __vector_offset_141 = (DEFINED(__vector_dispatch_141) ? (. - _ebase_address) : __vector_offset_default);
  434.     KEEP(*(.vector_141))
  435.     __vector_offset_142 = (DEFINED(__vector_dispatch_142) ? (. - _ebase_address) : __vector_offset_default);
  436.     KEEP(*(.vector_142))
  437.     __vector_offset_143 = (DEFINED(__vector_dispatch_143) ? (. - _ebase_address) : __vector_offset_default);
  438.     KEEP(*(.vector_143))
  439.     __vector_offset_144 = (DEFINED(__vector_dispatch_144) ? (. - _ebase_address) : __vector_offset_default);
  440.     KEEP(*(.vector_144))
  441.     __vector_offset_145 = (DEFINED(__vector_dispatch_145) ? (. - _ebase_address) : __vector_offset_default);
  442.     KEEP(*(.vector_145))
  443.     __vector_offset_146 = (DEFINED(__vector_dispatch_146) ? (. - _ebase_address) : __vector_offset_default);
  444.     KEEP(*(.vector_146))
  445.     __vector_offset_147 = (DEFINED(__vector_dispatch_147) ? (. - _ebase_address) : __vector_offset_default);
  446.     KEEP(*(.vector_147))
  447.     __vector_offset_148 = (DEFINED(__vector_dispatch_148) ? (. - _ebase_address) : __vector_offset_default);
  448.     KEEP(*(.vector_148))
  449.     __vector_offset_149 = (DEFINED(__vector_dispatch_149) ? (. - _ebase_address) : __vector_offset_default);
  450.     KEEP(*(.vector_149))
  451.     __vector_offset_150 = (DEFINED(__vector_dispatch_150) ? (. - _ebase_address) : __vector_offset_default);
  452.     KEEP(*(.vector_150))
  453.     __vector_offset_151 = (DEFINED(__vector_dispatch_151) ? (. - _ebase_address) : __vector_offset_default);
  454.     KEEP(*(.vector_151))
  455.     __vector_offset_152 = (DEFINED(__vector_dispatch_152) ? (. - _ebase_address) : __vector_offset_default);
  456.     KEEP(*(.vector_152))
  457.     __vector_offset_153 = (DEFINED(__vector_dispatch_153) ? (. - _ebase_address) : __vector_offset_default);
  458.     KEEP(*(.vector_153))
  459.     __vector_offset_154 = (DEFINED(__vector_dispatch_154) ? (. - _ebase_address) : __vector_offset_default);
  460.     KEEP(*(.vector_154))
  461.     __vector_offset_155 = (DEFINED(__vector_dispatch_155) ? (. - _ebase_address) : __vector_offset_default);
  462.     KEEP(*(.vector_155))
  463.     __vector_offset_156 = (DEFINED(__vector_dispatch_156) ? (. - _ebase_address) : __vector_offset_default);
  464.     KEEP(*(.vector_156))
  465.     __vector_offset_157 = (DEFINED(__vector_dispatch_157) ? (. - _ebase_address) : __vector_offset_default);
  466.     KEEP(*(.vector_157))
  467.     __vector_offset_158 = (DEFINED(__vector_dispatch_158) ? (. - _ebase_address) : __vector_offset_default);
  468.     KEEP(*(.vector_158))
  469.     __vector_offset_159 = (DEFINED(__vector_dispatch_159) ? (. - _ebase_address) : __vector_offset_default);
  470.     KEEP(*(.vector_159))
  471.     __vector_offset_160 = (DEFINED(__vector_dispatch_160) ? (. - _ebase_address) : __vector_offset_default);
  472.     KEEP(*(.vector_160))
  473.     __vector_offset_161 = (DEFINED(__vector_dispatch_161) ? (. - _ebase_address) : __vector_offset_default);
  474.     KEEP(*(.vector_161))
  475.     __vector_offset_162 = (DEFINED(__vector_dispatch_162) ? (. - _ebase_address) : __vector_offset_default);
  476.     KEEP(*(.vector_162))
  477.     __vector_offset_163 = (DEFINED(__vector_dispatch_163) ? (. - _ebase_address) : __vector_offset_default);
  478.     KEEP(*(.vector_163))
  479.     __vector_offset_164 = (DEFINED(__vector_dispatch_164) ? (. - _ebase_address) : __vector_offset_default);
  480.     KEEP(*(.vector_164))
  481.     __vector_offset_165 = (DEFINED(__vector_dispatch_165) ? (. - _ebase_address) : __vector_offset_default);
  482.     KEEP(*(.vector_165))
  483.     __vector_offset_166 = (DEFINED(__vector_dispatch_166) ? (. - _ebase_address) : __vector_offset_default);
  484.     KEEP(*(.vector_166))
  485.     __vector_offset_167 = (DEFINED(__vector_dispatch_167) ? (. - _ebase_address) : __vector_offset_default);
  486.     KEEP(*(.vector_167))
  487.     __vector_offset_168 = (DEFINED(__vector_dispatch_168) ? (. - _ebase_address) : __vector_offset_default);
  488.     KEEP(*(.vector_168))
  489.     __vector_offset_169 = (DEFINED(__vector_dispatch_169) ? (. - _ebase_address) : __vector_offset_default);
  490.     KEEP(*(.vector_169))
  491.     __vector_offset_170 = (DEFINED(__vector_dispatch_170) ? (. - _ebase_address) : __vector_offset_default);
  492.     KEEP(*(.vector_170))
  493.     __vector_offset_171 = (DEFINED(__vector_dispatch_171) ? (. - _ebase_address) : __vector_offset_default);
  494.     KEEP(*(.vector_171))
  495.     __vector_offset_172 = (DEFINED(__vector_dispatch_172) ? (. - _ebase_address) : __vector_offset_default);
  496.     KEEP(*(.vector_172))
  497.     __vector_offset_173 = (DEFINED(__vector_dispatch_173) ? (. - _ebase_address) : __vector_offset_default);
  498.     KEEP(*(.vector_173))
  499.     __vector_offset_174 = (DEFINED(__vector_dispatch_174) ? (. - _ebase_address) : __vector_offset_default);
  500.     KEEP(*(.vector_174))
  501.     __vector_offset_175 = (DEFINED(__vector_dispatch_175) ? (. - _ebase_address) : __vector_offset_default);
  502.     KEEP(*(.vector_175))
  503.     __vector_offset_176 = (DEFINED(__vector_dispatch_176) ? (. - _ebase_address) : __vector_offset_default);
  504.     KEEP(*(.vector_176))
  505.     __vector_offset_177 = (DEFINED(__vector_dispatch_177) ? (. - _ebase_address) : __vector_offset_default);
  506.     KEEP(*(.vector_177))
  507.     __vector_offset_178 = (DEFINED(__vector_dispatch_178) ? (. - _ebase_address) : __vector_offset_default);
  508.     KEEP(*(.vector_178))
  509.     __vector_offset_179 = (DEFINED(__vector_dispatch_179) ? (. - _ebase_address) : __vector_offset_default);
  510.     KEEP(*(.vector_179))
  511.     __vector_offset_180 = (DEFINED(__vector_dispatch_180) ? (. - _ebase_address) : __vector_offset_default);
  512.     KEEP(*(.vector_180))
  513.     __vector_offset_181 = (DEFINED(__vector_dispatch_181) ? (. - _ebase_address) : __vector_offset_default);
  514.     KEEP(*(.vector_181))
  515.     __vector_offset_182 = (DEFINED(__vector_dispatch_182) ? (. - _ebase_address) : __vector_offset_default);
  516.     KEEP(*(.vector_182))
  517.     __vector_offset_183 = (DEFINED(__vector_dispatch_183) ? (. - _ebase_address) : __vector_offset_default);
  518.     KEEP(*(.vector_183))
  519.     __vector_offset_184 = (DEFINED(__vector_dispatch_184) ? (. - _ebase_address) : __vector_offset_default);
  520.     KEEP(*(.vector_184))
  521.     __vector_offset_185 = (DEFINED(__vector_dispatch_185) ? (. - _ebase_address) : __vector_offset_default);
  522.     KEEP(*(.vector_185))
  523.     __vector_offset_186 = (DEFINED(__vector_dispatch_186) ? (. - _ebase_address) : __vector_offset_default);
  524.     KEEP(*(.vector_186))
  525.     __vector_offset_187 = (DEFINED(__vector_dispatch_187) ? (. - _ebase_address) : __vector_offset_default);
  526.     KEEP(*(.vector_187))
  527.     __vector_offset_188 = (DEFINED(__vector_dispatch_188) ? (. - _ebase_address) : __vector_offset_default);
  528.     KEEP(*(.vector_188))
  529.     __vector_offset_189 = (DEFINED(__vector_dispatch_189) ? (. - _ebase_address) : __vector_offset_default);
  530.     KEEP(*(.vector_189))
  531.     __vector_offset_190 = (DEFINED(__vector_dispatch_190) ? (. - _ebase_address) : __vector_offset_default);
  532.     KEEP(*(.vector_190))
  533.     __vector_offset_191 = (DEFINED(__vector_dispatch_191) ? (. - _ebase_address) : __vector_offset_default);
  534.     KEEP(*(.vector_191))
  535.     __vector_offset_192 = (DEFINED(__vector_dispatch_192) ? (. - _ebase_address) : __vector_offset_default);
  536.     KEEP(*(.vector_192))
  537.     __vector_offset_193 = (DEFINED(__vector_dispatch_193) ? (. - _ebase_address) : __vector_offset_default);
  538.     KEEP(*(.vector_193))
  539.     __vector_offset_194 = (DEFINED(__vector_dispatch_194) ? (. - _ebase_address) : __vector_offset_default);
  540.     KEEP(*(.vector_194))
  541.     __vector_offset_195 = (DEFINED(__vector_dispatch_195) ? (. - _ebase_address) : __vector_offset_default);
  542.     KEEP(*(.vector_195))
  543.     __vector_offset_196 = (DEFINED(__vector_dispatch_196) ? (. - _ebase_address) : __vector_offset_default);
  544.     KEEP(*(.vector_196))
  545.     __vector_offset_197 = (DEFINED(__vector_dispatch_197) ? (. - _ebase_address) : __vector_offset_default);
  546.     KEEP(*(.vector_197))
  547.     __vector_offset_198 = (DEFINED(__vector_dispatch_198) ? (. - _ebase_address) : __vector_offset_default);
  548.     KEEP(*(.vector_198))
  549.     __vector_offset_199 = (DEFINED(__vector_dispatch_199) ? (. - _ebase_address) : __vector_offset_default);
  550.     KEEP(*(.vector_199))
  551.     __vector_offset_200 = (DEFINED(__vector_dispatch_200) ? (. - _ebase_address) : __vector_offset_default);
  552.     KEEP(*(.vector_200))
  553.     __vector_offset_201 = (DEFINED(__vector_dispatch_201) ? (. - _ebase_address) : __vector_offset_default);
  554.     KEEP(*(.vector_201))
  555.     __vector_offset_202 = (DEFINED(__vector_dispatch_202) ? (. - _ebase_address) : __vector_offset_default);
  556.     KEEP(*(.vector_202))
  557.     __vector_offset_203 = (DEFINED(__vector_dispatch_203) ? (. - _ebase_address) : __vector_offset_default);
  558.     KEEP(*(.vector_203))
  559.     __vector_offset_204 = (DEFINED(__vector_dispatch_204) ? (. - _ebase_address) : __vector_offset_default);
  560.     KEEP(*(.vector_204))
  561.     __vector_offset_205 = (DEFINED(__vector_dispatch_205) ? (. - _ebase_address) : __vector_offset_default);
  562.     KEEP(*(.vector_205))
  563.     __vector_offset_206 = (DEFINED(__vector_dispatch_206) ? (. - _ebase_address) : __vector_offset_default);
  564.     KEEP(*(.vector_206))
  565.     __vector_offset_207 = (DEFINED(__vector_dispatch_207) ? (. - _ebase_address) : __vector_offset_default);
  566.     KEEP(*(.vector_207))
  567.     __vector_offset_208 = (DEFINED(__vector_dispatch_208) ? (. - _ebase_address) : __vector_offset_default);
  568.     KEEP(*(.vector_208))
  569.     __vector_offset_209 = (DEFINED(__vector_dispatch_209) ? (. - _ebase_address) : __vector_offset_default);
  570.     KEEP(*(.vector_209))
  571.     __vector_offset_210 = (DEFINED(__vector_dispatch_210) ? (. - _ebase_address) : __vector_offset_default);
  572.     KEEP(*(.vector_210))
  573.     __vector_offset_211 = (DEFINED(__vector_dispatch_211) ? (. - _ebase_address) : __vector_offset_default);
  574.     KEEP(*(.vector_211))
  575.     __vector_offset_212 = (DEFINED(__vector_dispatch_212) ? (. - _ebase_address) : __vector_offset_default);
  576.     KEEP(*(.vector_212))
  577.     __vector_offset_213 = (DEFINED(__vector_dispatch_213) ? (. - _ebase_address) : __vector_offset_default);
  578.     KEEP(*(.vector_213))
  579.     __vector_offset_214 = (DEFINED(__vector_dispatch_214) ? (. - _ebase_address) : __vector_offset_default);
  580.     KEEP(*(.vector_214))
  581.     __vector_offset_215 = (DEFINED(__vector_dispatch_215) ? (. - _ebase_address) : __vector_offset_default);
  582.     KEEP(*(.vector_215))
  583.     __vector_offset_216 = (DEFINED(__vector_dispatch_216) ? (. - _ebase_address) : __vector_offset_default);
  584.     KEEP(*(.vector_216))
  585.     __vector_offset_217 = (DEFINED(__vector_dispatch_217) ? (. - _ebase_address) : __vector_offset_default);
  586.     KEEP(*(.vector_217))
  587.     __vector_offset_218 = (DEFINED(__vector_dispatch_218) ? (. - _ebase_address) : __vector_offset_default);
  588.     KEEP(*(.vector_218))
  589.     __vector_offset_219 = (DEFINED(__vector_dispatch_219) ? (. - _ebase_address) : __vector_offset_default);
  590.     KEEP(*(.vector_219))
  591.     __vector_offset_220 = (DEFINED(__vector_dispatch_220) ? (. - _ebase_address) : __vector_offset_default);
  592.     KEEP(*(.vector_220))
  593.     __vector_offset_221 = (DEFINED(__vector_dispatch_221) ? (. - _ebase_address) : __vector_offset_default);
  594.     KEEP(*(.vector_221))
  595.     __vector_offset_222 = (DEFINED(__vector_dispatch_222) ? (. - _ebase_address) : __vector_offset_default);
  596.     KEEP(*(.vector_222))
  597.     __vector_offset_223 = (DEFINED(__vector_dispatch_223) ? (. - _ebase_address) : __vector_offset_default);
  598.     KEEP(*(.vector_223))
  599.     __vector_offset_224 = (DEFINED(__vector_dispatch_224) ? (. - _ebase_address) : __vector_offset_default);
  600.     KEEP(*(.vector_224))
  601.     __vector_offset_225 = (DEFINED(__vector_dispatch_225) ? (. - _ebase_address) : __vector_offset_default);
  602.     KEEP(*(.vector_225))
  603.     __vector_offset_226 = (DEFINED(__vector_dispatch_226) ? (. - _ebase_address) : __vector_offset_default);
  604.     KEEP(*(.vector_226))
  605.     __vector_offset_227 = (DEFINED(__vector_dispatch_227) ? (. - _ebase_address) : __vector_offset_default);
  606.     KEEP(*(.vector_227))
  607.     __vector_offset_228 = (DEFINED(__vector_dispatch_228) ? (. - _ebase_address) : __vector_offset_default);
  608.     KEEP(*(.vector_228))
  609.     __vector_offset_229 = (DEFINED(__vector_dispatch_229) ? (. - _ebase_address) : __vector_offset_default);
  610.     KEEP(*(.vector_229))
  611.     __vector_offset_230 = (DEFINED(__vector_dispatch_230) ? (. - _ebase_address) : __vector_offset_default);
  612.     KEEP(*(.vector_230))
  613.     __vector_offset_231 = (DEFINED(__vector_dispatch_231) ? (. - _ebase_address) : __vector_offset_default);
  614.     KEEP(*(.vector_231))
  615.     __vector_offset_232 = (DEFINED(__vector_dispatch_232) ? (. - _ebase_address) : __vector_offset_default);
  616.     KEEP(*(.vector_232))
  617.     __vector_offset_233 = (DEFINED(__vector_dispatch_233) ? (. - _ebase_address) : __vector_offset_default);
  618.     KEEP(*(.vector_233))
  619.     __vector_offset_234 = (DEFINED(__vector_dispatch_234) ? (. - _ebase_address) : __vector_offset_default);
  620.     KEEP(*(.vector_234))
  621.     __vector_offset_235 = (DEFINED(__vector_dispatch_235) ? (. - _ebase_address) : __vector_offset_default);
  622.     KEEP(*(.vector_235))
  623.     __vector_offset_236 = (DEFINED(__vector_dispatch_236) ? (. - _ebase_address) : __vector_offset_default);
  624.     KEEP(*(.vector_236))
  625.     __vector_offset_237 = (DEFINED(__vector_dispatch_237) ? (. - _ebase_address) : __vector_offset_default);
  626.     KEEP(*(.vector_237))
  627.     __vector_offset_238 = (DEFINED(__vector_dispatch_238) ? (. - _ebase_address) : __vector_offset_default);
  628.     KEEP(*(.vector_238))
  629.     __vector_offset_239 = (DEFINED(__vector_dispatch_239) ? (. - _ebase_address) : __vector_offset_default);
  630.     KEEP(*(.vector_239))
  631.     __vector_offset_240 = (DEFINED(__vector_dispatch_240) ? (. - _ebase_address) : __vector_offset_default);
  632.     KEEP(*(.vector_240))
  633.     __vector_offset_241 = (DEFINED(__vector_dispatch_241) ? (. - _ebase_address) : __vector_offset_default);
  634.     KEEP(*(.vector_241))
  635.     __vector_offset_242 = (DEFINED(__vector_dispatch_242) ? (. - _ebase_address) : __vector_offset_default);
  636.     KEEP(*(.vector_242))
  637.     __vector_offset_243 = (DEFINED(__vector_dispatch_243) ? (. - _ebase_address) : __vector_offset_default);
  638.     KEEP(*(.vector_243))
  639.     __vector_offset_244 = (DEFINED(__vector_dispatch_244) ? (. - _ebase_address) : __vector_offset_default);
  640.     KEEP(*(.vector_244))
  641.     __vector_offset_245 = (DEFINED(__vector_dispatch_245) ? (. - _ebase_address) : __vector_offset_default);
  642.     KEEP(*(.vector_245))
  643.     __vector_offset_246 = (DEFINED(__vector_dispatch_246) ? (. - _ebase_address) : __vector_offset_default);
  644.     KEEP(*(.vector_246))
  645.     __vector_offset_247 = (DEFINED(__vector_dispatch_247) ? (. - _ebase_address) : __vector_offset_default);
  646.     KEEP(*(.vector_247))
  647.     __vector_offset_248 = (DEFINED(__vector_dispatch_248) ? (. - _ebase_address) : __vector_offset_default);
  648.     KEEP(*(.vector_248))
  649.     __vector_offset_249 = (DEFINED(__vector_dispatch_249) ? (. - _ebase_address) : __vector_offset_default);
  650.     KEEP(*(.vector_249))
  651.     __vector_offset_250 = (DEFINED(__vector_dispatch_250) ? (. - _ebase_address) : __vector_offset_default);
  652.     KEEP(*(.vector_250))
  653.     __vector_offset_251 = (DEFINED(__vector_dispatch_251) ? (. - _ebase_address) : __vector_offset_default);
  654.     KEEP(*(.vector_251))
  655.     __vector_offset_252 = (DEFINED(__vector_dispatch_252) ? (. - _ebase_address) : __vector_offset_default);
  656.     KEEP(*(.vector_252))
  657.     __vector_offset_253 = (DEFINED(__vector_dispatch_253) ? (. - _ebase_address) : __vector_offset_default);
  658.     KEEP(*(.vector_253))
  659.     __vector_offset_254 = (DEFINED(__vector_dispatch_254) ? (. - _ebase_address) : __vector_offset_default);
  660.     KEEP(*(.vector_254))
  661.     __vector_offset_255 = (DEFINED(__vector_dispatch_255) ? (. - _ebase_address) : __vector_offset_default);
  662.     KEEP(*(.vector_255))
  663.     /* Default interrupt handler */
  664.     __vector_offset_default = . - _ebase_address;
  665.     KEEP(*(.vector_default))
  666.   } > kseg0_program_mem
  667.  
  668.   /*  The startup code is in the .reset.startup section.
  669.    *  Keep this here for backwards compatibility with older
  670.    *  C32 v1.xx releases.
  671.    */
  672.   .startup ORIGIN(kseg0_boot_mem) :
  673.   {
  674.     KEEP(*(.startup))
  675.   } > kseg0_boot_mem
  676.   /* Code Sections - Note that input sections *(.text) and *(.text.*)
  677.   ** are not mapped here. The best-fit allocator locates them,
  678.   ** so that .text may flow around absolute sections as needed.
  679.   */
  680.   .text :
  681.   {
  682.     *(.stub .gnu.linkonce.t.*)
  683.     KEEP (*(.text.*personality*))
  684.     *(.mips16.fn.*)
  685.     *(.mips16.call.*)
  686.     *(.gnu.warning)
  687.     . = ALIGN(4) ;
  688.   } >kseg0_program_mem
  689.   /* Global-namespace object initialization */
  690.   .init   :
  691.   {
  692.     KEEP (*crti.o(.init))
  693.     KEEP (*crtbegin.o(.init))
  694.     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o *crtn.o ).init))
  695.     KEEP (*crtend.o(.init))
  696.     KEEP (*crtn.o(.init))
  697.     . = ALIGN(4) ;
  698.   } >kseg0_program_mem
  699.   .fini   :
  700.   {
  701.     KEEP (*(.fini))
  702.     . = ALIGN(4) ;
  703.   } >kseg0_program_mem
  704.   .preinit_array   :
  705.   {
  706.     PROVIDE_HIDDEN (__preinit_array_start = .);
  707.     KEEP (*(.preinit_array))
  708.     PROVIDE_HIDDEN (__preinit_array_end = .);
  709.     . = ALIGN(4) ;
  710.   } >kseg0_program_mem
  711.   .init_array   :
  712.   {
  713.     PROVIDE_HIDDEN (__init_array_start = .);
  714.     KEEP (*(SORT(.init_array.*)))
  715.     KEEP (*(.init_array))
  716.     PROVIDE_HIDDEN (__init_array_end = .);
  717.     . = ALIGN(4) ;
  718.   } >kseg0_program_mem
  719.   .fini_array   :
  720.   {
  721.     PROVIDE_HIDDEN (__fini_array_start = .);
  722.     KEEP (*(SORT(.fini_array.*)))
  723.     KEEP (*(.fini_array))
  724.     PROVIDE_HIDDEN (__fini_array_end = .);
  725.     . = ALIGN(4) ;
  726.   } >kseg0_program_mem
  727.   .ctors   :
  728.   {
  729.     /* XC32 uses crtbegin.o to find the start of
  730.        the constructors, so we make sure it is
  731.        first.  Because this is a wildcard, it
  732.        doesn't matter if the user does not
  733.        actually link against crtbegin.o; the
  734.        linker won't look for a file to match a
  735.        wildcard.  The wildcard also means that it
  736.        doesn't matter which directory crtbegin.o
  737.        is in.  */
  738.     KEEP (*crtbegin.o(.ctors))
  739.     KEEP (*crtbegin?.o(.ctors))
  740.     /* We don't want to include the .ctor section from
  741.        the crtend.o file until after the sorted ctors.
  742.        The .ctor section from the crtend file contains the
  743.        end of ctors marker and it must be last */
  744.     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
  745.     KEEP (*(SORT(.ctors.*)))
  746.     KEEP (*(.ctors))
  747.     . = ALIGN(4) ;
  748.   } >kseg0_program_mem
  749.   .dtors   :
  750.   {
  751.     KEEP (*crtbegin.o(.dtors))
  752.     KEEP (*crtbegin?.o(.dtors))
  753.     KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
  754.     KEEP (*(SORT(.dtors.*)))
  755.     KEEP (*(.dtors))
  756.     . = ALIGN(4) ;
  757.   } >kseg0_program_mem
  758.   /* Read-only sections */
  759.   .rodata   :
  760.   {
  761.     *( .gnu.linkonce.r.*)
  762.     *(.rodata1)
  763.     . = ALIGN(4) ;
  764.   } >kseg0_program_mem
  765.   /*
  766.    * Small initialized constant global and static data can be placed in the
  767.    * .sdata2 section.  This is different from .sdata, which contains small
  768.    * initialized non-constant global and static data.
  769.    */
  770.   .sdata2 ALIGN(4) :
  771.   {
  772.     *(.sdata2 .sdata2.* .gnu.linkonce.s2.*)
  773.     . = ALIGN(4) ;
  774.   } >kseg0_program_mem
  775.   /*
  776.    * Uninitialized constant global and static data (i.e., variables which will
  777.    * always be zero).  Again, this is different from .sbss, which contains
  778.    * small non-initialized, non-constant global and static data.
  779.    */
  780.   .sbss2 ALIGN(4) :
  781.   {
  782.     *(.sbss2 .sbss2.* .gnu.linkonce.sb2.*)
  783.     . = ALIGN(4) ;
  784.   } >kseg0_program_mem
  785.   .eh_frame_hdr   :
  786.   {
  787.     *(.eh_frame_hdr)
  788.   } >kseg0_program_mem
  789.     . = ALIGN(4) ;
  790.   .eh_frame   : ONLY_IF_RO
  791.   {
  792.     KEEP (*(.eh_frame))
  793.   } >kseg0_program_mem
  794.     . = ALIGN(4) ;
  795.   .gcc_except_table   : ONLY_IF_RO
  796.   {
  797.     *(.gcc_except_table .gcc_except_table.*)
  798.   } >kseg0_program_mem
  799.     . = ALIGN(4) ;
  800.   .jcr   :
  801.   {
  802.     KEEP (*(.jcr))
  803.     . = ALIGN(4) ;
  804.   } >kseg0_data_mem
  805.   .eh_frame    : ONLY_IF_RW
  806.   {
  807.     KEEP (*(.eh_frame))
  808.   } >kseg0_data_mem
  809.     . = ALIGN(4) ;
  810.   .gcc_except_table    : ONLY_IF_RW
  811.   {
  812.     *(.gcc_except_table .gcc_except_table.*)
  813.   } >kseg0_data_mem
  814.     . = ALIGN(4) ;
  815.   /* Persistent data - Use the new C 'persistent' attribute instead. */
  816.   .persist   :
  817.   {
  818.     _persist_begin = .;
  819.     *(.persist .persist.*)
  820.     *(.pbss .pbss.*)
  821.     . = ALIGN(4) ;
  822.     _persist_end = .;
  823.   } >kseg0_data_mem
  824.   /*
  825.    *  Note that input sections named .data* are not mapped here.
  826.    *  The best-fit allocator locates them, so that they may flow
  827.    *  around absolute sections as needed.
  828.    */
  829.   .data   :
  830.   {
  831.     *( .gnu.linkonce.d.*)
  832.     SORT(CONSTRUCTORS)
  833.     *(.data1)
  834.     . = ALIGN(4) ;
  835.   } >kseg0_data_mem
  836.   . = .;
  837.   _gp = ALIGN(16) + 0x7ff0;
  838.   .got ALIGN(4) :
  839.   {
  840.     *(.got.plt) *(.got)
  841.     . = ALIGN(4) ;
  842.   } >kseg0_data_mem /* AT>kseg0_program_mem */
  843.   /*
  844.    * Note that 'small' data sections are still mapped in the linker
  845.    * script. This ensures that they are grouped together for
  846.    * gp-relative addressing. Absolute sections are allocated after
  847.    * the 'small' data sections so small data cannot flow around them.
  848.    */
  849.   /*
  850.    * We want the small data sections together, so single-instruction offsets
  851.    * can access them all, and initialized data all before uninitialized, so
  852.    * we can shorten the on-disk segment size.
  853.    */
  854.   .sdata ALIGN(4) :
  855.   {
  856.     _sdata_begin = . ;
  857.     *(.sdata .sdata.* .gnu.linkonce.s.*)
  858.     . = ALIGN(4) ;
  859.     _sdata_end = . ;
  860.   } >kseg0_data_mem
  861.   .lit8           :
  862.   {
  863.     *(.lit8)
  864.   } >kseg0_data_mem
  865.   .lit4           :
  866.   {
  867.     *(.lit4)
  868.   } >kseg0_data_mem
  869.   . = ALIGN (4) ;
  870.   _data_end = . ;
  871.   _bss_begin = . ;
  872.   .sbss ALIGN(4) :
  873.   {
  874.     _sbss_begin = . ;
  875.     *(.dynsbss)
  876.     *(.sbss .sbss.* .gnu.linkonce.sb.*)
  877.     *(.scommon)
  878.     _sbss_end = . ;
  879.     . = ALIGN(4) ;
  880.   } >kseg0_data_mem
  881.   /*
  882.    *  Align here to ensure that the .bss section occupies space up to
  883.    *  _end.  Align after .bss to ensure correct alignment even if the
  884.    *  .bss section disappears because there are no input sections.
  885.    *
  886.    *  Note that input sections named .bss* are no longer mapped here.
  887.    *  The best-fit allocator locates them, so that they may flow
  888.    *  around absolute sections as needed.
  889.    *
  890.    */
  891.   .bss     :
  892.   {
  893.     *(.dynbss)
  894.     *(COMMON)
  895.    /* Align here to ensure that the .bss section occupies space up to
  896.       _end.  Align after .bss to ensure correct alignment even if the
  897.       .bss section disappears because there are no input sections. */
  898.    . = ALIGN(. != 0 ? 4 : 1);
  899.   } >kseg0_data_mem
  900.   . = ALIGN(4) ;
  901.   _end = . ;
  902.   _bss_end = . ;
  903.   /*
  904.    *  The heap and stack are best-fit allocated by the linker after other
  905.    *  data and bss sections have been allocated.
  906.    */
  907.   /*
  908.    * RAM functions go at the end of our stack and heap allocation.
  909.    * Alignment of 2K required by the boundary register (BMXDKPBA).
  910.    *
  911.    * RAM functions are now allocated by the linker. The linker generates
  912.    * _ramfunc_begin and _bmxdkpba_address symbols depending on the
  913.    * location of RAM functions.
  914.    */
  915.   _bmxdudba_address = LENGTH(kseg0_data_mem) ;
  916.   _bmxdupba_address = LENGTH(kseg0_data_mem) ;
  917.     /* The .pdr section belongs in the absolute section */
  918.     /DISCARD/ : { *(.pdr) }
  919.   .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
  920.   .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
  921.   .mdebug.abi32 : { KEEP(*(.mdebug.abi32)) }
  922.   .mdebug.abiN32 : { KEEP(*(.mdebug.abiN32)) }
  923.   .mdebug.abi64 : { KEEP(*(.mdebug.abi64)) }
  924.   .mdebug.abiO64 : { KEEP(*(.mdebug.abiO64)) }
  925.   .mdebug.eabi32 : { KEEP(*(.mdebug.eabi32)) }
  926.   .mdebug.eabi64 : { KEEP(*(.mdebug.eabi64)) }
  927.   .gcc_compiled_long32 : { KEEP(*(.gcc_compiled_long32)) }
  928.   .gcc_compiled_long64 : { KEEP(*(.gcc_compiled_long64)) }
  929.   /* Stabs debugging sections.  */
  930.   .stab          0 : { *(.stab) }
  931.   .stabstr       0 : { *(.stabstr) }
  932.   .stab.excl     0 : { *(.stab.excl) }
  933.   .stab.exclstr  0 : { *(.stab.exclstr) }
  934.   .stab.index    0 : { *(.stab.index) }
  935.   .stab.indexstr 0 : { *(.stab.indexstr) }
  936.   .comment       0 : { *(.comment) }
  937.   /* DWARF debug sections used by MPLAB X for source-level debugging.
  938.      Symbols in the DWARF debugging sections are relative to the beginning
  939.      of the section so we begin them at 0.  */
  940.   /* DWARF 1 */
  941.   .debug          0 : { *(.debug) }
  942.   .line           0 : { *(.line) }
  943.   /* GNU DWARF 1 extensions */
  944.   .debug_srcinfo  0 : { *(.debug_srcinfo) }
  945.   .debug_sfnames  0 : { *(.debug_sfnames) }
  946.   /* DWARF 1.1 and DWARF 2 */
  947.   .debug_aranges  0 : { *(.debug_aranges) }
  948.   .debug_pubnames 0 : { *(.debug_pubnames) }
  949.   /* DWARF 2 */
  950.   .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
  951.   .debug_abbrev   0 : { *(.debug_abbrev) }
  952.   .debug_line     0 : { *(.debug_line) }
  953.   .debug_frame    0 : { *(.debug_frame) }
  954.   .debug_str      0 : { *(.debug_str) }
  955.   .debug_loc      0 : { *(.debug_loc) }
  956.   .debug_macinfo  0 : { *(.debug_macinfo) }
  957.   /* SGI/MIPS DWARF 2 extensions */
  958.   .debug_weaknames 0 : { *(.debug_weaknames) }
  959.   .debug_funcnames 0 : { *(.debug_funcnames) }
  960.   .debug_typenames 0 : { *(.debug_typenames) }
  961.   .debug_varnames  0 : { *(.debug_varnames) }
  962.   .debug_pubtypes 0 : { *(.debug_pubtypes) }
  963.   .debug_ranges   0 : { *(.debug_ranges) }
  964.   /DISCARD/ : { *(.rel.dyn) }
  965.   .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
  966.   /DISCARD/ : { *(.note.GNU-stack) }
  967.   /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.discard) }
  968.   /DISCARD/ : { *(._debug_exception) }
  969. }
  970.  
  971. /*************************************************************************
  972.  *                    L1 Cache initialization symbols
  973.  *************************************************************************/
  974. /*
  975.  *  Provide virtual addresses for cache initialization
  976.  *  These symbols are used by the pic32_init_cache.o module to set up
  977.  *  the cache at startup.
  978.  */
  979. EXTERN  (__pic32_init_cache_program_base_addr)
  980. PROVIDE (__pic32_init_cache_program_base_addr = 0x9D000000) ;
  981. EXTERN  (__pic32_init_cache_data_base_addr)
  982. PROVIDE (__pic32_init_cache_data_base_addr = 0x80000000) ;
  983.  
  984. /*************************************************************************
  985.  *   TLB-Based MMU Initialization section for EBI/SQI memory regions
  986.  *************************************************************************/
  987. /*
  988.  *  Provide virtual and physical addresses of the SQI for TLB initialization
  989.  *  These symbols are used below to create a table, which is in turn used to
  990.  *  initialize the TLB at startup.
  991.  */
  992. EXTERN  (__pic32_init_sqi_kseg2_virtual_base_addr)
  993. PROVIDE (__pic32_init_sqi_kseg2_virtual_base_addr = 0xD0000000) ;
  994. EXTERN  (__pic32_init_sqi_kseg2_physical_base_addr)
  995. PROVIDE (__pic32_init_sqi_kseg2_physical_base_addr = 0x30000000) ;
  996. EXTERN  (__pic32_init_sqi_kseg2_entrylo0_bitset)
  997. PROVIDE (__pic32_init_sqi_kseg2_entrylo0_bitset = 0x1F) ;
  998.  
  999. /*  ENTRYHI = VPN2<31:13> VPN2X<12:11> 0<10:8> ASID<7:0> */
  1000. __pic32_tlb_0_entryhi  = __pic32_init_sqi_kseg2_virtual_base_addr ;
  1001.  
  1002.  
  1003. /*  Create one 64MB page table entry consisting of two 32MB physical pages.
  1004.  *  ENTRYLO0 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0>
  1005.  *  Shift __pic32_init_sqi_kseg3_physical_base_addr to PFN.
  1006.  *  Bitwise-OR the other bits of ENTRYLO0.
  1007.  */
  1008. __pic32_tlb_0_entrylo0 = (__pic32_init_sqi_kseg2_physical_base_addr >> 6) | __pic32_init_sqi_kseg2_entrylo0_bitset ;
  1009.  
  1010.  
  1011. /*  ENTRYLO1 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0> */
  1012. __pic32_tlb_0_entrylo1 = __pic32_tlb_0_entrylo0 | 0x00080000 ;
  1013.  
  1014. EXTERN  (__pic32_init_sqi_kseg3_virtual_base_addr)
  1015. PROVIDE (__pic32_init_sqi_kseg3_virtual_base_addr = 0xF0000000) ;
  1016. EXTERN  (__pic32_init_sqi_kseg3_physical_base_addr)
  1017. PROVIDE (__pic32_init_sqi_kseg3_physical_base_addr = 0x30000000) ;
  1018. EXTERN  (__pic32_init_sqi_kseg3_entrylo0_bitset)
  1019. PROVIDE (__pic32_init_sqi_kseg3_entrylo0_bitset = 0x17) ;
  1020.  
  1021. /*  ENTRYHI = VPN2<31:13> VPN2X<12:11> 0<10:8> ASID<7:0> */
  1022. __pic32_tlb_1_entryhi  = __pic32_init_sqi_kseg3_virtual_base_addr ;
  1023.  
  1024.  
  1025. /*  Create one 64MB page table entry consisting of two 32MB physical pages.
  1026.  *  ENTRYLO0 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0>
  1027.  *  Shift __pic32_init_sqi_kseg3_physical_base_addr to PFN.
  1028.  *  Bitwise-OR the other bits of ENTRYLO0.
  1029.  */
  1030. __pic32_tlb_1_entrylo0 = (__pic32_init_sqi_kseg3_physical_base_addr >> 6) | __pic32_init_sqi_kseg3_entrylo0_bitset ;
  1031.  
  1032.  
  1033. /*  ENTRYLO1 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0> */
  1034. __pic32_tlb_1_entrylo1 = __pic32_tlb_1_entrylo0 | 0x00080000 ;
  1035. /*
  1036.  *  Provide virtual and physical addresses of the EBI for TLB initialization
  1037.  *  These symbols are used below to create a table, which is in turn used to
  1038.  *  initialize the TLB at startup.
  1039.  */
  1040. EXTERN  (__pic32_init_ebi_kseg2_virtual_base_addr)
  1041. PROVIDE (__pic32_init_ebi_kseg2_virtual_base_addr = 0xC0000000) ;
  1042. EXTERN  (__pic32_init_ebi_kseg2_physical_base_addr)
  1043. PROVIDE (__pic32_init_ebi_kseg2_physical_base_addr = 0x20000000) ;
  1044. EXTERN  (__pic32_init_ebi_kseg2_entrylo0_bitset)
  1045. PROVIDE (__pic32_init_ebi_kseg2_entrylo0_bitset = 0x1F) ;
  1046.  
  1047. /*  ENTRYHI = VPN2<31:13> VPN2X<12:11> 0<10:8> ASID<7:0> */
  1048. __pic32_tlb_2_entryhi  = __pic32_init_ebi_kseg2_virtual_base_addr ;
  1049.  
  1050.  
  1051. /*  Create one 64MB page table entry consisting of two 32MB physical pages.
  1052.  *  ENTRYLO0 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0>
  1053.  *  Shift __pic32_init_sqi_kseg3_physical_base_addr to PFN.
  1054.  *  Bitwise-OR the other bits of ENTRYLO0.
  1055.  */
  1056. __pic32_tlb_2_entrylo0 = (__pic32_init_ebi_kseg2_physical_base_addr >> 6) | __pic32_init_ebi_kseg2_entrylo0_bitset ;
  1057.  
  1058.  
  1059. /*  ENTRYLO1 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0> */
  1060. __pic32_tlb_2_entrylo1 = __pic32_tlb_2_entrylo0 | 0x00080000 ;
  1061.  
  1062. EXTERN  (__pic32_init_ebi_kseg3_virtual_base_addr)
  1063. PROVIDE (__pic32_init_ebi_kseg3_virtual_base_addr = 0xE0000000) ;
  1064. EXTERN  (__pic32_init_ebi_kseg3_physical_base_addr)
  1065. PROVIDE (__pic32_init_ebi_kseg3_physical_base_addr = 0x20000000) ;
  1066. EXTERN  (__pic32_init_ebi_kseg3_entrylo0_bitset)
  1067. PROVIDE (__pic32_init_ebi_kseg3_entrylo0_bitset = 0x17) ;
  1068.  
  1069. /*  ENTRYHI = VPN2<31:13> VPN2X<12:11> 0<10:8> ASID<7:0> */
  1070. __pic32_tlb_3_entryhi  = __pic32_init_ebi_kseg3_virtual_base_addr ;
  1071.  
  1072.  
  1073. /*  Create one 64MB page table entry consisting of two 32MB physical pages.
  1074.  *  ENTRYLO0 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0>
  1075.  *  Shift __pic32_init_sqi_kseg3_physical_base_addr to PFN.
  1076.  *  Bitwise-OR the other bits of ENTRYLO0.
  1077.  */
  1078. __pic32_tlb_3_entrylo0 = (__pic32_init_ebi_kseg3_physical_base_addr >> 6) | __pic32_init_ebi_kseg3_entrylo0_bitset ;
  1079.  
  1080.  
  1081. /*  ENTRYLO1 = RI<31> XI<30> 0<29:26> PFN<25:6> C<5:3> D<2> V<1> G<0> */
  1082. __pic32_tlb_3_entrylo1 = __pic32_tlb_3_entrylo0 | 0x00080000 ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement