OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [lib/] [libbsp/] [m68k/] [gen68360/] [startup/] [linkcmds.bootp] - Rev 173

Compare with Previous | Blame | View Log

/*
 * This file contains GNU linker directives for a generic MC68360 board.
 * Variations in memory size and allocation can be made by
 * overriding some values with linker command-line arguments.
 *
 * These linker directives are for producing a bootstrap PROM version.
 * The data segment is placed at the end of the text segment in the PROM.
 * The start-up code takes care of copying this region to RAM.
 *
 * Saskatchewan Accelerator Laboratory
 * University of Saskatchewan
 * Saskatoon, Saskatchewan, CANADA
 * eric@skatter.usask.ca
 * 
 *  $Id: linkcmds.bootp,v 1.2 2001-09-27 12:00:08 chris Exp $
 */

/*
 * Declare some sizes.
 * A heap size of 0 means `use all available memory for the heap'.
 */
_RamBase = DEFINED(_RamBase) ? _RamBase : 0x0;
_RamSize = DEFINED(_RamSize) ? _RamSize : 64M;
_HeapSize = DEFINED(_HeapSize) ? _HeapSize : 0x0;
_StackSize = DEFINED(_StackSize) ? _StackSize : 0x1000;

/*
 * Declare on-board memory.
 */
MEMORY {
          ram : ORIGIN = 0x00000000, LENGTH = 64M
        myram : ORIGIN = 16M-400k,   LENGTH = 400k
          rom : ORIGIN = 0x0F000000, LENGTH = 1M
        dpram : ORIGIN = 0x0E000000, LENGTH = 8k
}

/*
 * Load objects
 */
SECTIONS {
        /*
         * Boot PROM
         */
        rom : {
                _RomBase = .;
        } >rom

        /*
         * Dynamic RAM
         */
        ram : {
                _RamBase = .;
        } >ram

        /*
         * Text, data and bss segments
         */
        .text : AT(0x0) {
                *(.text)

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

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

                /*
                 * 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 = .);
        } >rom
        .data : AT(SIZEOF(.text)) {
                _copy_start = .;
                *(.data)
                *(.gnu.linkonce.d*)
                *(.gcc_except_table)
                . = ALIGN (16);
                PROVIDE (edata = .);
                _copy_end = .;
        } >myram
        .bss : {
                M68Kvec = .;
                . += (256 * 4);
                _clear_start = .;
                *(.bss)
                *(COMMON)
                . = ALIGN (16);
                PROVIDE (end = .);

                . += _StackSize;
                . = ALIGN (16);
                _stack_init = .;
                _clear_end = .;

                _WorkspaceBase = .;
        } >myram

        /*
         * On-chip memory/peripherals
         */
        dpram : {
                m360 = .;
                . += (8 * 1024);
        } >dpram
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.