vmlinux.lds.S (1d87200446f1d10dfe9672ca8edb027a82612f8c) vmlinux.lds.S (7af710d988775aadf440222ecbe0c10eecf3eb54)
1/*
2 * arch/xtensa/kernel/vmlinux.lds.S
3 *
4 * Xtensa linker script
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 *
10 * Copyright (C) 2001 - 2008 Tensilica Inc.
11 *
12 * Chris Zankel <chris@zankel.net>
13 * Marc Gauthier <marc@tensilica.com, marc@alumni.uwaterloo.ca>
14 * Joe Taylor <joe@tensilica.com, joetylr@yahoo.com>
15 */
16
1/*
2 * arch/xtensa/kernel/vmlinux.lds.S
3 *
4 * Xtensa linker script
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 *
10 * Copyright (C) 2001 - 2008 Tensilica Inc.
11 *
12 * Chris Zankel <chris@zankel.net>
13 * Marc Gauthier <marc@tensilica.com, marc@alumni.uwaterloo.ca>
14 * Joe Taylor <joe@tensilica.com, joetylr@yahoo.com>
15 */
16
17#define RO_EXCEPTION_TABLE_ALIGN 16
18
19#include <asm-generic/vmlinux.lds.h>
20#include <asm/page.h>
21#include <asm/thread_info.h>
22
23#include <asm/core.h>
24#include <asm/vectors.h>
25
26OUTPUT_ARCH(xtensa)

--- 94 unchanged lines hidden (view full) ---

121 LOCK_TEXT
122
123 }
124 _etext = .;
125 PROVIDE (etext = .);
126
127 . = ALIGN(16);
128
17#include <asm-generic/vmlinux.lds.h>
18#include <asm/page.h>
19#include <asm/thread_info.h>
20
21#include <asm/core.h>
22#include <asm/vectors.h>
23
24OUTPUT_ARCH(xtensa)

--- 94 unchanged lines hidden (view full) ---

119 LOCK_TEXT
120
121 }
122 _etext = .;
123 PROVIDE (etext = .);
124
125 . = ALIGN(16);
126
129 RO_DATA(4096)
127 RODATA
130
131 /* Relocation table */
132
133 .fixup : { *(.fixup) }
134
128
129 /* Relocation table */
130
131 .fixup : { *(.fixup) }
132
133 EXCEPTION_TABLE(16)
134 NOTES
135 /* Data section */
136
135 /* Data section */
136
137#ifdef CONFIG_XIP_KERNEL
138 INIT_TEXT_SECTION(PAGE_SIZE)
139#else
137 _sdata = .;
140 _sdata = .;
138 RW_DATA(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE)
141 RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE)
139 _edata = .;
140
141 /* Initialization code and data: */
142
143 . = ALIGN(PAGE_SIZE);
144 __init_begin = .;
145 INIT_TEXT_SECTION(PAGE_SIZE)
146
147 .init.data :
148 {
149 INIT_DATA
142 _edata = .;
143
144 /* Initialization code and data: */
145
146 . = ALIGN(PAGE_SIZE);
147 __init_begin = .;
148 INIT_TEXT_SECTION(PAGE_SIZE)
149
150 .init.data :
151 {
152 INIT_DATA
153 }
154#endif
155
156 .init.rodata :
157 {
150 . = ALIGN(0x4);
151 __tagtable_begin = .;
152 *(.taglist)
153 __tagtable_end = .;
154
155 . = ALIGN(16);
156 __boot_reloc_table_start = ABSOLUTE(.);
157

--- 24 unchanged lines hidden (view full) ---

182 .KernelExceptionVector.text);
183 RELOCATE_ENTRY(_UserExceptionVector_text,
184 .UserExceptionVector.text);
185 RELOCATE_ENTRY(_DoubleExceptionVector_text,
186 .DoubleExceptionVector.text);
187 RELOCATE_ENTRY(_DebugInterruptVector_text,
188 .DebugInterruptVector.text);
189#endif
158 . = ALIGN(0x4);
159 __tagtable_begin = .;
160 *(.taglist)
161 __tagtable_end = .;
162
163 . = ALIGN(16);
164 __boot_reloc_table_start = ABSOLUTE(.);
165

--- 24 unchanged lines hidden (view full) ---

190 .KernelExceptionVector.text);
191 RELOCATE_ENTRY(_UserExceptionVector_text,
192 .UserExceptionVector.text);
193 RELOCATE_ENTRY(_DoubleExceptionVector_text,
194 .DoubleExceptionVector.text);
195 RELOCATE_ENTRY(_DebugInterruptVector_text,
196 .DebugInterruptVector.text);
197#endif
198#ifdef CONFIG_XIP_KERNEL
199 RELOCATE_ENTRY(_xip_data, .data);
200 RELOCATE_ENTRY(_xip_init_data, .init.data);
201#else
190#if defined(CONFIG_SMP)
191 RELOCATE_ENTRY(_SecondaryResetVector_text,
192 .SecondaryResetVector.text);
193#endif
202#if defined(CONFIG_SMP)
203 RELOCATE_ENTRY(_SecondaryResetVector_text,
204 .SecondaryResetVector.text);
205#endif
206#endif
194
207
195
196 __boot_reloc_table_end = ABSOLUTE(.) ;
197
198 INIT_SETUP(XCHAL_ICACHE_LINESIZE)
199 INIT_CALLS
200 CON_INITCALL
201 INIT_RAM_FS
202 }
203

