Back to home page

LXR

 
 

    


Warning, /bsps/m68k/mcf5206elite/start/linkcmds.flash is written in an unsupported language. File is not indexed.

0001 /*
0002  * This file contains GNU linker directives for an MCF5206eLITE
0003  * evaluation board.
0004  *
0005  * Variations in memory size and allocation can be made by
0006  * overriding some values with linker command-line arguments.
0007  *
0008  * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
0009  * Author: Victor V. Vengerov <vvv@oktet.ru>
0010  *
0011  * This file based on work:
0012  * David Fiddes, D.J.Fiddes@hw.ac.uk
0013  * http://www.calm.hw.ac.uk/davidf/coldfire/
0014  * 
0015  * The license and distribution terms for this file may be
0016  * found in the file LICENSE in this distribution or at
0017  *
0018  * http://www.rtems.org/license/LICENSE.
0019  */
0020 
0021 /*
0022  * Declare some sizes.
0023  * XXX: The assignment of ". += XyzSize;" fails in older gld's if the
0024  *      number used there is not constant.  If this happens to you, edit
0025  *      the lines marked XXX below to use a constant value.
0026  */
0027 /*
0028  * Declare size of heap.
0029  * A heap size of 0 means "Use all available memory for the heap".
0030  * Initial stack located in on-chip SRAM and not declared there.
0031  */
0032 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
0033 
0034 /*
0035  * Declare system clock frequency.
0036  */
0037 _SYS_CLOCK_FREQUENCY = DEFINED(_SYS_CLOCK_FREQUENCY) ? _SYS_CLOCK_FREQUENCY : 54000000;
0038 
0039 /*
0040  * Setup the memory map of the MCF5206eLITE evaluation board
0041  *
0042  * The "rom" section is in USER Flash on the board
0043  * The "ram" section is placed in USER RAM starting at 10000h
0044  * 
0045  */
0046 MEMORY
0047 {
0048   ram     : ORIGIN = 0x30000000, LENGTH = 0x00100000
0049   rom     : ORIGIN = 0xFFE00000, LENGTH = 0x00100000
0050 }
0051 
0052 MBase = 0x10000000;
0053 
0054 ENTRY(start)
0055 STARTUP(start.o)
0056 
0057 /* Interrupt Vector table located at start of external static RAM */
0058 _VBR = 0x30000000;
0059 
0060 SECTIONS
0061 {
0062   /*
0063    * Flash ROM
0064    */
0065   rom : {
0066         _RomBase = .;
0067   } >rom
0068 
0069   /*
0070    * Dynamic RAM
0071    */
0072   ram : {
0073           RamBase = .;
0074           RamBase = .;
0075   } >ram 
0076 
0077   /*
0078    * Text, data and bss segments
0079    */
0080    .text : AT(0x30020000) {
0081            CREATE_OBJECT_SYMBOLS
0082            *(.text*)
0083 
0084            /*
0085             * C++ constructors/destructors
0086             */
0087            *(.gnu.linkonce.t.*)
0088 
0089            /*
0090             * Initialization and finalization code.
0091             */
0092            . = ALIGN (16);
0093            PROVIDE (_init = .);
0094            *crti.o(.init)
0095            *(.init)
0096            *crtn.o(.init)
0097            . = ALIGN (16);
0098            PROVIDE (_fini = .);
0099            *crti.o(.fini)
0100            *(.fini)
0101            *crtn.o(.fini)
0102 
0103            /*
0104             * Special FreeBSD sysctl sections.
0105             */
0106            . = ALIGN (16);
0107            __start_set_sysctl_set = .;
0108            *(set_sysctl_*);
0109            __stop_set_sysctl_set = ABSOLUTE(.);
0110            *(set_domain_*);
0111            *(set_pseudo_*);
0112 
0113            /*
0114             * C++ constructors/destructors
0115             */
0116            . = ALIGN (16);
0117            *crtbegin.o(.ctors)
0118            *(.ctors)
0119            *crtend.o(.ctors)
0120            *crtbegin.o(.dtors)
0121            *(.dtors)
0122            *crtend.o(.dtors)
0123 
0124            /*
0125             * Exception frame info
0126             */
0127            . = ALIGN (16);
0128            *(.eh_frame)
0129 
0130            /*
0131             * Read-only data
0132             */
0133            . = ALIGN (16);
0134            _rodata_start = . ;
0135            *(.rodata)
0136            KEEP (*(SORT(.rtemsroset.*)))
0137            *(.gnu.linkonce.r*)
0138 
0139            . = ALIGN (16);
0140            PROVIDE (etext = .);
0141 
0142    } >rom
0143 
0144   .tdata : {
0145     _TLS_Data_begin = .;
0146     *(.tdata .tdata.* .gnu.linkonce.td.*)
0147     _TLS_Data_end = .;
0148   } >rom
0149 
0150   .tbss : {
0151     _TLS_BSS_begin = .;
0152     *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0153     _TLS_BSS_end = .;
0154   } >rom
0155 
0156   _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0157   _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0158   _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0159   _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0160   _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0161   _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0162 
0163    .data 0x30000400 : AT(LOADADDR(.text) + SIZEOF(.text)) {
0164            copy_start = .;
0165            . = ALIGN (0x10);
0166            *(.shdata)
0167            . = ALIGN (0x10);
0168            *(.data)
0169            KEEP (*(SORT(.rtemsrwset.*)))
0170            . = ALIGN (0x10);
0171            *(.gcc_exc)
0172            *(.gcc_except_table*)
0173            . = ALIGN (0x10);
0174            *(.gnu.linkonce.d*)
0175            . = ALIGN (0x10);
0176            _edata = .;
0177            copy_end = .;
0178    } >ram
0179 
0180   .bss BLOCK (0x4) :
0181   {
0182     clear_start = . ;
0183     *(.shbss)
0184     *(.dynbss)
0185     *(.bss* .gnu.linkonce.b.*)
0186     *(COMMON)
0187     . = ALIGN(0x10);
0188     _end = .;
0189     
0190     clear_end = .;
0191   } > ram
0192 
0193   .noinit (NOLOAD) : {
0194     *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0195   } >ram
0196 
0197   .rtemsstack (NOLOAD) : {
0198     *(SORT(.rtemsstack.*))
0199     WorkAreaBase = .;
0200   } > ram
0201 
0202   .stab 0 (NOLOAD) :
0203   {
0204     *(.stab)
0205   }
0206 
0207   .stabstr 0 (NOLOAD) :
0208   {
0209     *(.stabstr)
0210   }
0211  
0212 }