Warning, /bsps/m68k/mcf5206elite/start/linkcmds.flash is written in an unsupported language. File is not indexed.
0001 /*
0002 * This file contains GNU linker directives for an MCF5206eLITE
0003 * evaluation board.
0004 *
0005 * Variations in memory size and allocation can be made by
0006 * overriding some values with linker command-line arguments.
0007 *
0008 * Copyright (C) 2000 OKTET Ltd., St.-Petersburg, Russia
0009 * Author: Victor V. Vengerov <vvv@oktet.ru>
0010 *
0011 * This file based on work:
0012 * David Fiddes, D.J.Fiddes@hw.ac.uk
0013 * http://www.calm.hw.ac.uk/davidf/coldfire/
0014 *
0015 * The license and distribution terms for this file may be
0016 * found in the file LICENSE in this distribution or at
0017 *
0018 * http://www.rtems.org/license/LICENSE.
0019 */
0020
0021 /*
0022 * Declare some sizes.
0023 * XXX: The assignment of ". += XyzSize;" fails in older gld's if the
0024 * number used there is not constant. If this happens to you, edit
0025 * the lines marked XXX below to use a constant value.
0026 */
0027 /*
0028 * Declare size of heap.
0029 * A heap size of 0 means "Use all available memory for the heap".
0030 * Initial stack located in on-chip SRAM and not declared there.
0031 */
0032 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
0033
0034 /*
0035 * Declare system clock frequency.
0036 */
0037 _SYS_CLOCK_FREQUENCY = DEFINED(_SYS_CLOCK_FREQUENCY) ? _SYS_CLOCK_FREQUENCY : 54000000;
0038
0039 /*
0040 * Setup the memory map of the MCF5206eLITE evaluation board
0041 *
0042 * The "rom" section is in USER Flash on the board
0043 * The "ram" section is placed in USER RAM starting at 10000h
0044 *
0045 */
0046 MEMORY
0047 {
0048 ram : ORIGIN = 0x30000000, LENGTH = 0x00100000
0049 rom : ORIGIN = 0xFFE00000, LENGTH = 0x00100000
0050 }
0051
0052 MBase = 0x10000000;
0053
0054 ENTRY(start)
0055 STARTUP(start.o)
0056
0057 /* Interrupt Vector table located at start of external static RAM */
0058 _VBR = 0x30000000;
0059
0060 SECTIONS
0061 {
0062 /*
0063 * Flash ROM
0064 */
0065 rom : {
0066 _RomBase = .;
0067 } >rom
0068
0069 /*
0070 * Dynamic RAM
0071 */
0072 ram : {
0073 RamBase = .;
0074 RamBase = .;
0075 } >ram
0076
0077 /*
0078 * Text, data and bss segments
0079 */
0080 .text : AT(0x30020000) {
0081 CREATE_OBJECT_SYMBOLS
0082 *(.text*)
0083
0084 /*
0085 * C++ constructors/destructors
0086 */
0087 *(.gnu.linkonce.t.*)
0088
0089 /*
0090 * Initialization and finalization code.
0091 */
0092 . = ALIGN (16);
0093 PROVIDE (_init = .);
0094 *crti.o(.init)
0095 *(.init)
0096 *crtn.o(.init)
0097 . = ALIGN (16);
0098 PROVIDE (_fini = .);
0099 *crti.o(.fini)
0100 *(.fini)
0101 *crtn.o(.fini)
0102
0103 /*
0104 * Special FreeBSD sysctl sections.
0105 */
0106 . = ALIGN (16);
0107 __start_set_sysctl_set = .;
0108 *(set_sysctl_*);
0109 __stop_set_sysctl_set = ABSOLUTE(.);
0110 *(set_domain_*);
0111 *(set_pseudo_*);
0112
0113 /*
0114 * C++ constructors/destructors
0115 */
0116 . = ALIGN (16);
0117 *crtbegin.o(.ctors)
0118 *(.ctors)
0119 *crtend.o(.ctors)
0120 *crtbegin.o(.dtors)
0121 *(.dtors)
0122 *crtend.o(.dtors)
0123
0124 /*
0125 * Exception frame info
0126 */
0127 . = ALIGN (16);
0128 *(.eh_frame)
0129
0130 /*
0131 * Read-only data
0132 */
0133 . = ALIGN (16);
0134 _rodata_start = . ;
0135 *(.rodata)
0136 KEEP (*(SORT(.rtemsroset.*)))
0137 *(.gnu.linkonce.r*)
0138
0139 . = ALIGN (16);
0140 PROVIDE (etext = .);
0141
0142 } >rom
0143
0144 .tdata : {
0145 _TLS_Data_begin = .;
0146 *(.tdata .tdata.* .gnu.linkonce.td.*)
0147 _TLS_Data_end = .;
0148 } >rom
0149
0150 .tbss : {
0151 _TLS_BSS_begin = .;
0152 *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0153 _TLS_BSS_end = .;
0154 } >rom
0155
0156 _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0157 _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0158 _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0159 _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0160 _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0161 _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0162
0163 .data 0x30000400 : AT(LOADADDR(.text) + SIZEOF(.text)) {
0164 copy_start = .;
0165 . = ALIGN (0x10);
0166 *(.shdata)
0167 . = ALIGN (0x10);
0168 *(.data)
0169 KEEP (*(SORT(.rtemsrwset.*)))
0170 . = ALIGN (0x10);
0171 *(.gcc_exc)
0172 *(.gcc_except_table*)
0173 . = ALIGN (0x10);
0174 *(.gnu.linkonce.d*)
0175 . = ALIGN (0x10);
0176 _edata = .;
0177 copy_end = .;
0178 } >ram
0179
0180 .bss BLOCK (0x4) :
0181 {
0182 clear_start = . ;
0183 *(.shbss)
0184 *(.dynbss)
0185 *(.bss* .gnu.linkonce.b.*)
0186 *(COMMON)
0187 . = ALIGN(0x10);
0188 _end = .;
0189
0190 clear_end = .;
0191 } > ram
0192
0193 .noinit (NOLOAD) : {
0194 *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0195 } >ram
0196
0197 .rtemsstack (NOLOAD) : {
0198 *(SORT(.rtemsstack.*))
0199 WorkAreaBase = .;
0200 } > ram
0201
0202 .stab 0 (NOLOAD) :
0203 {
0204 *(.stab)
0205 }
0206
0207 .stabstr 0 (NOLOAD) :
0208 {
0209 *(.stabstr)
0210 }
0211
0212 }