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 }