/*------------------------------------*/
|
/*------------------------------------*/
|
/* rom.ld */
|
/* rom.ld */
|
/* Last change : 19. 4.95 */
|
/* Last change : 19. 4.95 */
|
/*------------------------------------*
|
/*------------------------------------*
|
* To build ROM based i960 image.
|
* To build ROM based i960 image.
|
*------------------------------------*/
|
*------------------------------------*/
|
/*
|
/*
|
* $Id: dram.ld,v 1.2 2001-09-27 11:59:59 chris Exp $
|
* $Id: dram.ld,v 1.2 2001-09-27 11:59:59 chris Exp $
|
*/
|
*/
|
|
|
|
|
|
|
MEMORY
|
MEMORY
|
{
|
{
|
dram : org = 0xa2000000, len = 120K
|
dram : org = 0xa2000000, len = 120K
|
}
|
}
|
|
|
|
|
_bootAddr = 0xa0200000;
|
_bootAddr = 0xa0200000;
|
_HEAP = 0xA0100000 ;
|
_HEAP = 0xA0100000 ;
|
|
|
SECTIONS
|
SECTIONS
|
{
|
{
|
/* Only monitor start point and fault handler
|
/* Only monitor start point and fault handler
|
* will live in ROM as far as text is concerned.
|
* will live in ROM as far as text is concerned.
|
* Only fault table will live in ROM as far as data
|
* Only fault table will live in ROM as far as data
|
* is concerned.
|
* is concerned.
|
*/
|
*/
|
romCode :
|
romCode :
|
{
|
{
|
/* Make sure that the monitor start point
|
/* Make sure that the monitor start point
|
* is the first location in EPROM.
|
* is the first location in EPROM.
|
*/
|
*/
|
rommon.o960(.text)
|
rommon.o960(.text)
|
/* Procedures to copy code and
|
/* Procedures to copy code and
|
* initialize bss in RAM.
|
* initialize bss in RAM.
|
*/
|
*/
|
sctns.o960(.text)
|
sctns.o960(.text)
|
/* Make Sure Fault Table (and its handler's data)
|
/* Make Sure Fault Table (and its handler's data)
|
* live here so that they wouldn't get destroyed).
|
* live here so that they wouldn't get destroyed).
|
*/
|
*/
|
asmfault.o960
|
asmfault.o960
|
flttbl.o960
|
flttbl.o960
|
/* 16 byte aligned PRCB.
|
/* 16 byte aligned PRCB.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
rom_prcb.o960(.data)
|
rom_prcb.o960(.data)
|
/* 16 byte aligned Control Table.
|
/* 16 byte aligned Control Table.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
rom_cntrltbl.o960(.data)
|
rom_cntrltbl.o960(.data)
|
. = ALIGN(16);
|
. = ALIGN(16);
|
intrtbl.o960(.data)
|
intrtbl.o960(.data)
|
. = ALIGN(16);
|
. = ALIGN(16);
|
nulsystbl.o960(.data)
|
nulsystbl.o960(.data)
|
. = ALIGN(16);
|
. = ALIGN(16);
|
/* I need this symbol to know where code which is
|
/* I need this symbol to know where code which is
|
* to be copied reside in ROM. Align it on a 16
|
* to be copied reside in ROM. Align it on a 16
|
* boundary.
|
* boundary.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
_codeRomStart = .;
|
_codeRomStart = .;
|
} > dram
|
} > dram
|
|
|
/* All the rest of the code will live in RAM.
|
/* All the rest of the code will live in RAM.
|
* Relocation are created as though code resides
|
* Relocation are created as though code resides
|
* in RAM, while code is placed right after romCode.
|
* in RAM, while code is placed right after romCode.
|
* This is responsiblity of the ROM monitor to
|
* This is responsiblity of the ROM monitor to
|
* copy code into ROM.
|
* copy code into ROM.
|
*/
|
*/
|
ramCode : AT(ADDR(romCode) + SIZEOF(romCode))
|
ramCode : AT(ADDR(romCode) + SIZEOF(romCode))
|
{
|
{
|
/* RAM-based code section start.
|
/* RAM-based code section start.
|
* I need this symbol to know where to copy code
|
* I need this symbol to know where to copy code
|
* at initialization time .
|
* at initialization time .
|
*/
|
*/
|
_codeRamStart = .;
|
_codeRamStart = .;
|
/* RAM based fault recovery stuff.
|
/* RAM based fault recovery stuff.
|
*/
|
*/
|
_faultStart = .;
|
_faultStart = .;
|
fault.o960
|
fault.o960
|
_faultEnd = .;
|
_faultEnd = .;
|
/* Check sum to gurantee that
|
/* Check sum to gurantee that
|
* the above section wasn't broken.
|
* the above section wasn't broken.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
_faultCheckSum = .;
|
_faultCheckSum = .;
|
. += 4;
|
. += 4;
|
/* Fault Buffer to keep the state of
|
/* Fault Buffer to keep the state of
|
* the fauled procedure.
|
* the fauled procedure.
|
*/
|
*/
|
_faultBuffer = .;
|
_faultBuffer = .;
|
. += 256;
|
. += 256;
|
/* All the rest of the text goes here.
|
/* All the rest of the text goes here.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
*(.text)
|
*(.text)
|
/* 16 byte aligned PRCB.
|
/* 16 byte aligned PRCB.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
prcb.o960(.data)
|
prcb.o960(.data)
|
/* 16 byte aligned Control Table.
|
/* 16 byte aligned Control Table.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
cntrltbl.o960(.data)
|
cntrltbl.o960(.data)
|
. = ALIGN(16);
|
. = ALIGN(16);
|
systbl.o960(.data)
|
systbl.o960(.data)
|
/* All the rest of program defined data goes here.
|
/* All the rest of program defined data goes here.
|
*/
|
*/
|
*(.data)
|
*(.data)
|
/* RAM-based code section end.
|
/* RAM-based code section end.
|
* I need this symbol to know where to copy code
|
* I need this symbol to know where to copy code
|
* at initialization time .
|
* at initialization time .
|
*/
|
*/
|
_codeRamEnd = .;
|
_codeRamEnd = .;
|
} > sram
|
} > sram
|
|
|
/* RAM based uninitialized data.
|
/* RAM based uninitialized data.
|
*/
|
*/
|
bss (NOLOAD) :
|
bss (NOLOAD) :
|
{
|
{
|
/* BSS section start. I need this symbol to
|
/* BSS section start. I need this symbol to
|
* zero BSS on initialization.
|
* zero BSS on initialization.
|
*/
|
*/
|
_bssStart = .;
|
_bssStart = .;
|
/* Supervisor Stack. Aligned on a 16 boundary.
|
/* Supervisor Stack. Aligned on a 16 boundary.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
_svrStackPtr = .;
|
_svrStackPtr = .;
|
. += 4K;
|
. += 4K;
|
/* Interrupt Stack. Aligned on a 16 boundary.
|
/* Interrupt Stack. Aligned on a 16 boundary.
|
*/
|
*/
|
. = ALIGN(16);
|
. = ALIGN(16);
|
_intStackPtr = .;
|
_intStackPtr = .;
|
. += 4K;
|
. += 4K;
|
/* Program defined BSS.
|
/* Program defined BSS.
|
*/
|
*/
|
*(.bss)
|
*(.bss)
|
/* Program defined COMMON.
|
/* Program defined COMMON.
|
*/
|
*/
|
*(COMMON)
|
*(COMMON)
|
/* BSS section end. I need this symbol to
|
/* BSS section end. I need this symbol to
|
* zero BSS on initialization.
|
* zero BSS on initialization.
|
*/
|
*/
|
_bssEnd = .;
|
_bssEnd = .;
|
_bssStart_1 = .;
|
_bssStart_1 = .;
|
_bssEnd_1 = .;
|
_bssEnd_1 = .;
|
} > dram
|
} > dram
|
|
|
}
|
}
|
|
|
/*-------------*/
|
/*-------------*/
|
/* End of file */
|
/* End of file */
|
/*-------------*/
|
/*-------------*/
|
|
|