summaryrefslogblamecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/eth_comm/startup/linkcmds
blob: d2a072876f96f7ed54bcb1f60ba8d5d3e7cdb7c8 (plain) (tree)









































                                                                       
                                
                        
                                 
                            

                                                                            




























                                                         
                              















































































                                                           
/*
 *  This file contains directives for the GNU linker which are specific
 *  to the Ethernet-Comm Board
 *
 *  $Id$
 */

OUTPUT_FORMAT("elf32-powerpc", "elf32-powerpc",
              "elf32-powerpc")
OUTPUT_ARCH(powerpc)
 SEARCH_DIR(/usr/local/powerpc-rtems/lib);
 
ENTRY(start)
 
MEMORY
	{
	ram : org = 0x0, l = 4M
	dpram : org = 0xff000000, l = 16K
	canbus : org = 0xff100000, l = 12K
	flash : org = 0xfff00000, l = 512K
	}


SECTIONS
{
	.vectors :
	{
	  *(.vectors)
	} >ram

	/* 
	 * The stack will live in this area - between the vectors and
	 * the text section.
	 */
	
	.text 0x10000:
  	{
	     text.start = .;
	     *(.entry)
	     *(.entry2)
	     *(.text)
	     *(.rodata)
             *(.gnu.linkonce.r*)
	     *(.rodata1)
             *(.gnu.linkonce.t.*)
	     *(.descriptors)
             /* .gnu.warning sections are handled specially by elf32.em.  */
             *(.gnu.warning)
	     *(rom_ver)
	     etext = ALIGN(0x10);
	     _etext = .;
	
	     __CTOR_LIST__ = .;
	     LONG((__CTOR_END__ - __CTOR_LIST__) / 4 - 2)
	     *(.ctors)
	     LONG(0)
	     __CTOR_END__ = .;
	
	     __DTOR_LIST__ = .;
	     LONG((__DTOR_END__ - __DTOR_LIST__) / 4 - 2)
	     *(.dtors)
	     LONG(0)
	     __DTOR_END__ = .;
	
	     *(.lit)
	     *(.shdata)
	     *(.init)
	     *(.fini)
	     _endtext = .;
	     text.end = .;
	} > ram
 
	/* R/W Data */
	.data :
	{
	  *(.data)
	  *(.data1)
          *(.gnu.linkonce.d.*)
	  PROVIDE (__SDATA_START__ = .);
	  *(.sdata)
	} > ram
	
	PROVIDE (__EXCEPT_START__ = .);
	.gcc_except_table   : { *(.gcc_except_table) } >RAM
	PROVIDE (__EXCEPT_END__ = .);
	__GOT_START__ = .;
	.got :
	{
	   s.got = .;
	   *(.got.plt) *(.got)
	} > ram
	__GOT_END__ = .;
	
	.got1		  : { *(.got1) 		} >ram
	PROVIDE (__GOT2_START__ = .);
	PROVIDE (_GOT2_START_ = .);
	.got2		  :  { *(.got2) 	} >ram
	PROVIDE (__GOT2_END__ = .);
	PROVIDE (_GOT2_END_ = .);
	
	PROVIDE (__FIXUP_START__ = .);
	PROVIDE (_FIXUP_START_ = .);
	.fixup	  : { *(.fixup) 	} >ram
	PROVIDE (_FIXUP_END_ = .);
	PROVIDE (__FIXUP_END__ = .);
	 
	PROVIDE (__SDATA2_START__ = .);
	.sdata2   	  : { *(.sdata2) 	} >ram
	.sbss2   	  : { *(.sbss2) 	} >ram
	PROVIDE (__SBSS2_END__ = .);
	
	.sbss2   	  : { *(.sbss2) 	} >ram
	PROVIDE (__SBSS2_END__ = .);
	
	__SBSS_START__ = .;
	.bss :
	{
	  bss.start = .;
	  *(.bss) *(.sbss) *(COMMON)
	  . = ALIGN(4);
	  bss.end = .;
	} > ram
	__SBSS_END__ = .;

	bss.size = bss.end - bss.start;
	text.size = text.end - text.start;
	PROVIDE(_end = bss.end);
	
        dpram : 
	{
          m860 = .;
          _m860 = .;
          . += (8 * 1024);
        } >dpram

	canbus :
	{
	  canbus0 = .;
	  . += (0x1000);
	  canbus1 = .;
	  . += (0x1000);
	  canbus2 = .;
	  . += (0x1000);
	} >canbus


	.line 0 : { *(.line) }
	.debug 0 : { *(.debug) }
	.debug_sfnames 0 : { *(.debug_sfnames) }
	.debug_srcinfo 0 : { *(.debug_srcinfo) }
	.debug_pubnames 0 : { *(.debug_pubnames) }
	.debug_aranges 0 : { *(.debug_aranges) }
	.debug_aregion 0 : { *(.debug_aregion) }
	.debug_macinfo 0 : { *(.debug_macinfo) }
	.stab 0 : { *(.stab) }
	.stabstr 0 : { *(.stabstr) }

}