diff options
Diffstat (limited to 'c/src/lib/libbsp/i960/rxgen960/startup/linkcmds')
-rw-r--r-- | c/src/lib/libbsp/i960/rxgen960/startup/linkcmds | 239 |
1 files changed, 55 insertions, 184 deletions
diff --git a/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds b/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds index fceb9571c5..d62b3c4de3 100644 --- a/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds +++ b/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds @@ -1,189 +1,60 @@ -/*------------------------------------*/ -/* rom.ld */ -/* Last change : 19. 4.95 */ -/*------------------------------------* - * To build ROM based i960 image. - *------------------------------------*/ - /* + * This is not the real linkcmds for this target. See + * linkcmds.real and make those work for you. That linkcmds + * goes to great lengths to handplace certain object files + * in very specific locations. + * * $Id$ */ - -MEMORY -{ - config : org = 0xFeffFF30, len = 0xd0 - eprom : org = 0xfec00000, len = 1024K -} - - -_bootAddr = 0xa0200000; -/*_HEAP = 0xA0100000 ; */ -_rom_ibr_cksum = -(_romStart + _rom_prcb); - -SECTIONS -{ - prcb : - { - INPUT(rom_ibr.o) - } > config - - /* Only monitor start point and fault handler - * will live in ROM as far as text is concerned. - * Only fault table will live in ROM as far as data - * is concerned. - */ - romCode : - { - /* Make sure that the monitor start point - * is the first location in EPROM. - */ - rxgen_romld.o(.text) - /* Procedures to copy code and - * initialize bss in RAM. - */ - sctns.o(.text) - /* Make Sure Fault Table (and its handler's data) - * live here so that they wouldn't get destroyed). - */ - asmfault.o - ihandler.o - . = ALIGN(16); - flttbl.o - /* 16 byte aligned PRCB. - */ - . = ALIGN(16); - rom_prcb.o(.data) - . = ALIGN(16); - rom_cntrltbl.o(.data) - . = ALIGN(16); - intrtbl.o(.data) - . = ALIGN(16); - nulsystbl.o(.data) - . = ALIGN(16); - /* I need this symbol to know where code which is - * to be copied reside in ROM. Align it on a 16 - * boundary. - */ - . = ALIGN(16); - _codeRomStart = .; - } > eprom - - /* All the rest of the code will live in RAM. - * Relocation are created as though code resides - * in RAM, while code is placed right after romCode. - * This is responsiblity of the ROM monitor to - * copy code into ROM. - */ - ramCode : AT(ADDR(romCode) + SIZEOF(romCode)) +/* + * Declare some sizes. + */ +_RamBase = DEFINED(_RamBase) ? _RamBase : 0x0; +_RamSize = DEFINED(_RamSize) ? _RamSize : 1M; +_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000; +_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000; + +SECTIONS +{ + . = 0x0; + .text : { - /* RAM-based code section start. - * I need this symbol to know where to copy code - * at initialization time . - */ - _codeRamStart = .; - /* RAM based fault recovery stuff. - */ - _faultStart = .; - asmstub.o - fault.o - _faultEnd = .; - /* Check sum to gurantee that - * the above section wasn't broken. - */ - . = ALIGN(16); - _faultCheckSum = .; - . += 4; - /* Fault Buffer to keep the state of - * the fauled procedure. - */ - _faultBuffer = .; - . += 256; - /* All the rest of the text goes here. - */ - . = ALIGN(16); - *(.text) -/* NEW TEST TEST TEST TEST */ - . = ALIGN (16); - - *(.eh_fram) - . = ALIGN (16); - - /* - * C++ constructors - */ - __CTOR_LIST__ = .; - LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2) - *(.ctors) - LONG(0) - __CTOR_END__ = .; - __DTOR_LIST__ = .; - LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2) - *(.dtors) - LONG(0) - __DTOR_END__ = .; - etext = ALIGN( 0x10 ) ; -/* END NEW TEST TEST TEST */ - /* 16 byte aligned PRCB. - */ - . = ALIGN(16); - prcb.o(.data) - /* 16 byte aligned Control Table. - */ - . = ALIGN(16); - cntrltbl.o(.data) - . = ALIGN(16); - systbl.o(.data) - /* All the rest of program defined data goes here. - */ - *(.data) - /* RAM-based code section end. - * I need this symbol to know where to copy code - * at initialization time . - */ - _codeRamEnd = .; - } > eprom - - /* RAM based uninitialized data. - */ - bss (NOLOAD) : - { - /* BSS section start. I need this symbol to - * zero BSS on initialization. - */ - /* Heap. Aligned on a 64 boundary */ - /* . = ALIGN(64); - _heap_initial = .; - . += 64K;*/ - /* Supervisor Stack. Aligned on a 16 boundary. - */ - . = ALIGN(16); - _svrStackPtr = .; - . += 16K; - /* Interrupt Stack. Aligned on a 16 boundary. - */ - . = ALIGN(16); - _intStackPtr = .; - . += 16K; - /* Program defined BSS. - */ - _bssStart = .; - _bss_start = .; - *(.bss) - /* Program defined COMMON. - */ - *(COMMON) - _end = .; - /* BSS section end. I need this symbol to - * zero BSS on initialization. - */ - _bssEnd = .; - _bssStart_1 = .; - _bssEnd_1 = .; - } > eprom - -} - -/*-------------*/ -/* End of file */ -/*-------------*/ + CREATE_OBJECT_SYMBOLS + *(.text) + _etext = .; + + ___CTOR_LIST__ = .; + LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2) + *(.ctors) + LONG(0) + ___CTOR_END__ = .; + ___DTOR_LIST__ = .; + LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2) + *(.dtors) + LONG(0) + ___DTOR_END__ = .; + } + .data SIZEOF(.text) + ADDR(.text): + { + *(.data) + CONSTRUCTORS + _edata = .; + } + .bss SIZEOF(.data) + ADDR(.data): + { + _bss_start = .; + *(.bss) + *(COMMON) + . = ALIGN (64); + _stack_init = .; + . += _StackSize; + _clear_end = .; + _WorkspaceBase = .; + . += 512K; /* reserve some memory for workspace */ + _HeapBase = .; + . += _HeapSize; /* reserve some memory for heap */ + _end = .; + __end = .; + } +} |