Mercurial > flash_v2
comparison packages/hal/powerpc/sim/current/src/sim.ld @ 0:3111d98ba7b3 ecos-v1_1-release
Initial commit of eCos version 1.1
| author | jlarmour |
|---|---|
| date | Tue, 11 May 1999 11:16:07 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:3111d98ba7b3 |
|---|---|
| 1 //========================================================================== | |
| 2 // | |
| 3 // sim.ld | |
| 4 // | |
| 5 // Linker script for PowerPC simulator | |
| 6 // | |
| 7 //========================================================================== | |
| 8 //####COPYRIGHTBEGIN#### | |
| 9 // | |
| 10 // ------------------------------------------- | |
| 11 // The contents of this file are subject to the Cygnus Public License | |
| 12 // Version 1.0 (the "License"); you may not use this file except in | |
| 13 // compliance with the License. You may obtain a copy of the License at | |
| 14 // http://www.cygnus.com. | |
| 15 // | |
| 16 // Software distributed under the License is distributed on an "AS IS" | |
| 17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the | |
| 18 // License for the specific language governing rights and limitations under | |
| 19 // the License. | |
| 20 // | |
| 21 // The Original Code is eCos code, released September 30, 1998. | |
| 22 // | |
| 23 // The Initial Developer of the Original Code is Cygnus. Portions created | |
| 24 // by Cygnus are Copyright (C) 1998 Cygnus Solutions. All Rights Reserved. | |
| 25 // ------------------------------------------- | |
| 26 // | |
| 27 //####COPYRIGHTEND#### | |
| 28 //========================================================================== | |
| 29 //#####DESCRIPTIONBEGIN#### | |
| 30 // | |
| 31 // Author(s): nickg | |
| 32 // Contributors:nickg | |
| 33 // Date: 1998-02-17 | |
| 34 // Purpose: PowerPC simulator Linker script | |
| 35 // Description: This script is passed to the linker to define the memory | |
| 36 // of the PowerPC simulator. | |
| 37 // | |
| 38 //####DESCRIPTIONEND#### | |
| 39 // | |
| 40 //========================================================================== | |
| 41 STARTUP(vectors.o) | |
| 42 OUTPUT_FORMAT("elf32-powerpc") | |
| 43 OUTPUT_ARCH(powerpc) | |
| 44 ENTRY(reset_vector) | |
| 45 // Do we need any of these for elf? | |
| 46 // __DYNAMIC = 0; | |
| 47 | |
| 48 GROUP(libtarget.a libgcc.a) | |
| 49 | |
| 50 #include <pkgconf/hal.h> | |
| 51 | |
| 52 MEMORY | |
| 53 { | |
| 54 | |
| 55 // In a RAM system, fake the division between ROM and | |
| 56 // RAM for testing. | |
| 57 ram_vectors : ORIGIN = 0x00000000, LENGTH = 0x2000 | |
| 58 rom_vectors : ORIGIN = 0x00002000, LENGTH = 0x2000 | |
| 59 ram : ORIGIN = 0x00004000, LENGTH = 496k | |
| 60 rom : ORIGIN = 0x00080000, LENGTH = 512k | |
| 61 } | |
| 62 | |
| 63 // Allocate the stack to be at the top of memory, since the stack | |
| 64 // grows down | |
| 65 | |
| 66 PROVIDE (__interrupt_stack = 0x00100000); | |
| 67 | |
| 68 // Initalize some symbols to be zero so we can reference them in the | |
| 69 // crt0 without core dumping. These functions are all optional, but | |
| 70 // we do this so we can have our crt0 always use them if they exist. | |
| 71 // This is so BSPs work better when using the crt0 installed gcc. | |
| 72 // We have to initalize them twice, so we cover a.out (which prepends | |
| 73 // an underscore) and coff object file formats. | |
| 74 | |
| 75 //PROVIDE (hardware_init_hook = 0); | |
| 76 //PROVIDE (software_init_hook = 0); | |
| 77 | |
| 78 SECTIONS | |
| 79 { | |
| 80 // Read-only sections, merged into text segment: | |
| 81 .interp : { *(.interp) } >rom | |
| 82 .hash : { *(.hash) } >rom | |
| 83 .dynsym : { *(.dynsym) } >rom | |
| 84 .dynstr : { *(.dynstr) } >rom | |
| 85 .rel.text : { *(.rel.text) } >rom | |
| 86 .rela.text : { *(.rela.text) } >rom | |
| 87 .rel.data : { *(.rel.data) } >rom | |
| 88 .rela.data : { *(.rela.data) } >rom | |
| 89 .rel.rodata : { *(.rel.rodata) } >rom | |
| 90 .rela.rodata : { *(.rela.rodata) } >rom | |
| 91 .rel.got : { *(.rel.got) } >rom | |
| 92 .rela.got : { *(.rela.got) } >rom | |
| 93 .rel.got1 : { *(.rel.got1) } >rom | |
| 94 .rela.got1 : { *(.rela.got1) } >rom | |
| 95 .rel.got2 : { *(.rel.got2) } >rom | |
| 96 .rela.got2 : { *(.rela.got2) } >rom | |
| 97 .rel.ctors : { *(.rel.ctors) } >rom | |
| 98 .rela.ctors : { *(.rela.ctors) } >rom | |
| 99 .rel.dtors : { *(.rel.dtors) } >rom | |
| 100 .rela.dtors : { *(.rela.dtors) } >rom | |
| 101 .rel.init : { *(.rel.init) } >rom | |
| 102 .rela.init : { *(.rela.init) } >rom | |
| 103 .rel.fini : { *(.rel.fini) } >rom | |
| 104 .rela.fini : { *(.rela.fini) } >rom | |
| 105 .rel.bss : { *(.rel.bss) } >rom | |
| 106 .rela.bss : { *(.rela.bss) } >rom | |
| 107 .rel.plt : { *(.rel.plt) } >rom | |
| 108 .rela.plt : { *(.rela.plt) } >rom | |
| 109 .init : { | |
| 110 *(.init.head) | |
| 111 *(.init) | |
| 112 *(.init.tail) | |
| 113 } >rom =0 | |
| 114 .plt : { *(.plt) } >rom | |
| 115 .text : | |
| 116 { | |
| 117 _stext = .; | |
| 118 *(.text*) | |
| 119 *(.gnu.warning) | |
| 120 *(.gnu.linkonce*) | |
| 121 } >rom =0 | |
| 122 _etext = .; | |
| 123 PROVIDE (etext = .); | |
| 124 .fini : { | |
| 125 *(.fini.head) | |
| 126 *(.fini) | |
| 127 *(.fini.tail) | |
| 128 } >rom =0 | |
| 129 | |
| 130 .rodata1 : { *(.rodata1) } >rom | |
| 131 .rodata : { *(.rodata*) } >rom | |
| 132 __FIXUP_START__ = .; | |
| 133 .fixup : { *(.fixup) } >rom | |
| 134 __FIXUP_END__ = .; | |
| 135 __EXCEPT_START__ =.; | |
| 136 .gcc_except_table : { *(.gcc_except_table) } >rom | |
| 137 __EXCEPT_END__ =.; | |
| 138 // Read-write section, merged into data segment: | |
| 139 __rom_data_start = ALIGN(4); | |
| 140 .data : | |
| 141 AT( __rom_data_start ) | |
| 142 { | |
| 143 __ram_data_start = .; | |
| 144 PROVIDE( __ram_data_start = .); | |
| 145 | |
| 146 *(.data*) | |
| 147 __GOT1_START__ = .; | |
| 148 *(.got1) | |
| 149 __GOT1_END__ = .; | |
| 150 // Put .ctors and .dtors next to the .got2 section, so that the pointers | |
| 151 // get relocated with -mrelocatable. | |
| 152 #ifdef CYG_KERNEL_USE_INIT_PRIORITY | |
| 153 . = ALIGN(8); | |
| 154 __CTOR_LIST__ = .; | |
| 155 KEEP(*(SORT(.ctors*))) | |
| 156 __CTOR_END__ = .; | |
| 157 __DTOR_LIST__ = .; | |
| 158 KEEP(*(SORT(.dtors*))) | |
| 159 __DTOR_END__ = .; | |
| 160 #else | |
| 161 __CTOR_LIST__ = .; | |
| 162 *sched.o(.ctors*) | |
| 163 *clock.o(.ctors*) | |
| 164 *thread.o(.ctors*) | |
| 165 *(.ctors*) | |
| 166 __CTOR_END__ = .; | |
| 167 __DTOR_LIST__ = .; | |
| 168 *(.dtors*) | |
| 169 __DTOR_END__ = .; | |
| 170 #endif | |
| 171 __GOT2_START__ = .; | |
| 172 *(.got2) | |
| 173 __GOT2_END__ = .; | |
| 174 __GOT_START__ = .; | |
| 175 _GLOBAL_OFFSET_TABLE_ = . + 32768; | |
| 176 _SDA_BASE_ = .; | |
| 177 *(.got.plt) | |
| 178 *(.got) | |
| 179 __GOT_END__ = .; | |
| 180 *(.dynamic) | |
| 181 // We want the small data sections together, so single-instruction offsets | |
| 182 // can access them all, and initialized data all before uninitialized, so | |
| 183 // we can shorten the on-disk segment size. | |
| 184 __SDATA_START__ = .; | |
| 185 *(.sdata) | |
| 186 __SDATA2_START__ = .; | |
| 187 *(.sdata2) | |
| 188 } >ram | |
| 189 __ram_data_end = .; | |
| 190 PROVIDE( __ram_data_end = .); | |
| 191 _edata = .; | |
| 192 PROVIDE (edata = .); | |
| 193 __bss_start = .; | |
| 194 .sbss : | |
| 195 { | |
| 196 __SBSS_START__ = .; | |
| 197 *(.sbss*) | |
| 198 __SBSS_END__ = .; | |
| 199 __SBSS2_START__ = .; | |
| 200 *(.sbss2) | |
| 201 __SBSS2_END__ = .; | |
| 202 *(.scommon) | |
| 203 } >ram | |
| 204 | |
| 205 .bss : | |
| 206 { | |
| 207 *(.dynbss) | |
| 208 *(.bss) | |
| 209 *(COMMON) | |
| 210 } >ram | |
| 211 _end = . ; | |
| 212 PROVIDE (end = .); | |
| 213 | |
| 214 | |
| 215 __rom_ram_vectors_start = ALIGN(4); | |
| 216 #if 1 | |
| 217 .vectors : | |
| 218 { | |
| 219 *(.vectors) | |
| 220 } > ram_vectors | |
| 221 #else | |
| 222 .ram_vectors : | |
| 223 AT ( __rom_ram_vectors_start ) | |
| 224 { | |
| 225 __ram_vectors_start = .; | |
| 226 *(.ram_vectors) | |
| 227 __ram_vectors_end = .; | |
| 228 } >ram_vectors | |
| 229 | |
| 230 .rom_vectors : | |
| 231 { | |
| 232 *(.rom_vectors) | |
| 233 } >rom_vectors | |
| 234 #endif | |
| 235 | |
| 236 } | |
| 237 |
