1*3d8817e4Smiodcat << EOF 2*3d8817e4SmiodOUTPUT_FORMAT("elf32-ip2k", "elf32-ip2k", "elf32-ip2k") 3*3d8817e4SmiodOUTPUT_ARCH(ip2k) 4*3d8817e4SmiodENTRY(_start) 5*3d8817e4SmiodSEARCH_DIR(.); 6*3d8817e4Smiod 7*3d8817e4Smiod/* IP2022 default linker script. */ 8*3d8817e4Smiod 9*3d8817e4SmiodMEMORY 10*3d8817e4Smiod{ 11*3d8817e4Smiod D_GPR : org = 0x01000080, len = 128 12*3d8817e4Smiod D_RAM : org = 0x01000100, len = 4K - 256 13*3d8817e4Smiod P_RAM : org = 0x02000000, len = 16K 14*3d8817e4Smiod P_ROM : org = 0x02010000, len = 64K - 32 15*3d8817e4Smiod P_RESET : org = 0x0201FFE0, len = 32 16*3d8817e4Smiod P_CONFIG : org = 0x02020000, len = 128 17*3d8817e4Smiod} 18*3d8817e4Smiod 19*3d8817e4SmiodSECTIONS 20*3d8817e4Smiod{ 21*3d8817e4Smiod /* Allocated memory end markers 22*3d8817e4Smiod (initialized to start of appropiate memory address). */ 23*3d8817e4Smiod __data_end = 0x01000100; 24*3d8817e4Smiod __pram_end = 0x02000000; 25*3d8817e4Smiod __flash_end = 0x02010000; 26*3d8817e4Smiod 27*3d8817e4Smiod /* Global general purpose registers in direct addressing range. */ 28*3d8817e4Smiod .gpr 0x01000080 : 29*3d8817e4Smiod { 30*3d8817e4Smiod *(.gpr) 31*3d8817e4Smiod } >D_GPR 32*3d8817e4Smiod 33*3d8817e4Smiod /* Pre-allocated, pre-initialized data memory. */ 34*3d8817e4Smiod __data_run_begin = __data_end; 35*3d8817e4Smiod __data_load_begin = (__flash_end + 1) & 0xFFFFFFFE; 36*3d8817e4Smiod .data __data_run_begin : AT (__data_load_begin) 37*3d8817e4Smiod { 38*3d8817e4Smiod * (.data); 39*3d8817e4Smiod * (.rodata) 40*3d8817e4Smiod } >D_RAM 41*3d8817e4Smiod __data_run_end = __data_run_begin + SIZEOF(.data); 42*3d8817e4Smiod __data_load_end = __data_load_begin + SIZEOF(.data); 43*3d8817e4Smiod __data_end = __data_run_end; 44*3d8817e4Smiod __flash_end = __data_load_end; 45*3d8817e4Smiod 46*3d8817e4Smiod /* Pre-allocated, uninitialized data memory. */ 47*3d8817e4Smiod __bss_begin = __data_end; 48*3d8817e4Smiod .bss __bss_begin : 49*3d8817e4Smiod { 50*3d8817e4Smiod * (.bss) 51*3d8817e4Smiod } >D_RAM 52*3d8817e4Smiod __bss_end = __bss_begin + SIZEOF(.bss); 53*3d8817e4Smiod __data_end = __bss_end; 54*3d8817e4Smiod 55*3d8817e4Smiod /* Pre-allocated PRAM data memory. */ 56*3d8817e4Smiod __pram_data_begin = (__pram_end + 1) & 0xFFFFFFFE; 57*3d8817e4Smiod .pram_data __pram_data_begin : 58*3d8817e4Smiod { 59*3d8817e4Smiod * (.pram_data) 60*3d8817e4Smiod } >P_RAM 61*3d8817e4Smiod __pram_data_end = __pram_data_begin + SIZEOF(.pram_data); 62*3d8817e4Smiod __pram_end = __pram_data_end; 63*3d8817e4Smiod 64*3d8817e4Smiod /* PRAM code. */ 65*3d8817e4Smiod __pram_run_begin = (__pram_end + 1) & 0xFFFFFFFE; 66*3d8817e4Smiod __pram_load_begin = (__flash_end + 1) & 0xFFFFFFFE; 67*3d8817e4Smiod .pram __pram_run_begin : AT (__pram_load_begin) 68*3d8817e4Smiod { 69*3d8817e4Smiod * (.pram) 70*3d8817e4Smiod } >P_RAM 71*3d8817e4Smiod __pram_run_end = __pram_run_begin + SIZEOF(.pram); 72*3d8817e4Smiod __pram_load_end = __pram_load_begin + SIZEOF(.pram); 73*3d8817e4Smiod 74*3d8817e4Smiod __pram_load_shift = ((__pram_run_begin - __pram_load_begin) & 0x1FFFF) | 0x02000000; 75*3d8817e4Smiod __pram_end = __pram_run_end; 76*3d8817e4Smiod __flash_end = __pram_load_end; 77*3d8817e4Smiod 78*3d8817e4Smiod /* PRAM overlay code. */ 79*3d8817e4Smiod __pram_overlay_run_start = (__pram_end + 1) & 0xFFFFFFFE; 80*3d8817e4Smiod __pram_overlay_load_start = (__flash_end + 1) & 0xFFFFFFFE; 81*3d8817e4Smiod OVERLAY __pram_overlay_run_start : AT (__pram_overlay_load_start) 82*3d8817e4Smiod { 83*3d8817e4Smiod .pram1 { */overlay1/* (.pram); * (.pram1) } 84*3d8817e4Smiod .pram2 { */overlay2/* (.pram); * (.pram2) } 85*3d8817e4Smiod } >P_RAM 86*3d8817e4Smiod __pram_overlay_run_end = .; 87*3d8817e4Smiod __pram_overlay_load_end = __pram_overlay_load_start + SIZEOF(.pram1) + SIZEOF(.pram2); 88*3d8817e4Smiod __pram_end = __pram_overlay_run_end; 89*3d8817e4Smiod __flash_end = __pram_overlay_load_end; 90*3d8817e4Smiod 91*3d8817e4Smiod /* Flash code. */ 92*3d8817e4Smiod __text_begin = (__flash_end + 1) & 0xFFFFFFFE; 93*3d8817e4Smiod .text __text_begin : 94*3d8817e4Smiod { 95*3d8817e4Smiod * (.text); 96*3d8817e4Smiod * (.text.libgcc) 97*3d8817e4Smiod } >P_ROM = 0xffff 98*3d8817e4Smiod __text_end = __text_begin + SIZEOF(.text); 99*3d8817e4Smiod __flash_end = __text_end; 100*3d8817e4Smiod 101*3d8817e4Smiod /* Strings. */ 102*3d8817e4Smiod __strings_begin = (__flash_end + 1) & 0xFFFFFFFE; 103*3d8817e4Smiod .strings __strings_begin : 104*3d8817e4Smiod { 105*3d8817e4Smiod * (strings); 106*3d8817e4Smiod * (.progmem.data) 107*3d8817e4Smiod } >P_ROM = 0xffff 108*3d8817e4Smiod __strings_end = __strings_begin + SIZEOF (.strings); 109*3d8817e4Smiod __flash_end = __strings_end; 110*3d8817e4Smiod 111*3d8817e4Smiod .ctors : { * (.ctors) } > P_ROM 112*3d8817e4Smiod .dtors : { * (.dtors) } > P_ROM 113*3d8817e4Smiod 114*3d8817e4Smiod /* Reset code. */ 115*3d8817e4Smiod .reset : { * (.reset) } >P_RESET = 0xffff 116*3d8817e4Smiod 117*3d8817e4Smiod /* Configuration block. */ 118*3d8817e4Smiod .config : { * (.config) } >P_CONFIG = 0xffff 119*3d8817e4Smiod 120*3d8817e4Smiod /* Stack. */ 121*3d8817e4Smiod PROVIDE (__stack = 0x01000FFF); 122*3d8817e4Smiod 123*3d8817e4Smiod /* Stabs debugging sections. */ 124*3d8817e4Smiod .stab 0 : { *(.stab) } 125*3d8817e4Smiod .stabstr 0 : { *(.stabstr) } 126*3d8817e4Smiod .stab.excl 0 : { *(.stab.excl) } 127*3d8817e4Smiod .stab.exclstr 0 : { *(.stab.exclstr) } 128*3d8817e4Smiod .stab.index 0 : { *(.stab.index) } 129*3d8817e4Smiod .stab.indexstr 0 : { *(.stab.indexstr) } 130*3d8817e4Smiod .comment 0 : { *(.comment) } 131*3d8817e4Smiod 132*3d8817e4Smiod /* DWARF 1. */ 133*3d8817e4Smiod .debug 0 : { *(.debug) } 134*3d8817e4Smiod .line 0 : { *(.line) } 135*3d8817e4Smiod /* GNU DWARF 1 extensions. */ 136*3d8817e4Smiod .debug_srcinfo 0 : { *(.debug_srcinfo) } 137*3d8817e4Smiod .debug_sfnames 0 : { *(.debug_sfnames) } 138*3d8817e4Smiod /* DWARF 1.1 and DWARF 2. */ 139*3d8817e4Smiod .debug_aranges 0 : { *(.debug_aranges) } 140*3d8817e4Smiod .debug_pubnames 0 : { *(.debug_pubnames) } 141*3d8817e4Smiod /* DWARF 2. */ 142*3d8817e4Smiod .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } 143*3d8817e4Smiod .debug_abbrev 0 : { *(.debug_abbrev) } 144*3d8817e4Smiod .debug_line 0 : { *(.debug_line) } 145*3d8817e4Smiod .debug_frame 0 : { *(.debug_frame) } 146*3d8817e4Smiod .debug_str 0 : { *(.debug_str) } 147*3d8817e4Smiod .debug_loc 0 : { *(.debug_loc) } 148*3d8817e4Smiod .debug_macinfo 0 : { *(.debug_macinfo) } 149*3d8817e4Smiod} 150*3d8817e4SmiodEOF 151