summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2000-07-10 19:09:37 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2000-07-10 19:09:37 +0000
commitdc39377e5347f38f4abe3a97103e56af656f3a23 (patch)
treecb98b1815a623b3b52f6558ee0e3c6d23d11a718 /c/src
parentBuild rtems-cpu.rel in this directory. (diff)
downloadrtems-dc39377e5347f38f4abe3a97103e56af656f3a23.tar.bz2
Now links although linkcmds will not work on real hardware. But then
again neither will unlinked executables. :)
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libbsp/i960/rxgen960/startup/linkcmds239
-rw-r--r--c/src/lib/libbsp/i960/rxgen960/startup/linkcmds.real189
2 files changed, 244 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 = .;
+ }
+}
diff --git a/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds.real b/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds.real
new file mode 100644
index 0000000000..54be197fba
--- /dev/null
+++ b/c/src/lib/libbsp/i960/rxgen960/startup/linkcmds.real
@@ -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 */
+/*-------------*/