Back to home page

LXR

 
 

    


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 }