annotate packages/hal/arm/arch/current/src/arm.ld @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents
children ece80412419a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1 //=============================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
2 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
3 // MLT linker script for ARM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
4 // adapted from packages/hal/arm/pid/v1_1/src/pid.ld
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
5 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
6 //=============================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
7 //####COPYRIGHTBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
8 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
9 // -------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
10 // The contents of this file are subject to the Cygnus eCos Public License
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
11 // Version 1.0 (the "License"); you may not use this file except in
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
12 // compliance with the License. You may obtain a copy of the License at
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
13 // http://sourceware.cygnus.com/ecos
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
14 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
15 // Software distributed under the License is distributed on an "AS IS"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
16 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
17 // License for the specific language governing rights and limitations under
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
18 // the License.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
19 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
20 // The Original Code is eCos - Embedded Cygnus Operating System, released
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
21 // September 30, 1998.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
22 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
23 // The Initial Developer of the Original Code is Cygnus. Portions created
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
24 // by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
25 // -------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
26 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
27 //####COPYRIGHTEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
28 //=============================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
29
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
30 #include <pkgconf/system.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
31 STARTUP(vectors.o)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
32 ENTRY(reset_vector)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
33 #ifdef EXTRAS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
34 INPUT(extras.o)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
35 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
36 GROUP(libtarget.a libgcc.a)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
37
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
38 #define ALIGN_LMA 4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
39 #define FOLLOWING(_section_) AT ((LOADADDR (_section_) + SIZEOF (_section_) + ALIGN_LMA - 1) & ~ (ALIGN_LMA - 1))
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
40 #define LMA_EQ_VMA
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
41 #define FORCE_OUTPUT . = .
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
42
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
43 #define SECTIONS_BEGIN \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
44 /* Debug information */ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
45 .debug_aranges 0 : { *(.debug_aranges) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
46 .debug_pubnames 0 : { *(.debug_pubnames) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
47 .debug_info 0 : { *(.debug_info) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
48 .debug_abbrev 0 : { *(.debug_abbrev) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
49 .debug_line 0 : { *(.debug_line) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
50 .debug_frame 0 : { *(.debug_frame) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
51 .debug_str 0 : { *(.debug_str) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
52 .debug_loc 0 : { *(.debug_loc) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
53 .debug_macinfo 0 : { *(.debug_macinfo) }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
54
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
55 #define SECTION_rom_vectors(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
56 .rom_vectors _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
57 { FORCE_OUTPUT; KEEP (*(.vectors)) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
58 > _region_
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
59
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
60 #define SECTION_text(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
61 .text _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
62 { _stext = ABSOLUTE(.); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
63 PROVIDE (__stext = ABSOLUTE(.)); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
64 *(.text*) *(.gnu.warning) *(.gnu.linkonce*) *(.init) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
65 > _region_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
66 __etext = .; PROVIDE (__etext = .);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
67
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
68 #define SECTION_fini(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
69 .fini _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
70 { FORCE_OUTPUT; *(.fini) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
71 > _region_
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
72
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
73 #define SECTION_rodata(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
74 .rodata _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
75 { FORCE_OUTPUT; *(.rodata*) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
76 > _region_
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
77
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
78 #define SECTION_rodata1(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
79 .rodata1 _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
80 { FORCE_OUTPUT; *(.rodata1) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
81 > _region_
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
82
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
83 #define SECTION_fixup(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
84 .fixup _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
85 { FORCE_OUTPUT; *(.fixup) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
86 > _region_
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
87
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
88 #define SECTION_gcc_except_table(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
89 .gcc_except_table _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
90 { FORCE_OUTPUT; *(.gcc_except_table) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
91 > _region_
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
92
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
93 #define SECTION_data(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
94 .data _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
95 { __ram_data_start = ABSOLUTE (.); *(.data*) *(.data1) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
96 _GOT1_START_ = ABSOLUTE (.); *(.got1) _GOT1_END_ = ABSOLUTE (.); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
97 _GOT2_START_ = ABSOLUTE (.); *(.got2) _GOT2_END_ = ABSOLUTE (.); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
98 . = ALIGN (4); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
99 __DEVTAB__ = ABSOLUTE (.); KEEP (*(SORT (.devtab*))) __DEVTAB_END__ = ABSOLUTE (.); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
100 __CTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.ctors*))) __CTOR_END__ = ABSOLUTE (.); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
101 __DTOR_LIST__ = ABSOLUTE (.); KEEP (*(SORT (.dtors*))) __DTOR_END__ = ABSOLUTE (.); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
102 *(.dynamic) *(.sdata*) *(.sbss*) } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
103 > _region_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
104 __rom_data_start = LOADADDR (.data); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
105 __ram_data_end = .; PROVIDE (__ram_data_end = .); _edata = .; PROVIDE (edata = .); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
106 PROVIDE (__rom_data_end = LOADADDR (.data) + SIZEOF(.data));
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
107
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
108 #define SECTION_bss(_region_, _vma_, _lma_) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
109 .bss _vma_ : _lma_ \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
110 { __bss_start = ABSOLUTE (.); \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
111 *(.scommon) *(.dynbss) *(.bss) *(COMMON) \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
112 __bss_end = ABSOLUTE (.); } \
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
113 > _region_
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
114
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
115 #define SECTIONS_END . = ALIGN(4); _end = .; PROVIDE (end = .);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
116
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
117 #include <pkgconf/hal_arm.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
118 #include CYGHWR_MEMORY_LAYOUT_LDI