/* This is just the basic idt.ld linker script file, except that it has a different OUTPUT_ARCH to force the linker into r5900 mode which uses 32bit addresses. */ /* The following TEXT start address leaves space for the monitor workspace. i.e. the NEC VR4300 (IDT) first free address is actually 0xa001af20. */ ENTRY(_start) OUTPUT_ARCH("mips:5900") OUTPUT_FORMAT("elf32-bigmips", "elf32-bigmips", "elf32-littlemips") GROUP(-lc -lidt -lgcc) SEARCH_DIR(.) __DYNAMIC = 0; /* * Allocate the stack to be at the top of memory, since the stack * grows down */ PROVIDE (__stack = 0); /* 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_init_hook = 0); PROVIDE (software_init_hook = 0); SECTIONS { . = 0x00010000; .text : { _ftext = . ; *(.init) eprol = .; *(.text) *(.mips16.fn.*) *(.mips16.call.*) PROVIDE (__runtime_reloc_start = .); *(.rel.sdata) PROVIDE (__runtime_reloc_stop = .); *(.fini) etext = .; _etext = .; } . = .; .rdata : { *(.rdata) } _fdata = ALIGN(16); .data : { *(.data) CONSTRUCTORS } . = ALIGN(8); _gp = . + 0x8000; __global = _gp; .lit8 : { *(.lit8) } .lit4 : { *(.lit4) } .sdata : { *(.sdata) } . = ALIGN(4); edata = .; _edata = .; _fbss = .; .sbss : { *(.sbss) *(.scommon) } .bss : { _bss_start = . ; *(.bss) *(COMMON) } end = .; _end = .; }