--- 69 unchanged lines hidden (view full) ---

273 SECTION_VECTOR (_DoubleExceptionVector_text,
274 .DoubleExceptionVector.text,
275 DOUBLEEXC_VECTOR_VADDR,
276 .UserExceptionVector.text)
277
278 . = (LOADADDR( .DoubleExceptionVector.text ) + SIZEOF( .DoubleExceptionVector.text ) + 3) & ~ 3;
279
280#endif
208 __boot_reloc_table_end = ABSOLUTE(.) ;
209
210 INIT_SETUP(XCHAL_ICACHE_LINESIZE)
211 INIT_CALLS
212 CON_INITCALL
213 INIT_RAM_FS
214 }
215

--- 69 unchanged lines hidden (view full) ---

285 SECTION_VECTOR (_DoubleExceptionVector_text,
286 .DoubleExceptionVector.text,
287 DOUBLEEXC_VECTOR_VADDR,
288 .UserExceptionVector.text)
289
290 . = (LOADADDR( .DoubleExceptionVector.text ) + SIZEOF( .DoubleExceptionVector.text ) + 3) & ~ 3;
291
292#endif
281#if defined(CONFIG_SMP)
293#if !defined(CONFIG_XIP_KERNEL) && defined(CONFIG_SMP)
282
283 SECTION_VECTOR (_SecondaryResetVector_text,
284 .SecondaryResetVector.text,
285 RESET_VECTOR1_VADDR,
286 .DoubleExceptionVector.text)
287
288 . = LOADADDR(.SecondaryResetVector.text)+SIZEOF(.SecondaryResetVector.text);
289
290#endif
291
292 . = ALIGN(PAGE_SIZE);
293
294
295 SECTION_VECTOR (_SecondaryResetVector_text,
296 .SecondaryResetVector.text,
297 RESET_VECTOR1_VADDR,
298 .DoubleExceptionVector.text)
299
300 . = LOADADDR(.SecondaryResetVector.text)+SIZEOF(.SecondaryResetVector.text);
301
302#endif
303
304 . = ALIGN(PAGE_SIZE);
305
306#ifndef CONFIG_XIP_KERNEL
294 __init_end = .;
295
296 BSS_SECTION(0, 8192, 0)
307 __init_end = .;
308
309 BSS_SECTION(0, 8192, 0)
310#endif
297
298 _end = .;
299
311
312 _end = .;
313
314#ifdef CONFIG_XIP_KERNEL
315 . = CONFIG_XIP_DATA_ADDR;
316
317 _xip_start = .;
318
319#undef LOAD_OFFSET
320#define LOAD_OFFSET \
321 (CONFIG_XIP_DATA_ADDR - (LOADADDR(.dummy) + SIZEOF(.dummy) + 3) & ~ 3)
322
323 _xip_data_start = .;
324 _sdata = .;
325 RW_DATA_SECTION(XCHAL_ICACHE_LINESIZE, PAGE_SIZE, THREAD_SIZE)
326 _edata = .;
327 _xip_data_end = .;
328
329 /* Initialization data: */
330
331 STRUCT_ALIGN();
332
333 _xip_init_data_start = .;
334 __init_begin = .;
335 .init.data :
336 {
337 INIT_DATA
338 }
339 _xip_init_data_end = .;
340 __init_end = .;
341 BSS_SECTION(0, 8192, 0)
342
343 _xip_end = .;
344
345#undef LOAD_OFFSET
346#endif
347
300 DWARF_DEBUG
301
302 .xt.prop 0 : { KEEP(*(.xt.prop .xt.prop.* .gnu.linkonce.prop.*)) }
303 .xt.insn 0 : { KEEP(*(.xt.insn .xt.insn.* .gnu.linkonce.x*)) }
304 .xt.lit 0 : { KEEP(*(.xt.lit .xt.lit.* .gnu.linkonce.p*)) }
305
306 /* Sections to be discarded */
307 DISCARDS
308}
348 DWARF_DEBUG
349
350 .xt.prop 0 : { KEEP(*(.xt.prop .xt.prop.* .gnu.linkonce.prop.*)) }
351 .xt.insn 0 : { KEEP(*(.xt.insn .xt.insn.* .gnu.linkonce.x*)) }
352 .xt.lit 0 : { KEEP(*(.xt.lit .xt.lit.* .gnu.linkonce.p*)) }
353
354 /* Sections to be discarded */
355 DISCARDS
356}