/**
 * @file ldscript.bdi2000
 *
 * @section descr File description
 *
 * Trampoline Simtec eb675001 port linker configuration file
 *
 * This memory mapping is the reference. We provide a flashable version
 * but it is not currently maintained (as rarely used). Here, directives
 * to flash memory mapping are commented out. Just uncomment them to replace
 * all "remap" assignements.
 *
 * @section copyright Copyright
 *
 * Trampoline OS
 *
 * Trampoline is copyright (c) IRCCyN 2005+
 * Copyright ESEO for function and data structures documentation and ARM port
 * Trampoline is protected by the French intellectual property law.
 *
 * This software is distributed under the Lesser GNU Public Licence
 *
 * @section infos File informations
 *
 * $Date$
 * $Rev$
 * $Author$
 * $URL$
 */

MEMORY {
   remap (wx)  : ORIGIN = 0x00000000, LENGTH = 4M
   sram  (w)   : ORIGIN = 0x50000000, LENGTH = 32K
   dram  (w)   : ORIGIN = 0xC0000000, LENGTH = 32M
   rom   (r)   : ORIGIN = 0xC8000000, LENGTH = 4M
}

SECTIONS {

   /* contains all non-volatile and immutable data
    * code, constants, ... */
   immutable : {
      debut_rom = .;
		* (.vectbl)
		* (.text)
		* (.rodata)
      fin_rom = .;
   /*} > rom */
   } > remap
	
   initialized_vars : {
      debut_data = .;
      * (.data)
      fin_data = ALIGN(4); /* needs to be aligned for bootstrap to work */
   /* } > dram AT>rom */
   } > remap AT>remap

   uninitialized_vars (NOLOAD) : {
      debut_bss = .;
      * (.bss)
      * (COMMON)
      fin_bss = ALIGN(4); /* needs to be aligned for bootstrap to work */
      * (stacks)

      /* end symbol is used by newlib to know
       * where malloc will allocate its data */
      end = .;
   /*} > dram */
   } > remap

   /* stack of bootstrap needs to be in SRAM which does not need to be configured
     * to work.
     */
    bootstrap_stack (NOLOAD) : {
        *(bootstrap_stack)
    } > sram
	
    dram_overflow = 0xC2000000;
	remap_overflow = 0x08000000;
    sram_overflow = 0x50000000 + 32K;
}