Back to home page

LXR

 
 

    


Warning, /bsps/m68k/gen68360/start/linkcmds.prom is written in an unsupported language. File is not indexed.

0001 /*
0002  * This file contains GNU linker directives for a generic MC68360 board.
0003  * Variations in memory size and allocation can be made by
0004  * overriding some values with linker command-line arguments.
0005  *
0006  * These linker directives are for producing a PROM version.
0007  * The data segment is placed at the end of the text segment in the PROM.
0008  * The start-up code takes care of copying this region to RAM.
0009  *
0010  * Saskatchewan Accelerator Laboratory
0011  * University of Saskatchewan
0012  * Saskatoon, Saskatchewan, CANADA
0013  * eric@skatter.usask.ca
0014  */
0015 
0016 /*
0017  * Declare some sizes.
0018  * A heap size of 0 means `use all available memory for the heap'.
0019  */
0020 RamBase = DEFINED(RamBase) ? RamBase : 0x0;
0021 RamSize = DEFINED(RamSize) ? RamSize : 64M;
0022 RamEnd = RamBase + RamSize;
0023 HeapSize = DEFINED(HeapSize) ? HeapSize : 0x0;
0024 
0025 /*
0026  * Declare on-board memory.
0027  */
0028 MEMORY {
0029           ram : ORIGIN = 0x00000000, LENGTH = 64M
0030           rom : ORIGIN = 0x0F000000, LENGTH = 1M
0031         dpram : ORIGIN = 0x0E000000, LENGTH = 8k
0032 }
0033 
0034 /*
0035  * Load objects
0036  */
0037 SECTIONS {
0038         /*
0039          * Boot PROM
0040          */
0041         rom : {
0042                 _RomBase = .;
0043         } >rom
0044 
0045         /*
0046          * Dynamic RAM
0047          */
0048         ram : {
0049                 RamBase = .;
0050         } >ram
0051 
0052         /*
0053          * Text, data and bss segments
0054          */
0055         .text : AT(0x0) {
0056                 *(.text*)
0057 
0058                 /*
0059                  * C++ constructors/destructors
0060                  */
0061                 *(.gnu.linkonce.t.*)
0062 
0063                 /*
0064                  * Initialization and finalization code.
0065                  */
0066                 PROVIDE (_init = .);
0067                 *crti.o(.init)
0068                 *(.init)
0069                 *crtn.o(.init)
0070                 PROVIDE (_fini = .);
0071                 *crti.o(.fini)
0072                 *(.fini)
0073                 *crtn.o(.fini)
0074 
0075                 /*
0076                  * Special FreeBSD sysctl sections.
0077                  */
0078                 . = ALIGN (16);
0079                 __start_set_sysctl_set = .;
0080                 *(set_sysctl_*);
0081                 __stop_set_sysctl_set = ABSOLUTE(.);
0082                 *(set_domain_*);
0083                 *(set_pseudo_*);
0084 
0085                 /*
0086                  * C++ constructors/destructors
0087                  */
0088                 . = ALIGN (16);
0089                 *crtbegin.o(.ctors)
0090                 *(.ctors)
0091                 *crtend.o(.ctors)
0092                 *crtbegin.o(.dtors)
0093                 *(.dtors)
0094                 *crtend.o(.dtors)
0095 
0096                 /*
0097                  * Exception frame info
0098                  */
0099                 . = ALIGN (16);
0100                 *(.eh_frame)
0101 
0102                 /*
0103                  * Read-only data
0104                  */
0105                 . = ALIGN (16);
0106                 _rodata_start = . ;
0107                 *(.rodata*)
0108                 KEEP (*(SORT(.rtemsroset.*)))
0109                 *(.gnu.linkonce.r*)
0110 
0111                  . = ALIGN (16);
0112                 PROVIDE (etext = .);
0113         } >rom
0114 
0115         .tdata : {
0116                 _TLS_Data_begin = .;
0117                 *(.tdata .tdata.* .gnu.linkonce.td.*)
0118                 _TLS_Data_end = .;
0119         } >rom
0120 
0121         .tbss : {
0122                 _TLS_BSS_begin = .;
0123                 *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon)
0124                 _TLS_BSS_end = .;
0125         } >rom
0126 
0127         _TLS_Data_size = _TLS_Data_end - _TLS_Data_begin;
0128         _TLS_Data_begin = _TLS_Data_size != 0 ? _TLS_Data_begin : _TLS_BSS_begin;
0129         _TLS_Data_end = _TLS_Data_size != 0 ? _TLS_Data_end : _TLS_BSS_begin;
0130         _TLS_BSS_size = _TLS_BSS_end - _TLS_BSS_begin;
0131         _TLS_Size = _TLS_BSS_end - _TLS_Data_begin;
0132         _TLS_Alignment = MAX (ALIGNOF (.tdata), ALIGNOF (.tbss));
0133 
0134         .data : AT(SIZEOF(.text)) {
0135                 _copy_start = .;
0136                 *(.data)
0137                 KEEP (*(SORT(.rtemsrwset.*)))
0138                 *(.gnu.linkonce.d*)
0139                 *(.jcr)
0140                 *(.gcc_except_table*)
0141                 . = ALIGN (16);
0142                 PROVIDE (edata = .);
0143                 _copy_end = .;
0144         } >ram
0145         .bss : {
0146                 M68Kvec = .;
0147                 . += (256 * 4);
0148                 *(.dynbss)
0149                 *(.bss* .gnu.linkonce.b.*)
0150                 *(COMMON)
0151                 . = ALIGN (16);
0152                 PROVIDE (end = .);
0153                 _clear_end = .;
0154         } >ram
0155 
0156         .noinit (NOLOAD) : {
0157                 *(SORT_BY_NAME (SORT_BY_ALIGNMENT (.noinit*)))
0158         } > ram
0159 
0160         .rtemsstack (NOLOAD) : {
0161                 *(SORT(.rtemsstack.*))
0162                 WorkAreaBase = .;
0163         } >ram
0164 
0165         /*
0166          * On-chip memory/peripherals
0167          */
0168         dpram : {
0169                 m360 = .;
0170                 . += (8 * 1024);
0171         } >dpram
0172 }