Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[wrt350n-kernel.git] / arch / arm / kernel / vmlinux.lds
blobe527209d0fcbd7827de5d35e2aa7ba5eb5b1df5d
3 /*
4  * Automatically generated C config: don't edit
5  * Linux kernel version: 2.6.25-rc2-git1
6  * Tue Feb 19 20:01:37 2008
7  */
8 /* ld script to make ARM Linux kernel
9  * taken from the i386 version by Russell King
10  * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
11  */
12 /* Align . to a 8 byte boundary equals to maximum function alignment. */
14 /* The actual configuration determine if the init/exit sections
15  * are handled as text/data or they can be discarded (which
16  * often happens at runtime)
17  */
18 /* .data section */
19 /* RODATA provided for backward compatibility.
20  * All archs are supposed to use RO_DATA() */
21 /* .text section. Map to function alignment to avoid address changes
22  * during second ld run in second ld pass when generating System.map */
23 /* sched.text is aling to function alignment to secure we have same
24  * address even at second ld pass when generating System.map */
25 /* spinlock.text is aling to function alignment to secure we have same
26  * address even at second ld pass when generating System.map */
27 /* init and exit section handling */
28   /* DWARF debug sections.
29                 Symbols in the DWARF debugging sections are relative to
30                 the beginning of the section so we begin them at 0.  */
31   /* Stabs debugging sections.  */
33  *  linux/include/asm-arm/thread_info.h
34  *
35  *  Copyright (C) 2002 Russell King.
36  *
37  * This program is free software; you can redistribute it and/or modify
38  * it under the terms of the GNU General Public License version 2 as
39  * published by the Free Software Foundation.
40  */
42  * Allow us to mark functions as 'deprecated' and have gcc emit a nice
43  * warning for each use, in hopes of speeding the functions removal.
44  * Usage is:
45  *              int __deprecated foo(void)
46  */
48  * Allow us to avoid 'defined but not used' warnings on functions and data,
49  * as well as force them to be emitted to the assembly file.
50  *
51  * As of gcc 3.4, static functions that are not marked with attribute((used))
52  * may be elided from the assembly file.  As of gcc 3.4, static data not so
53  * marked will not be elided, but this may change in a future gcc version.
54  *
55  * NOTE: Because distributions shipped with a backported unit-at-a-time
56  * compiler in gcc 3.3, we must define __used to be __attribute__((used))
57  * for gcc >=3.3 instead of 3.4.
58  *
59  * In prior versions of gcc, such functions and data would be emitted, but
60  * would be warned about except with attribute((unused)).
61  *
62  * Mark functions that are referenced only in inline assembly as __used so
63  * the code is emitted even though it appears to be unreferenced.
64  */
66  * From the GCC manual:
67  *
68  * Many functions do not examine any values except their arguments,
69  * and have no effects except the return value.  Basically this is
70  * just slightly more strict class than the `pure' attribute above,
71  * since function is not allowed to read global memory.
72  *
73  * Note that a function that has pointer arguments and examines the
74  * data pointed to must _not_ be declared `const'.  Likewise, a
75  * function that calls a non-`const' function usually must not be
76  * `const'.  It does not make sense for a `const' function to return
77  * `void'.
78  */
80  * Tell gcc if a function is cold. The compiler will assume any path
81  * directly leading to the call is unlikely.
82  */
83 /* Simple shorthand for a section definition */
85  *  linux/include/asm-arm/fpstate.h
86  *
87  *  Copyright (C) 1995 Russell King
88  *
89  * This program is free software; you can redistribute it and/or modify
90  * it under the terms of the GNU General Public License version 2 as
91  * published by the Free Software Foundation.
92  */
94  * We use bit 30 of the preempt_count to indicate that kernel
95  * preemption is occurring.  See include/asm-arm/hardirq.h.
96  */
98  * thread information flags:
99  *  TIF_SYSCALL_TRACE   - syscall trace active
100  *  TIF_SIGPENDING      - signal pending
101  *  TIF_NEED_RESCHED    - rescheduling necessary
102  *  TIF_USEDFPU         - FPU was used by this task this quantum (SMP)
103  *  TIF_POLLING_NRFLAG  - true if poll_idle() is polling TIF_NEED_RESCHED
104  */
106  * Change these and you break ASM code in entry-common.S
107  */
109  *  linux/include/asm-arm/memory.h
111  *  Copyright (C) 2000-2002 Russell King
112  *  modification for nommu, Hyok S. Choi, 2004
114  * This program is free software; you can redistribute it and/or modify
115  * it under the terms of the GNU General Public License version 2 as
116  * published by the Free Software Foundation.
118  *  Note: this file should not be included by non-asm/.h files
119  */
121  * Allow for constants defined here to be used from assembly code
122  * by prepending the UL suffix only with actual C code compilation.
123  */
125  * include/asm-arm/arch-orion/memory.h
127  * Marvell Orion memory definitions
128  */
130  * This program is free software; you can redistribute it and/or modify
131  * it under the terms of the GNU General Public License as published by
132  * the Free Software Foundation; either version 2 of the License, or
133  * (at your option) any later version.
135  * This program is distributed in the hope that it will be useful,
136  * but WITHOUT ANY WARRANTY; without even the implied warranty of
137  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
138  * GNU General Public License for more details.
140  * You should have received a copy of the GNU General Public License
141  * along with this program; if not, write to the Free Software
142  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
143  */
144 /* DO NOT EDIT!! - this file automatically generated
145  *                 from .s file by awk -f s2h.awk
146  */
147 /*  Size definitions
148  *  Copyright (C) ARM Limited 1998. All rights reserved.
149  */
150 /* handy sizes */
151 /*         END */
153  * TASK_SIZE - the maximum size of a user space task.
154  * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area
155  */
157  * The maximum size of a 26-bit user space task.
158  */
160  * Page offset: 3GB
161  */
163  * The module space lives between the addresses given by TASK_SIZE
164  * and PAGE_OFFSET - it must be within 32MB of the kernel text.
165  */
167  * The XIP kernel gets mapped at the bottom of the module vm area.
168  * Since we use sections to map it, this macro replaces the physical address
169  * with its virtual address while keeping offset from the base section.
170  */
172  * Allow 16MB-aligned ioremap pages
173  */
175  * Size of DMA-consistent memory region.  Must be multiple of 2M,
176  * between 2MB and 14MB inclusive.
177  */
179  * Physical vs virtual RAM address space conversion.  These are
180  * private definitions which should NOT be used outside memory.h
181  * files.  Use virt_to_phys/phys_to_virt/__pa/__va instead.
182  */
184  * Convert a physical address to a Page Frame Number and back
185  */
186 OUTPUT_ARCH(arm)
187 ENTRY(stext)
188 jiffies = jiffies_64;
189 SECTIONS
191  . = (0xc0000000) + 0x00008000;
192  .text.head : {
193   _stext = .;
194   _sinittext = .;
195   *(.text.head)
197  .init : { /* Init code and data                */
198    *(.init.text) *(.cpuinit.text) *(.meminit.text)
199   _einittext = .;
200   __proc_info_begin = .;
201    *(.proc.info.init)
202   __proc_info_end = .;
203   __arch_info_begin = .;
204    *(.arch.info.init)
205   __arch_info_end = .;
206   __tagtable_begin = .;
207    *(.taglist.init)
208   __tagtable_end = .;
209   . = ALIGN(16);
210   __setup_start = .;
211    *(.init.setup)
212   __setup_end = .;
213   __early_begin = .;
214    *(.early_param.init)
215   __early_end = .;
216   __initcall_start = .;
217    *(.initcall0.init) *(.initcall0s.init) *(.initcall1.init) *(.initcall1s.init) *(.initcall2.init) *(.initcall2s.init) *(.initcall3.init) *(.initcall3s.init) *(.initcall4.init) *(.initcall4s.init) *(.initcall5.init) *(.initcall5s.init) *(.initcallrootfs.init) *(.initcall6.init) *(.initcall6s.init) *(.initcall7.init) *(.initcall7s.init)
218   __initcall_end = .;
219   __con_initcall_start = .;
220    *(.con_initcall.init)
221   __con_initcall_end = .;
222   __security_initcall_start = .;
223    *(.security_initcall.init)
224   __security_initcall_end = .;
225   . = ALIGN(4096);
226   __per_cpu_start = .;
227    *(.data.percpu)
228    *(.data.percpu.shared_aligned)
229   __per_cpu_end = .;
230   __init_begin = _stext;
231   *(.init.data) *(.cpuinit.data) *(.cpuinit.rodata) *(.meminit.data) *(.meminit.rodata)
232   . = ALIGN(4096);
233   __init_end = .;
235  /DISCARD/ : { /* Exit code and data            */
236   *(.exit.text) *(.cpuexit.text) *(.memexit.text)
237   *(.exit.data) *(.cpuexit.data) *(.cpuexit.rodata) *(.memexit.data) *(.memexit.rodata)
238   *(.exitcall.exit)
240  .text : { /* Real text segment         */
241   _text = .; /* Text and read-only data */
242    __exception_text_start = .;
243    *(.exception.text)
244    __exception_text_end = .;
245    . = ALIGN(8); *(.text) *(.ref.text) *(.text.init.refok) *(.exit.text.refok) *(.devinit.text) *(.devexit.text)
246    . = ALIGN(8); __sched_text_start = .; *(.sched.text) __sched_text_end = .;
247    . = ALIGN(8); __lock_text_start = .; *(.spinlock.text) __lock_text_end = .;
248    . = ALIGN(8); __kprobes_text_start = .; *(.kprobes.text) __kprobes_text_end = .;
249    *(.fixup)
250    *(.gnu.warning)
251    *(.rodata)
252    *(.rodata.*)
253    *(.glue_7)
254    *(.glue_7t)
255   *(.got) /* Global offset table                */
257  . = ALIGN((4096)); .rodata : AT(ADDR(.rodata) - 0) { __start_rodata = .; *(.rodata) *(.rodata.*) *(__vermagic) *(__markers_strings) } .rodata1 : AT(ADDR(.rodata1) - 0) { *(.rodata1) } .pci_fixup : AT(ADDR(.pci_fixup) - 0) { __start_pci_fixups_early = .; *(.pci_fixup_early) __end_pci_fixups_early = .; __start_pci_fixups_header = .; *(.pci_fixup_header) __end_pci_fixups_header = .; __start_pci_fixups_final = .; *(.pci_fixup_final) __end_pci_fixups_final = .; __start_pci_fixups_enable = .; *(.pci_fixup_enable) __end_pci_fixups_enable = .; __start_pci_fixups_resume = .; *(.pci_fixup_resume) __end_pci_fixups_resume = .; } .rio_route : AT(ADDR(.rio_route) - 0) { __start_rio_route_ops = .; *(.rio_route_ops) __end_rio_route_ops = .; } __ksymtab : AT(ADDR(__ksymtab) - 0) { __start___ksymtab = .; *(__ksymtab) __stop___ksymtab = .; } __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - 0) { __start___ksymtab_gpl = .; *(__ksymtab_gpl) __stop___ksymtab_gpl = .; } __ksymtab_unused : AT(ADDR(__ksymtab_unused) - 0) { __start___ksymtab_unused = .; *(__ksymtab_unused) __stop___ksymtab_unused = .; } __ksymtab_unused_gpl : AT(ADDR(__ksymtab_unused_gpl) - 0) { __start___ksymtab_unused_gpl = .; *(__ksymtab_unused_gpl) __stop___ksymtab_unused_gpl = .; } __ksymtab_gpl_future : AT(ADDR(__ksymtab_gpl_future) - 0) { __start___ksymtab_gpl_future = .; *(__ksymtab_gpl_future) __stop___ksymtab_gpl_future = .; } __kcrctab : AT(ADDR(__kcrctab) - 0) { __start___kcrctab = .; *(__kcrctab) __stop___kcrctab = .; } __kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - 0) { __start___kcrctab_gpl = .; *(__kcrctab_gpl) __stop___kcrctab_gpl = .; } __kcrctab_unused : AT(ADDR(__kcrctab_unused) - 0) { __start___kcrctab_unused = .; *(__kcrctab_unused) __stop___kcrctab_unused = .; } __kcrctab_unused_gpl : AT(ADDR(__kcrctab_unused_gpl) - 0) { __start___kcrctab_unused_gpl = .; *(__kcrctab_unused_gpl) __stop___kcrctab_unused_gpl = .; } __kcrctab_gpl_future : AT(ADDR(__kcrctab_gpl_future) - 0) { __start___kcrctab_gpl_future = .; *(__kcrctab_gpl_future) __stop___kcrctab_gpl_future = .; } __ksymtab_strings : AT(ADDR(__ksymtab_strings) - 0) { *(__ksymtab_strings) } __init_rodata : AT(ADDR(__init_rodata) - 0) { *(.ref.rodata) *(.devinit.rodata) *(.devexit.rodata) } __param : AT(ADDR(__param) - 0) { __start___param = .; *(__param) __stop___param = .; . = ALIGN((4096)); __end_rodata = .; } . = ALIGN((4096));
258  _etext = .; /* End of text and rodata section */
259  . = ALIGN(8192);
260  __data_loc = .;
261  .data : AT(__data_loc) {
262   __data_start = .; /* address in memory */
263   /*
264                  * first, the init task union, aligned
265                  * to an 8192 byte boundary.
266                  */
267   *(.data.init_task)
268   . = ALIGN(4096);
269   __nosave_begin = .;
270   *(.data.nosave)
271   . = ALIGN(4096);
272   __nosave_end = .;
273   /*
274                  * then the cacheline aligned data
275                  */
276   . = ALIGN(32);
277   *(.data.cacheline_aligned)
278   /*
279                  * The exception fixup table (might need resorting at runtime)
280                  */
281   . = ALIGN(32);
282   __start___ex_table = .;
283   *(__ex_table)
284   __stop___ex_table = .;
285   /*
286                  * and the usual data section
287                  */
288   *(.data) *(.data.init.refok) *(.ref.data) *(.devinit.data) *(.devexit.data) . = ALIGN(8); __start___markers = .; *(__markers) __stop___markers = .;
289   CONSTRUCTORS
290   _edata = .;
292  _edata_loc = __data_loc + SIZEOF(.data);
293  .bss : {
294   __bss_start = .; /* BSS                               */
295   *(.bss)
296   *(COMMON)
297   _end = .;
299      /* Stabs debugging sections.       */
300  .stab 0 : { *(.stab) }
301  .stabstr 0 : { *(.stabstr) }
302  .stab.excl 0 : { *(.stab.excl) }
303  .stab.exclstr 0 : { *(.stab.exclstr) }
304  .stab.index 0 : { *(.stab.index) }
305  .stab.indexstr 0 : { *(.stab.indexstr) }
306  .comment 0 : { *(.comment) }
309  * These must never be empty
310  * If you have to comment these two assert statements out, your
311  * binutils is too old (for other reasons as well)
312  */
313 ASSERT((__proc_info_end - __proc_info_begin), "missing CPU support")
314 ASSERT((__arch_info_end - __arch_info_begin), "no machine record defined")