source: rtems/c/src/lib/libbsp/arm/rtl22xx/startup/linkcmds @ 4f181b3

4.104.114.84.9
Last change on this file since 4f181b3 was 4f181b3, checked in by Ralf Corsepius <ralf.corsepius@…>, on Apr 25, 2007 at 1:13:54 PM

2007-04-25 Ray Xu <xr@…>

  • include/tm27.h, startup/bspstart.c, startup/exit.c, startup/linkcmds: New (Initial submission).
  • Property mode set to 100644
File size: 4.7 KB
Line 
1/*
2 * Philips lpc ARM linker script
3 * By Ray,Xu
4 * Rayx.cn@gmail.com
5 *     
6 *  The license and distribution terms for this file may be
7 *  found in the file LICENSE in this distribution or at
8 *
9 *  http://www.rtems.com/license/LICENSE.
10 *
11 *
12 *  $Id$
13 *  LPC22xx ARM do not have a
14*/
15
16OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm",
17              "elf32-littlearm")
18OUTPUT_ARCH(arm)
19ENTRY(_start)
20
21
22MEMORY {
23        sdram : ORIGIN = 0x81000000, LENGTH = 512K
24        sram : ORIGIN = 0x40000000, LENGTH = 16K
25        regs  : ORIGIN = 0xe0000000, LENGTH = 2M
26}
27
28/*
29 * Declare some sizes.
30 */
31
32_sdram_base = DEFINED(_sdram_base) ? _sdram_base : 0x81000000;
33_sdram_size = DEFINED(_sdram_size) ? _sdram_size : 512K;
34
35
36_irq_stack_size = DEFINED(_irq_stack_size) ? _irq_stack_size : 0x100;
37_fiq_stack_size = DEFINED(_fiq_stack_size) ? _fiq_stack_size : 0x50;
38_abt_stack_size = DEFINED(_abt_stack_size) ? _abt_stack_size : 0x50;
39_svc_stack_size = DEFINED(_svc_stack_size) ? _svc_stack_size : 0x2000;
40
41
42
43/* Do we need any of these for elf?
44   __DYNAMIC = 0;    */
45
46SECTIONS
47{
48  .base :
49  {
50    _sram_base = .;
51    arm_exception_table = .;   
52
53    arm_reset_vect    = .;     /* 0x00 */
54    . += 4;
55
56    arm_undef_vect    = .;     /* 0x04 */
57    . += 4;
58
59    arm_swi_vect      = .;     /* 0x08 */
60    . += 4;
61
62    arm_iabrt_vect    = .;     /* 0x0c */
63    . += 4;
64
65    arm_dabrt_vect    = .;     /* 0x10 */
66    . += 4;
67
68    /* no vector here */
69    . += 4;
70
71    arm_irq_vect      = .;     /* 0x18 */
72    . += 4;
73
74    arm_fiq_vect      = .;     /* 0x1c */
75    . += 4;
76
77
78    rtems_vector_table = .;
79    . += (8 * 4);                     /* 8 ARM interrupts */
80       
81    /*bsp_vector_table = .;*/
82     /*. += (64 * 4);                    64 LPC22xx interrupts */
83
84    . = ALIGN (0x100);
85
86  } > sram
87
88
89  .text      :
90  {
91        _text_start = .;
92         CREATE_OBJECT_SYMBOLS
93        *(.text)
94        *(.text.*)
95
96        /*
97         * Special FreeBSD sysctl sections.
98         */
99        . = ALIGN (16);
100        __start_set_sysctl_set = .;
101        *(set_sysctl_*);
102        __stop_set_sysctl_set = ABSOLUTE(.);
103        *(set_domain_*);
104        *(set_pseudo_*);
105
106        /* .gnu.warning sections are handled specially by elf32.em.  */
107        *(.gnu.warning)
108        *(.gnu.linkonce.t*)
109        *(.glue_7)
110        *(.glue_7t)
111
112        /* I think these come from the ld docs: */     
113        ___CTOR_LIST__ = .;
114        LONG((___CTOR_END__ - ___CTOR_LIST__) / 4 - 2)
115        *(.ctors)
116        LONG(0)
117        ___CTOR_END__ = .;
118        ___DTOR_LIST__ = .;
119        LONG((___DTOR_END__ - ___DTOR_LIST__) / 4 - 2)
120        *(.dtors)
121        LONG(0)
122        ___DTOR_END__ = .;
123
124        _etext = .;
125        PROVIDE (etext = .);
126  } > sdram 
127
128  .init          :
129  {
130    KEEP (*(.init))
131  } > sdram   /*=0*/
132
133  .fini      :
134  {
135    KEEP (*(.fini))
136  } > sdram  /*=0*/
137
138  .data :
139  {
140    *(.data)
141    *(.data.*)
142    *(.gnu.linkonce.d*)
143    *(.jcr)
144    SORT(CONSTRUCTORS)
145    _edata = .;
146  } > sdram
147
148  .eh_frame : { *(.eh_frame) } > sdram
149  .data1   : { *(.data1) } > sdram
150  .eh_frame : { *(.eh_frame) } > sdram
151  .gcc_except_table : { *(.gcc_except_table) } > sdram
152
153  .rodata :
154  {
155    *(.rodata)
156    *(.rodata.*)
157    *(.gnu.linkonce.r*)
158  } > sdram
159
160  .bss       :
161  {
162        _bss_start_ = .;
163        _clear_start = .;
164        *(.bss)
165        *(.bss.*)
166        *(.gnu.linkonce.b.*)
167        *(COMMON)
168        . = ALIGN(256);
169        _clear_end = .;
170
171        . = ALIGN (64);
172        _abt_stack = .;
173        . += _abt_stack_size;
174
175        . = ALIGN (256);
176        _irq_stack = .;
177        . += _irq_stack_size;
178
179        . = ALIGN (64);
180        _fiq_stack = .;
181        . += _fiq_stack_size;
182
183        . = ALIGN (64);
184        _svc_stack = .;
185        . += _svc_stack_size;
186
187        _bss_end_ = .;
188        _end = .;
189        __end = .;
190
191        _bss_free_start = .;
192        . = ALIGN (1024);
193  } > sdram
194
195/*
196  .regs :
197  {
198        lpc22xx_regs_base = .;
199        lpc22xx_regs = .;
200        . += 8192;
201  } > regs
202*/
203
204
205/* Debugging stuff follows? */
206
207  /* Stabs debugging sections.  */
208  .stab 0 : { *(.stab) }
209  .stabstr 0 : { *(.stabstr) }
210  .stab.excl 0 : { *(.stab.excl) }
211  .stab.exclstr 0 : { *(.stab.exclstr) }
212  .stab.index 0 : { *(.stab.index) }
213  .stab.indexstr 0 : { *(.stab.indexstr) }
214  .comment 0 : { *(.comment) }
215  /* DWARF debug sections.
216     Symbols in the DWARF debugging sections are relative to the beginning
217     of the section so we begin them at 0.  */
218  /* DWARF 1 */
219  .debug          0 : { *(.debug) }
220  .line           0 : { *(.line) }
221  /* GNU DWARF 1 extensions */
222  .debug_srcinfo  0 : { *(.debug_srcinfo) }
223  .debug_sfnames  0 : { *(.debug_sfnames) }
224  /* DWARF 1.1 and DWARF 2 */
225  .debug_aranges  0 : { *(.debug_aranges) }
226  .debug_pubnames 0 : { *(.debug_pubnames) }
227  /* DWARF 2 */
228  .debug_info     0 : { *(.debug_info) }
229  .debug_abbrev   0 : { *(.debug_abbrev) }
230  .debug_line     0 : { *(.debug_line) }
231  .debug_frame    0 : { *(.debug_frame) }
232  .debug_str      0 : { *(.debug_str) }
233  .debug_loc      0 : { *(.debug_loc) }
234  .debug_macinfo  0 : { *(.debug_macinfo) }
235
236  /*.stack 0x80000 : { _stack = .; *(.stack) }*/
237  /* These must appear regardless of  .  */
238}
239
Note: See TracBrowser for help on using the repository browser.