summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libbsp/m68k/csb360/startup/linkcmds
blob: 27297e0210af68724a974fdd4cf52ca0731f22f0 (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;

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

/*
 * 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*)
	*(.gnu.linkonce.r*)

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

   } > ram

   .data :
   {
	copy_start = .;
        *(.shdata)
        . = ALIGN (0x10);
        *(.data*)
        . = 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 = .;

	WorkAreaBase = .;
	WorkAreaBase = .;

  } > ram

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

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