Warning, /bsps/m68k/csb360/start/linkcmds is written in an unsupported language. File is not indexed.
0001 /*
0002 * This file contains GNU linker directives for the Cogent
0003 * CSB360 development board.
0004 *
0005 * Copyright (C) 2004 Cogent Computer Systems
0006 * Author: Jay Monkman <jtm@lopingdog.com>
0007 */
0008
0009 /*
0010 * Declare size of heap.
0011 * A heap size of 0 means "Use all available memory for the heap".
0012 * Initial stack located in on-chip SRAM and not declared there.
0013 */
0014 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
0015 RamBase = DEFINED(RamBase) ? RamBase : 0x00100000;
0016 RamSize = DEFINED(RamSize) ? RamSize : 31M;
0017 RamEnd = RamBase + RamSize;
0018
0019 /* This is needed for _CPU_ISR_install_vector -
0020 * WARNING: it MUST match BSP_RAMBAR !!!!!!!!!!! */
0021 _VBR = 0x20000000;
0022
0023 ENTRY(start)
0024 STARTUP(start.o)
0025
0026 /*
0027 * Setup the memory map of the CSB360 board
0028 *
0029 * The "ram" section is placed in RAM after the space used by umon.
0030 *
0031 */
0032 MEMORY
0033 {
0034 ram : ORIGIN = 0x00100000, LENGTH = 31M
0035 }
0036
0037 SECTIONS
0038 {
0039
0040 /*
0041 * Text, data and bss segments
0042 */
0043 .text :
0044 {
0045 RamBase = .;
0046 RamBase = .;
0047 CREATE_OBJECT_SYMBOLS
0048 *(.text*)
0049
0050 /*
0051 * C++ constructors/destructors
0052 */
0053 *(.gnu.linkonce.t.*)
0054
0055 /*
0056 * Initialization and finalization code.
0057 */
0058 . = ALIGN (16);
0059 PROVIDE (_init = .);
0060 *crti.o(.init)
0061 *(.init)
0062 *crtn.o(.init)
0063 . = ALIGN (16);
0064 PROVIDE (_fini = .);
0065 *crti.o(.fini)
0066 *(.fini)
0067 *crtn.o(.fini)
0068
0069 /*
0070 * Special FreeBSD sysctl sections.
0071 */
0072 . = ALIGN (16);
0073 __start_set_sysctl_set = .;
0074 *(set_sysctl_*);
0075 __stop_set_sysctl_set = ABSOLUTE(.);
0076 *(set_domain_*);
0077 *(set_pseudo_*);
0078
0079 /*
0080 * C++ constructors/destructors
0081 */
0082 . = ALIGN (16);
0083 *crtbegin.o(.ctors)
0084 *(.ctors)
0085 *crtend.o(.ctors)
0086 *crtbegin.o(.dtors)
0087 *(.dtors)
0088 *crtend.o(.dtors)
0089
0090 /*
0091 * Exception frame info
0092 */
0093 . = ALIGN (16);
0094 *(.eh_frame)
0095
0096 /*
0097 * Read-only data
0098 */
0099 . = ALIGN (16);
0100 _rodata_start = .;
0101 *(.rodata*)
0102 KEEP (*(SORT(.rtemsroset.*)))
0103 *(.gnu.linkonce.r*)
0104
0105 . = ALIGN (16);
0106 PROVIDE (etext = .);
0107
0108 } > ram
0109
0110 .tdata : {
0111 _TLS_Data_begin = .;
0112 *(.tdata .tdata.* .gnu.linkonce.td.*)
0113 _TLS_Data_end = .;
0114 } >ram
0115
0116 .tbss : {
0117 _TLS_BSS_begin = .;
0118 *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0119 _TLS_BSS_end = .;
0120 } >ram
0121
0122 _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0123 _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0124 _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0125 _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0126 _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0127 _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0128
0129
0130 .data :
0131 {
0132 copy_start = .;
0133 *(.shdata)
0134 . = ALIGN (0x10);
0135 *(.data*)
0136 KEEP (*(SORT(.rtemsrwset.*)))
0137 . = ALIGN (0x10);
0138 *(.gcc_exc)
0139 *(.gcc_except_table*)
0140 *(.jcr)
0141 . = ALIGN (0x10);
0142 *(.gnu.linkonce.d*)
0143 . = ALIGN (0x10);
0144 _edata = .;
0145 copy_end = .;
0146 } > ram
0147
0148 .bss :
0149 {
0150 clear_start = . ;
0151 *(.shbss)
0152 *(.dynbss)
0153 *(.bss* .gnu.linkonce.b.*)
0154 *(COMMON)
0155 . = ALIGN(0x10);
0156 _end = .;
0157
0158 clear_end = .;
0159 } > ram
0160
0161 .noinit (NOLOAD) : {
0162 *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0163 } >ram
0164
0165 .rtemsstack (NOLOAD) : {
0166 *(SORT(.rtemsstack.*))
0167 WorkAreaBase = .;
0168 } >ram
0169
0170 .stab 0 (NOLOAD) :
0171 {
0172 *(.stab)
0173 }
0174
0175 .stabstr 0 (NOLOAD) :
0176 {
0177 *(.stabstr)
0178 }
0179
0180 /* Addition to let linker know about custom section for GDB pretty-printing support. */
0181 .debug_gdb_scripts 0 : { *(.debug_gdb_scripts) }
0182 }