/* Linker script forJMR 3904 board using Java + qthreads */ ENTRY(_start) STARTUP(crt0.o) OUTPUT_ARCH("mips:3000") OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips") GROUP(-lc -ljmr3904 -lgcc -lgcjcoop) SEARCH_DIR(.) __DYNAMIC = 0; PROVIDE (_mem_size = 0x100000); /* JMR3904 comes as standard with 512k of RAM */ /* but this is 1 Mb */ /* Set the size of the stack for Java with qthreads. */ PROVIDE (_Jv_QthreadsStackSize = 0x10000); /* PROVIDE (__global = 0); */ /* * Initalize some symbols to be zero so we can reference them in the * crt0 without core dumping. These functions are all optional, but * we do this so we can have our crt0 always use them if they exist. * This is so BSPs work better when using the crt0 installed with gcc. * We have to initalize them twice, so we multiple object file * formats, as some prepend an underscore. */ PROVIDE (hardware_exit_hook = 0); PROVIDE (hardware_hazard_hook = 0); PROVIDE (hardware_init_hook = 0); PROVIDE (software_init_hook = 0); SECTIONS { /* Load everything into DRAM, except for the stack. Put stack in SRAM */ . = 0x88000000; /* This is NOT the address which fits with the monitor from jmr. */ /* It fits the Cygmon ROMS */ .text : { _ftext = . ; KEEP (*(.init)) eprol = .; *(.text) *(.text.*) *(.gnu.linkonce.t*) *(.mips16.fn.*) *(.mips16.call.*) PROVIDE (__runtime_reloc_start = .); *(.rel.sdata) PROVIDE (__runtime_reloc_stop = .); KEEP (*(.fini)) etext = .; _etext = .; } . = .; .rdata : { *(.rdata) *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) } _fdata = ALIGN(16); .data : { *(.data) *(.data.*) *(.gnu.linkonce.d*) CONSTRUCTORS } . = ALIGN(8); _gp = . + 0x8000; __global = _gp; .lit8 : { *(.lit8) } .lit4 : { *(.lit4) } .sdata : { *(.sdata) *(.sdata.*) *(.gnu.linkonce.s*) } . = ALIGN(4); edata = .; _edata = .; _fbss = .; .sbss : { *(.sbss) *(.scommon) } .bss : { _bss_start = . ; *(.bss) *(COMMON) } end = .; _end = .; /* Put stack in SRAM (8 Kb); this size is the same as the stack from the original script (when everything was in SRAM). */ __stack = 0x8000A000; /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ /* DWARF 1 */ .debug 0 : { *(.debug) } .line 0 : { *(.line) } /* GNU DWARF 1 extensions */ .debug_srcinfo 0 : { *(.debug_srcinfo) } .debug_sfnames 0 : { *(.debug_sfnames) } /* DWARF 1.1 and DWARF 2 */ .debug_aranges 0 : { *(.debug_aranges) } .debug_pubnames 0 : { *(.debug_pubnames) } /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } .debug_macinfo 0 : { *(.debug_macinfo) } .debug_ranges 0 : { *(.debug_ranges) } /* SGI/MIPS DWARF 2 extensions */ .debug_weaknames 0 : { *(.debug_weaknames) } .debug_funcnames 0 : { *(.debug_funcnames) } .debug_typenames 0 : { *(.debug_typenames) } .debug_varnames 0 : { *(.debug_varnames) } }