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} |