Now links although linkcmds will not work on real hardware. But then

again neither will unlinked executables. :)
This commit is contained in:
Joel Sherrill
2000-07-10 19:09:37 +00:00
parent 74d5216590
commit dc39377e53
2 changed files with 243 additions and 183 deletions

View File

@@ -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$ * $Id$
*/ */
/*
* Declare some sizes.
*/
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x0;
_RamSize = DEFINED(_RamSize) ? _RamSize : 1M;
_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x10000;
_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;
MEMORY SECTIONS
{ {
config : org = 0xFeffFF30, len = 0xd0 . = 0x0;
eprom : org = 0xfec00000, len = 1024K .text :
}
_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))
{ {
/* RAM-based code section start. CREATE_OBJECT_SYMBOLS
* I need this symbol to know where to copy code *(.text)
* at initialization time . _etext = .;
*/
_codeRamStart = .; ___CTOR_LIST__ = .;
/* RAM based fault recovery stuff. LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
*/ *(.ctors)
_faultStart = .; LONG(0)
asmstub.o ___CTOR_END__ = .;
fault.o ___DTOR_LIST__ = .;
_faultEnd = .; LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
/* Check sum to gurantee that *(.dtors)
* the above section wasn't broken. LONG(0)
*/ ___DTOR_END__ = .;
. = ALIGN(16); }
_faultCheckSum = .; .data SIZEOF(.text) + ADDR(.text):
. += 4; {
/* Fault Buffer to keep the state of *(.data)
* the fauled procedure. CONSTRUCTORS
*/ _edata = .;
_faultBuffer = .; }
. += 256; .bss SIZEOF(.data) + ADDR(.data):
/* All the rest of the text goes here. {
*/ _bss_start = .;
. = ALIGN(16); *(.bss)
*(.text) *(COMMON)
/* NEW TEST TEST TEST TEST */ . = ALIGN (64);
. = ALIGN (16); _stack_init = .;
. += _StackSize;
*(.eh_fram) _clear_end = .;
. = ALIGN (16); _WorkspaceBase = .;
. += 512K; /* reserve some memory for workspace */
/* _HeapBase = .;
* C++ constructors . += _HeapSize; /* reserve some memory for heap */
*/ _end = .;
__CTOR_LIST__ = .; __end = .;
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 */
/*-------------*/

View File

@@ -0,0 +1,189 @@
/*------------------------------------*/
/* rom.ld */
/* Last change : 19. 4.95 */
/*------------------------------------*
* To build ROM based i960 image.
*------------------------------------*/
/*
* $Id$
*/
MEMORY
{
config : org = 0xFEFFFF30, len = 0xd0
eprom : org = 0xFEC00000, len = 1024K
}
_bootAddr = 0xa0200000;
/*_HEAP = 0xA0100000 ; */
_rom_ibr_cksum = -(_romStart + _rom_prcb);
SECTIONS
{
prcb :
{
*(.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))
{
/* 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 */
/*-------------*/