summaryrefslogblamecommitdiffstats
path: root/bsps/m68k/mcf5206elite/start/linkcmds
blob: ebabe5f5f7247e4ed78d3a6542ec8265268ebdaf (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
















                                                               
                                        







                                                                        






                                                               




                                                                  


                                                  
                           















                                                             


                









                                                                    

                      







                                                 
                                
                    








                                                   
                          



                               
                          





                               









                                               



















                                          

                             
                                        

                              
                          



                               












                                                   

                                                                           

                                                
                                                           
 



                            
                    
                                        

                            
                                
                  










                              
              
                              




                    
         
 

                          
                     












                       
/*
 * This file contains GNU linker directives for an MCF5206eLITE
 * evaluation board.
 *
 * Variations in memory size and allocation can be made by
 * overriding some values with linker command-line arguments.
 *
 * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
 * Author: Victor V. Vengerov <vvv@oktet.ru>
 *
 * This file based on work:
 * David Fiddes, D.J.Fiddes@hw.ac.uk
 * http://www.calm.hw.ac.uk/davidf/coldfire/
 *
 * The license and distribution terms for this file may be
 * found in the file LICENSE in this distribution or at
 *
 * http://www.rtems.org/license/LICENSE.
 */

/*
 * Declare some sizes.
 * XXX: The assignment of ". += XyzSize;" fails in older gld's if the
 *      number used there is not constant.  If this happens to you, edit
 *      the lines marked XXX below to use a constant value.
 */

/*
 * Declare system clock frequency.
 */
_SYS_CLOCK_FREQUENCY = DEFINED(_SYS_CLOCK_FREQUENCY) ?
                               _SYS_CLOCK_FREQUENCY : 54000000;

/*
 * Declare size of heap.
 * A heap size of 0 means "Use all available memory for the heap".
 * Initial stack located in on-chip SRAM and not declared there.
 */
HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
RamBase = DEFINED(RamBase) ? RamBase : 0x30000000;
RamSize = DEFINED(RamSize) ? RamSize : 0x00100000;
RamEnd = RamBase + RamSize;

/*
 * Setup the memory map of the MCF5206eLITE evaluation board
 *
 * The "rom" section is in USER Flash on the board
 * The "ram" section is placed in USER RAM starting at 10000h
 * 
 */
MEMORY
{
  ram     : ORIGIN = 0x30000000, LENGTH = 0x00100000
  rom     : ORIGIN = 0xFFE20000, LENGTH = 128k 
}

MBase = 0x10000000;

ENTRY(start)
STARTUP(start.o)

/* Interrupt Vector table located at start of external static RAM */
_VBR = 0x30000000;

SECTIONS
{
     
  /*
   * Dynamic RAM
   */
  ram : {
          RamBase = .;
          RamBase = .;
          /* Reserve space for interrupt table */
          . += 0x400;
  } >ram 

  /*
   * Text, data and bss segments
   */
   .text : {
	   CREATE_OBJECT_SYMBOLS
	   *(.text*)

	   /*
	    * C++ constructors/destructors
	    */
	   *(.gnu.linkonce.t.*)

	   /*
	    * Initialization and finalization code.
	    */
	   . = ALIGN (16);
	   PROVIDE (_init = .);
	   *crti.o(.init)
	   *(.init)
	   *crtn.o(.init)
	   . = ALIGN (16);
	   PROVIDE (_fini = .);
	   *crti.o(.fini)
	   *(.fini)
	   *crtn.o(.fini)

	   /*
	    * Special FreeBSD sysctl sections.
	    */
	   . = ALIGN (16);
	   __start_set_sysctl_set = .;
	   *(set_sysctl_*);
	   __stop_set_sysctl_set = ABSOLUTE(.);
	   *(set_domain_*);
	   *(set_pseudo_*);

	   /*
	    * C++ constructors/destructors
	    */
	   . = ALIGN (16);
	   *crtbegin.o(.ctors)
	   *(.ctors)
	   *crtend.o(.ctors)
	   *crtbegin.o(.dtors)
	   *(.dtors)
	   *crtend.o(.dtors)

	   /*
	    * Exception frame info
	    */
	   . = ALIGN (16);
	   *(.eh_frame)

	   /*
	    * Read-only data
	    */
	   . = ALIGN (16);
	   _rodata_start = .;
	   *(.rodata*)
           KEEP (*(SORT(.rtemsroset.*)))
	   *(.gnu.linkonce.r*)

	   . = ALIGN (16);
           PROVIDE (etext = .);

   } > ram

  .tdata : {
    _TLS_Data_begin = .;
    *(.tdata .tdata.* .gnu.linkonce.td.*)
    _TLS_Data_end = .;
  } >ram

  .tbss : {
    _TLS_BSS_begin = .;
    *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
    _TLS_BSS_end = .;
  } >ram

  _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
  _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
  _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
  _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
  _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
  _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));

   .data BLOCK (0x4) : {
           copy_start = .;
           *(.shdata)
           . = ALIGN (0x10);
           *(.data*)
           KEEP (*(SORT(.rtemsrwset.*)))
           . = ALIGN (0x10);
           *(.gcc_exc)
           *(.gcc_except_table*)
	   *(.jcr)
           . = ALIGN (0x10);
           *(.gnu.linkonce.d*)
           . = ALIGN (0x10);
           _edata = .;
	   copy_end = .;
   } > ram

  .bss BLOCK (0x4) :
  {
    clear_start = . ;
    *(.shbss)
    *(.dynbss)
    *(.bss* .gnu.linkonce.b.*)
    *(COMMON)
    . = ALIGN(0x10);
    _end = .;
    
    clear_end = .;
  } > ram

  .rtemsstack (NOLOAD) : {
    *(SORT(.rtemsstack.*))
    WorkAreaBase = .;
  } > ram

  .stab 0 (NOLOAD) :
  {
    *(.stab)
  }

  .stabstr 0 (NOLOAD) :
  {
    *(.stabstr)
  }
 
}