summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/erc32/startup/linkcmds
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-05-11 07:41:23 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-05-11 07:41:23 +0000
commitabd740a6afa5717d596148ce1173223a47c3b2c5 (patch)
treeba8e0b7a00ce6f4de3bdc05c85e0f58d7522fcda /c/src/lib/libbsp/sparc/erc32/startup/linkcmds
parent2010-05-11 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-abd740a6afa5717d596148ce1173223a47c3b2c5.tar.bz2
2010-05-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
* startup/linkcmds: Include basic linker command file and define only board specific values. Define RAM and PROM limits only if not defined by command line arguments. * Makefile.am, preinstall.am: Reflect changes above.
Diffstat (limited to 'c/src/lib/libbsp/sparc/erc32/startup/linkcmds')
-rw-r--r--c/src/lib/libbsp/sparc/erc32/startup/linkcmds200
1 files changed, 6 insertions, 194 deletions
diff --git a/c/src/lib/libbsp/sparc/erc32/startup/linkcmds b/c/src/lib/libbsp/sparc/erc32/startup/linkcmds
index 65b31a7b6c..3df235ac6c 100644
--- a/c/src/lib/libbsp/sparc/erc32/startup/linkcmds
+++ b/c/src/lib/libbsp/sparc/erc32/startup/linkcmds
@@ -3,75 +3,20 @@
* $Id$
*/
-OUTPUT_ARCH(sparc)
-__DYNAMIC = 0;
-
-/*
- * The memory map looks like this:
- * +--------------------+ <- low memory
- * | .text |
- * | etext |
- * | ctor list | the ctor and dtor lists are for
- * | dtor list | C++ support
- * | _endtext |
- * +--------------------+
- * | .data | initialized data goes here
- * | _sdata |
- * | _edata |
- * +--------------------+
- * | .bss |
- * | __bss_start | start of bss, cleared by crt0
- * | _end | start of heap, used by sbrk()
- * +--------------------+
- * | heap space |
- * | _ENDHEAP |
- * | stack space |
- * | __stack | top of stack
- * +--------------------+ <- high memory
- */
-
-
-/*
- * User modifiable values:
- *
- * _CLOCK_SPEED in Mhz (used to program the counter/timers)
- *
- * _PROM_SIZE size of PROM (permissible values are 128K, 256K,
- * 512K, 1M, 2M, 4M, 8M and 16M)
- * _RAM_SIZE size of RAM (permissible values are 256K, 512K,
- * 1M, 2M, 4M, 8M, 16M, and 32M)
- *
- */
-
/* Default values, can be overridden */
-_PROM_SIZE = 2M;
-_RAM_SIZE = 4M;
-
-_RAM_START = 0x02000000;
-_RAM_END = _RAM_START + _RAM_SIZE;
-
-_PROM_START = 0x00000000;
-_PROM_END = _PROM_START + _PROM_SIZE;
-
-/*
- * Alternate names without leading _.
- */
-
-PROM_START = _PROM_START;
-PROM_SIZE = _PROM_SIZE;
-PROM_END = _PROM_END;
+_PROM_SIZE = DEFINED (_PROM_SIZE) ? _PROM_SIZE : 2M;
+_PROM_START = DEFINED (_PROM_START) ? _PROM_START : 0x00000000;
-RAM_START = _RAM_START;
-RAM_SIZE = _RAM_SIZE;
-RAM_END = _RAM_END;
+_RAM_SIZE = DEFINED (_RAM_SIZE) ? _RAM_SIZE : 4M;
+_RAM_START = DEFINED (_RAM_START) ? _RAM_START : 0x02000000;
/*
* Base address of the on-CPU peripherals
*/
_ERC32_MEC = 0x01f80000;
-ERC32_MEC = 0x01f80000;
+ERC32_MEC = _ERC32_MEC;
/* these are the maximum values */
@@ -81,137 +26,4 @@ MEMORY
ram : ORIGIN = 0x02000000, LENGTH = 32M
}
-/*
- * SPARC monitor assumes this is present to provide proper RTEMS awareness.
- */
-EXTERN(rtems_get_version_string);
-
-/*
- * stick everything in ram (of course)
- */
-SECTIONS
-{
- .text :
- {
- CREATE_OBJECT_SYMBOLS
- text_start = .;
- _text_start = .;
- *(.text*)
- . = ALIGN (16);
-
- /*
- * Special FreeBSD sysctl sections.
- */
- . = ALIGN (16);
- __start_set_sysctl_set = .;
- *(set_sysctl_*);
- __stop_set_sysctl_set = ABSOLUTE(.);
- *(set_domain_*);
- *(set_pseudo_*);
-
- *(.eh_frame)
- . = ALIGN (16);
-
- *(.gnu.linkonce.t*)
-
- /*
- * C++ constructors
- */
- /* gcc uses crtbegin.o to find the start of
- the constructors, so we make sure it is
- first. Because this is a wildcard, it
- doesn't matter if the user does not
- actually link against crtbegin.o; the
- linker won't look for a file to match a
- wildcard. The wildcard also means that it
- doesn't matter which directory crtbegin.o
- is in. */
- KEEP (*crtbegin.o(.ctors))
- KEEP (*crtbegin?.o(.ctors))
- /* We don't want to include the .ctor section from
- the crtend.o file until after the sorted ctors.
- The .ctor section from the crtend file contains the
- end of ctors marker and it must be last */
- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
- KEEP (*(SORT(.ctors.*)))
- KEEP (*(.ctors))
- KEEP (*crtbegin.o(.dtors))
- KEEP (*crtbegin?.o(.dtors))
- KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
- KEEP (*(SORT(.dtors.*)))
- KEEP (*(.dtors))
-
- _rodata_start = . ;
- *(.rodata*)
- *(.gnu.linkonce.r*)
- _erodata = ALIGN( 0x10 ) ;
-
- etext = ALIGN(0x10);
- _etext = .;
- *(.init)
- *(.fini)
- *(.lit)
- *(.shdata)
- . = ALIGN (16);
- _endtext = .;
- } > ram
- .rela.dyn :
- {
- *(.rela.init)
- *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
- *(.rela.fini)
- *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
- *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
- *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
- *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
- *(.rela.ctors)
- *(.rela.dtors)
- *(.rela.got)
- *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
- } >ram
- .data :
- {
- data_start = .;
- _data_start = .;
- _sdata = . ;
- *(.data*)
- *(.gnu.linkonce.d*)
- *(.gcc_except_table*)
- . = ALIGN(0x10);
- edata = .;
- _edata = .;
- } > ram
- .dynamic : { *(.dynamic) } >ram
- .jcr : { *(.jcr) } >ram
- .got : { *(.got) } >ram
- .plt : { *(.plt) } >ram
- .hash : { *(.hash) } >ram
- .dynrel : { *(.dynrel) } >ram
- .dynsym : { *(.dynsym) } >ram
- .dynstr : { *(.dynstr) } >ram
- .hash : { *(.hash) } >ram
- .shbss :
- {
- *(.shbss)
- } > ram
- .bss :
- {
- __bss_start = ALIGN(0x8);
- _bss_start = .;
- bss_start = .;
- *(.bss .bss* .gnu.linkonce.b*)
- *(COMMON)
- . = ALIGN (16);
- end = .;
- _end = .;
- __end = .;
- } > ram
- .stab . (NOLOAD) :
- {
- [ .stab ]
- }
- .stabstr . (NOLOAD) :
- {
- [ .stabstr ]
- }
-}
+INCLUDE linkcmds.base