summaryrefslogblamecommitdiffstats
path: root/bsps/m68k/csb360/start/linkcmds
blob: 430f122e3d18762455dbbc079fb86840e720f664 (plain) (tree)
1
2
3
4
5
6





                                                          






                                                                  


                                                  
                           




                                                   


                


















                                                                   

                    
                             
                 




















































                                                
                                     






                            












                                                       

                                                                            

                                                 
                                                            

 




                         
                 
                                     

                         
                             











                           
                  
                                  
                 



                        

         



                      




                              










                       
/*
 * This file contains GNU linker directives for the Cogent
 * CSB360 development board.
 *
 * Copyright (C) 2004 Cogent Computer Systems
 * Author: Jay Monkman <jtm@lopingdog.com>
 */

/*
 * 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 : 0x00100000;
RamSize = DEFINED(RamSize) ? RamSize : 31M;
RamEnd = RamBase + RamSize;

/* This is needed for _CPU_ISR_install_vector - 
*  WARNING: it MUST match BSP_RAMBAR !!!!!!!!!!! */
_VBR = 0x20000000;

ENTRY(start)
STARTUP(start.o)

/*
 * Setup the memory map of the CSB360 board
 *
 * The "ram" section is placed in RAM after the space used by umon.
 * 
 */
MEMORY
{
  ram     : ORIGIN = 0x00100000, LENGTH = 31M
}

SECTIONS
{
     
  /*
   * Text, data and bss segments
   */
   .text : 
   {
	RamBase = .;
        RamBase = .;
	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 :
   {
	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 :
  {
	clear_start = . ;
	*(.shbss)
        *(.dynbss)
        *(.bss* .gnu.linkonce.b.*)
        *(COMMON)
	. = ALIGN(0x10);
	_end = .;
    
	clear_end = .;
  } > ram

  .noinit (NOLOAD) : {
       *(.noinit*)
  } >ram

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

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

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