1/* Linker script forJMR 3904 board */ 2 3ENTRY(_start) 4STARTUP(crt0.o) 5OUTPUT_ARCH("mips:3000") 6OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips") 7GROUP(-lc -ljmr3904 -lgcc) 8SEARCH_DIR(.) 9__DYNAMIC = 0; 10 11PROVIDE (_mem_size = 0x100000); /* JMR3904 comes as standard with 512k of RAM */ 12 /* but this is 1 Mb */ 13 14/* PROVIDE (__global = 0); */ 15 16/* 17 * Initalize some symbols to be zero so we can reference them in the 18 * crt0 without core dumping. These functions are all optional, but 19 * we do this so we can have our crt0 always use them if they exist. 20 * This is so BSPs work better when using the crt0 installed with gcc. 21 * We have to initalize them twice, so we multiple object file 22 * formats, as some prepend an underscore. 23 */ 24PROVIDE (hardware_exit_hook = 0); 25PROVIDE (hardware_hazard_hook = 0); 26PROVIDE (hardware_init_hook = 0); 27PROVIDE (software_init_hook = 0); 28 29SECTIONS 30{ 31 /* Load everything into DRAM, except for the stack. Put stack in SRAM */ 32 . = 0x88000000; 33 /* This is NOT the address which fits with the monitor from jmr. */ 34 /* It fits the Cygmon ROMS */ 35 .text : { 36 _ftext = . ; 37 KEEP (*(.init)) 38 eprol = .; 39 *(.text) 40 *(.text.*) 41 *(.gnu.linkonce.t.*) 42 *(.mips16.fn.*) 43 *(.mips16.call.*) 44 PROVIDE (__runtime_reloc_start = .); 45 *(.rel.sdata) 46 PROVIDE (__runtime_reloc_stop = .); 47 KEEP (*(.fini)) 48 etext = .; 49 _etext = .; 50 } 51 . = .; 52 .rdata : { 53 *(.rdata) 54 *(.rodata) 55 *(.rodata.*) 56 *(.gnu.linkonce.r.*) 57 } 58 _fdata = ALIGN(16); 59 .data : { 60 *(.data) 61 *(.data.*) 62 *(.gnu.linkonce.d.*) 63 CONSTRUCTORS 64 } 65 . = ALIGN(8); 66 _gp = . + 0x8000; 67 __global = _gp; 68 .lit8 : { 69 *(.lit8) 70 } 71 .lit4 : { 72 *(.lit4) 73 } 74 .sdata : { 75 *(.sdata) 76 *(.sdata.*) 77 *(.gnu.linkonce.s.*) 78 } 79 . = ALIGN(4); 80 edata = .; 81 _edata = .; 82 _fbss = .; 83 .sbss : { 84 *(.sbss) 85 *(.sbss.*) 86 *(.gnu.linkonce.sb.*) 87 *(.scommon) 88 } 89 .bss : { 90 _bss_start = . ; 91 *(.bss) 92 *(.bss.*) 93 *(.gnu.linkonce.b.*) 94 *(COMMON) 95 } 96 97 end = .; 98 _end = .; 99 100 /* Put stack in SRAM (8 Kb); this size is the same as the stack from 101 the original script (when everything was in SRAM). */ 102 __stack = 0x8000A000; 103 104 /* DWARF debug sections. 105 Symbols in the DWARF debugging sections are relative to 106 the beginning of the section so we begin them at 0. */ 107 108 /* DWARF 1 */ 109 .debug 0 : { *(.debug) } 110 .line 0 : { *(.line) } 111 112 /* GNU DWARF 1 extensions */ 113 .debug_srcinfo 0 : { *(.debug_srcinfo) } 114 .debug_sfnames 0 : { *(.debug_sfnames) } 115 116 /* DWARF 1.1 and DWARF 2 */ 117 .debug_aranges 0 : { *(.debug_aranges) } 118 .debug_pubnames 0 : { *(.debug_pubnames) } 119 120 /* DWARF 2 */ 121 .debug_info 0 : { *(.debug_info) } 122 .debug_abbrev 0 : { *(.debug_abbrev) } 123 .debug_line 0 : { *(.debug_line) } 124 .debug_frame 0 : { *(.debug_frame) } 125 .debug_str 0 : { *(.debug_str) } 126 .debug_loc 0 : { *(.debug_loc) } 127 .debug_macinfo 0 : { *(.debug_macinfo) } 128 .debug_ranges 0 : { *(.debug_ranges) } 129 130 /* SGI/MIPS DWARF 2 extensions */ 131 .debug_weaknames 0 : { *(.debug_weaknames) } 132 .debug_funcnames 0 : { *(.debug_funcnames) } 133 .debug_typenames 0 : { *(.debug_typenames) } 134 .debug_varnames 0 : { *(.debug_varnames) } 135} 136