summaryrefslogtreecommitdiffstats
path: root/c/src/lib
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
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')
-rw-r--r--c/src/lib/libbsp/sparc/erc32/ChangeLog7
-rw-r--r--c/src/lib/libbsp/sparc/erc32/Makefile.am2
-rw-r--r--c/src/lib/libbsp/sparc/erc32/preinstall.am4
-rw-r--r--c/src/lib/libbsp/sparc/erc32/startup/linkcmds200
-rw-r--r--c/src/lib/libbsp/sparc/leon2/ChangeLog7
-rw-r--r--c/src/lib/libbsp/sparc/leon2/Makefile.am2
-rw-r--r--c/src/lib/libbsp/sparc/leon2/preinstall.am4
-rw-r--r--c/src/lib/libbsp/sparc/leon2/startup/linkcmds200
-rw-r--r--c/src/lib/libbsp/sparc/leon3/ChangeLog7
-rw-r--r--c/src/lib/libbsp/sparc/leon3/Makefile.am2
-rw-r--r--c/src/lib/libbsp/sparc/leon3/preinstall.am4
-rw-r--r--c/src/lib/libbsp/sparc/leon3/startup/linkcmds200
12 files changed, 54 insertions, 585 deletions
diff --git a/c/src/lib/libbsp/sparc/erc32/ChangeLog b/c/src/lib/libbsp/sparc/erc32/ChangeLog
index d1fdca01a4..ab5b48ca2b 100644
--- a/c/src/lib/libbsp/sparc/erc32/ChangeLog
+++ b/c/src/lib/libbsp/sparc/erc32/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
2010-04-27 Tiemen Schut <T.Schut@sron.nl>
PR 1506/bsps
diff --git a/c/src/lib/libbsp/sparc/erc32/Makefile.am b/c/src/lib/libbsp/sparc/erc32/Makefile.am
index f6620266be..dd8bed26e0 100644
--- a/c/src/lib/libbsp/sparc/erc32/Makefile.am
+++ b/c/src/lib/libbsp/sparc/erc32/Makefile.am
@@ -28,7 +28,7 @@ noinst_LIBRARIES = libbspstart.a
libbspstart_a_SOURCES = ../../sparc/shared/start.S
project_lib_DATA = start.$(OBJEXT)
-dist_project_lib_DATA += startup/linkcmds
+dist_project_lib_DATA += startup/linkcmds ../shared/startup/linkcmds.base
noinst_LIBRARIES += libbsp.a
libbsp_a_SOURCES =
diff --git a/c/src/lib/libbsp/sparc/erc32/preinstall.am b/c/src/lib/libbsp/sparc/erc32/preinstall.am
index ec66d9e0e8..6c0b907910 100644
--- a/c/src/lib/libbsp/sparc/erc32/preinstall.am
+++ b/c/src/lib/libbsp/sparc/erc32/preinstall.am
@@ -69,3 +69,7 @@ $(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
+$(PROJECT_LIB)/linkcmds.base: ../shared/startup/linkcmds.base $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.base
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.base
+
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
diff --git a/c/src/lib/libbsp/sparc/leon2/ChangeLog b/c/src/lib/libbsp/sparc/leon2/ChangeLog
index 2131aa6724..013ec28b52 100644
--- a/c/src/lib/libbsp/sparc/leon2/ChangeLog
+++ b/c/src/lib/libbsp/sparc/leon2/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
2009-12-11 Ralf Corsépius <ralf.corsepius@rtems.org>
PR 1483/cpukit
diff --git a/c/src/lib/libbsp/sparc/leon2/Makefile.am b/c/src/lib/libbsp/sparc/leon2/Makefile.am
index 44880017f0..c751c60854 100644
--- a/c/src/lib/libbsp/sparc/leon2/Makefile.am
+++ b/c/src/lib/libbsp/sparc/leon2/Makefile.am
@@ -48,7 +48,7 @@ noinst_LIBRARIES = libbspstart.a
libbspstart_a_SOURCES = ../../sparc/shared/start.S
project_lib_DATA = start.$(OBJEXT)
-dist_project_lib_DATA += startup/linkcmds
+dist_project_lib_DATA += startup/linkcmds ../shared/startup/linkcmds.base
noinst_LIBRARIES += libbsp.a
libbsp_a_SOURCES =
diff --git a/c/src/lib/libbsp/sparc/leon2/preinstall.am b/c/src/lib/libbsp/sparc/leon2/preinstall.am
index f3dea9a63b..4b7d4daf29 100644
--- a/c/src/lib/libbsp/sparc/leon2/preinstall.am
+++ b/c/src/lib/libbsp/sparc/leon2/preinstall.am
@@ -141,6 +141,10 @@ $(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
+$(PROJECT_LIB)/linkcmds.base: ../shared/startup/linkcmds.base $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.base
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.base
+
$(PROJECT_INCLUDE)/i2cmst.h: ../../sparc/shared/include/i2cmst.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/i2cmst.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/i2cmst.h
diff --git a/c/src/lib/libbsp/sparc/leon2/startup/linkcmds b/c/src/lib/libbsp/sparc/leon2/startup/linkcmds
index eed855fc6a..d4993f0588 100644
--- a/c/src/lib/libbsp/sparc/leon2/startup/linkcmds
+++ b/c/src/lib/libbsp/sparc/leon2/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 = 0x40000000;
-_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 : 0x40000000;
/*
* Base address of the on-CPU peripherals
*/
_LEON_REG = 0x80000000;
-LEON_REG = 0x80000000;
+LEON_REG = _LEON_REG;
/* these are the maximum values */
@@ -81,137 +26,4 @@ MEMORY
ram : ORIGIN = 0x40000000, LENGTH = 1024M
}
-/*
- * 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 = ALIGN(0x8);
- __end = ALIGN(0x8);
- } > ram
- .stab . (NOLOAD) :
- {
- [ .stab ]
- }
- .stabstr . (NOLOAD) :
- {
- [ .stabstr ]
- }
-}
+INCLUDE linkcmds.base
diff --git a/c/src/lib/libbsp/sparc/leon3/ChangeLog b/c/src/lib/libbsp/sparc/leon3/ChangeLog
index dbdb01f95f..2b04f95f17 100644
--- a/c/src/lib/libbsp/sparc/leon3/ChangeLog
+++ b/c/src/lib/libbsp/sparc/leon3/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
2009-12-11 Ralf Corsépius <ralf.corsepius@rtems.org>
PR 1483/cpukit
diff --git a/c/src/lib/libbsp/sparc/leon3/Makefile.am b/c/src/lib/libbsp/sparc/leon3/Makefile.am
index f99cb84195..996c4dc0da 100644
--- a/c/src/lib/libbsp/sparc/leon3/Makefile.am
+++ b/c/src/lib/libbsp/sparc/leon3/Makefile.am
@@ -31,7 +31,7 @@ noinst_LIBRARIES = libbspstart.a
libbspstart_a_SOURCES = ../../sparc/shared/start.S
project_lib_DATA = start.$(OBJEXT)
-dist_project_lib_DATA += startup/linkcmds
+dist_project_lib_DATA += startup/linkcmds ../shared/startup/linkcmds.base
noinst_LIBRARIES += libbsp.a
libbsp_a_SOURCES =
diff --git a/c/src/lib/libbsp/sparc/leon3/preinstall.am b/c/src/lib/libbsp/sparc/leon3/preinstall.am
index 16398a9d20..b948529704 100644
--- a/c/src/lib/libbsp/sparc/leon3/preinstall.am
+++ b/c/src/lib/libbsp/sparc/leon3/preinstall.am
@@ -73,6 +73,10 @@ $(PROJECT_LIB)/linkcmds: startup/linkcmds $(PROJECT_LIB)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds
PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds
+$(PROJECT_LIB)/linkcmds.base: ../shared/startup/linkcmds.base $(PROJECT_LIB)/$(dirstamp)
+ $(INSTALL_DATA) $< $(PROJECT_LIB)/linkcmds.base
+PREINSTALL_FILES += $(PROJECT_LIB)/linkcmds.base
+
$(PROJECT_INCLUDE)/amba.h: include/amba.h $(PROJECT_INCLUDE)/$(dirstamp)
$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/amba.h
PREINSTALL_FILES += $(PROJECT_INCLUDE)/amba.h
diff --git a/c/src/lib/libbsp/sparc/leon3/startup/linkcmds b/c/src/lib/libbsp/sparc/leon3/startup/linkcmds
index eed855fc6a..d4993f0588 100644
--- a/c/src/lib/libbsp/sparc/leon3/startup/linkcmds
+++ b/c/src/lib/libbsp/sparc/leon3/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 = 0x40000000;
-_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 : 0x40000000;
/*
* Base address of the on-CPU peripherals
*/
_LEON_REG = 0x80000000;
-LEON_REG = 0x80000000;
+LEON_REG = _LEON_REG;
/* these are the maximum values */
@@ -81,137 +26,4 @@ MEMORY
ram : ORIGIN = 0x40000000, LENGTH = 1024M
}
-/*
- * 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 = ALIGN(0x8);
- __end = ALIGN(0x8);
- } > ram
- .stab . (NOLOAD) :
- {
- [ .stab ]
- }
- .stabstr . (NOLOAD) :
- {
- [ .stabstr ]
- }
-}
+INCLUDE linkcmds.base