/* 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) STARTUP(crt0.o) OUTPUT_ARCH("mips:4000") OUTPUT_FORMAT("ecoff-bigmips", "ecoff-bigmips", "ecoff-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_exit_hook = 0); PROVIDE (hardware_hazard_hook = 0); PROVIDE (hardware_init_hook = 0); PROVIDE (software_init_hook = 0); SECTIONS { . = 0xA0020000; .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); . = _fdata; .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) *(.sbss.*) *(.gnu.linkonce.sb.*) *(.scommon) } .bss : { _bss_start = . ; *(.bss) *(.bss.*) *(.gnu.linkonce.b.*) *(COMMON) } end = .; _end = .; }