From abd740a6afa5717d596148ce1173223a47c3b2c5 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 11 May 2010 07:41:23 +0000 Subject: 2010-05-11 Sebastian Huber * 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. --- c/src/lib/libbsp/sparc/erc32/startup/linkcmds | 200 +------------------------- 1 file changed, 6 insertions(+), 194 deletions(-) (limited to 'c/src/lib/libbsp/sparc/erc32/startup/linkcmds') 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 -- cgit v1.2.3