Mercurial > flash_v2
diff packages/hal/mips/sim/current/src/sim.ld @ 0:3111d98ba7b3 ecos-v1_1-release
Initial commit of eCos version 1.1
| author | jlarmour |
|---|---|
| date | Tue, 11 May 1999 11:16:07 +0000 |
| parents | |
| children |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/hal/mips/sim/current/src/sim.ld @@ -0,0 +1,221 @@ +/*========================================================================== +// +// sim.ld +// +// Linker script for MIPS simulator +// +//========================================================================== +//####COPYRIGHTBEGIN#### +// +// ------------------------------------------- +// The contents of this file are subject to the Cygnus eCos Public License +// Version 1.0 (the "License"); you may not use this file except in +// compliance with the License. You may obtain a copy of the License at +// http://sourceware.cygnus.com/ecos +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +// License for the specific language governing rights and limitations under +// the License. +// +// The Original Code is eCos - Embedded Cygnus Operating System, released +// September 30, 1998. +// +// The Initial Developer of the Original Code is Cygnus. Portions created +// by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved. +// ------------------------------------------- +// +//####COPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): nickg +// Contributors: nickg +// Date: 1998-02-17 +// Purpose: MIPS simulator Linker script +// Description: This script is passed to the linker to define the memory +// of the MIPS simulator. +// +//####DESCRIPTIONEND#### +// +//========================================================================*/ + +STARTUP(vectors.o) +ENTRY(reset_vector) + +GROUP(libtarget.a libgcc.a) + +#include <pkgconf/hal.h> + +#if defined(CYG_HAL_STARTUP_RAM) +#define LOAD_BASE 0x80000000 +#define DATA_BASE +#define AT(x) +#elif defined(CYG_HAL_STARTUP_ROM) +#define LOAD_BASE 0xBFC00000 +#define DATA_BASE 0x80000200 +#endif + +/* + * Allocate the stack to be at the top of memory, since the stack + * grows down + */ + +/*__interrupt_stack = DATA_BASE + 0x00100000; */ + +SECTIONS +{ + /*------------------------------------------------------------*/ + + /* Start of ROM */ + . = LOAD_BASE; + + .rom_vectors : + { +#if defined(CYG_HAL_STARTUP_RAM) + KEEP(*(.utlb_vector)) + . = ALIGN(0x80); + KEEP(*(.other_vector)) + /* debug and reset vector not used in RAM version */ + KEEP(*(.debug_vector)) + KEEP(*(.reset_vector)) +#elif defined(CYG_HAL_STARTUP_ROM) + KEEP(*(.reset_vector)) + . = ALIGN(0x100); + KEEP(*(.utlb_vector)) + . = ALIGN(0x80); + KEEP(*(.debug_vector)) + . = ALIGN(0x100); + KEEP(*(.other_vector)) +#endif + } + + /*------------------------------------------------------------*/ + + .text : + { + _stext = .; +#ifndef CYG_KERNEL_USE_INIT_PRIORITY + __sched_text_start = .; + *sched.o(.text*) + __sched_text_end = .; + __clock_text_start = .; + *clock.o(.text*) + __clock_text_end = .; + __thread_text_start = .; + *thread.o(.text*) + __thread_text_end = .; +#endif + *(.text*) + *(.gnu.warning) + *(.gnu.linkonce*) + *(.init) + + } + _etext = .; + PROVIDE (etext = .); + .fini : { *(.fini) } + .rodata : { *(.rodata*) } + .rodata1 : { *(.rodata1) } + .fixup : { *(.fixup) } + .gcc_except_table : { *(.gcc_except_table) } + + /*------------------------------------------------------------*/ + +/* __rom_data_start = __rom_ram_vectors_start + SIZEOF( .ram_vectors ); */ + __rom_data_start = ALIGN(8); + .data DATA_BASE : + { + __ram_data_start = .; + *(.data*) + *(.data1) + _GOT1_START_ = .; + *(.got1) + _GOT1_END_ = .; + /* Put .ctors and .dtors next to the .got2 section, so that the pointers + get relocated with -mrelocatable. */ + _GOT2_START_ = .; + *(.got2) +#ifdef CYG_KERNEL_USE_INIT_PRIORITY + SORT(CONSTRUCTORS) + *(.ctors*) + *(.dtors*) +#else + CONSTRUCTORS + *(.ctors*) + *(.dtors*) +#endif + _GOT2_END_ = .; + . = ALIGN(8); + _gp = .; + __global = _gp; + _GLOBAL_OFFSET_TABLE_ = .; + _GOT_START_ = .; + _SDA_BASE_ = .; + *(.got.plt) + *(.got) + _GOT_END_ = .; + *(.dynamic) + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + *(.sdata*) + *(.sbss*) + } + __ram_data_end = .; + PROVIDE( __ram_data_end = .); + _edata = .; + PROVIDE (edata = .); + + /*------------------------------------------------------------*/ + + . = ALIGN(4); + __bss_start = .; + .bss : + { + *(.scommon) + *(.dynbss) + *(.bss) + *(COMMON) + } + . = ALIGN(4); + _end = . ; + PROVIDE (end = .); + + /*------------------------------------------------------------*/ + /* 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) } + + /* 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) } + +} + +//hal_vsr_table = 0x80000100; + +// End of sim.ld
