powerpc/eeh: Don't panic when EEH_MAX_FAILS is exceeded
[deliverable/linux.git] / arch / powerpc / kernel / vmlinux.lds.S
CommitLineData
c51e3a41 1#ifdef CONFIG_PPC64
e8222502 2#define PROVIDE32(x) PROVIDE(__unused__##x)
c51e3a41 3#else
e8222502 4#define PROVIDE32(x) PROVIDE(x)
c51e3a41 5#endif
4846c5de 6#include <asm/page.h>
14cf11af 7#include <asm-generic/vmlinux.lds.h>
bd67fcf9 8#include <asm/cache.h>
14cf11af 9
e19e4ab4
ME
10ENTRY(_stext)
11
cabb5587
SR
12#ifdef CONFIG_PPC64
13OUTPUT_ARCH(powerpc:common64)
14jiffies = jiffies_64;
15#else
14cf11af
PM
16OUTPUT_ARCH(powerpc:common)
17jiffies = jiffies_64 + 4;
cabb5587 18#endif
14cf11af
PM
19SECTIONS
20{
e8222502
BH
21 /* Sections to be discarded. */
22 /DISCARD/ : {
23 *(.exitcall.exit)
01ba2bdc 24 EXIT_DATA
e8222502 25 }
14cf11af 26
e8222502 27 . = KERNELBASE;
14cf11af 28
e8222502
BH
29/*
30 * Text, read only data and other permanent read-only sections
31 */
32
33 /* Text and gots */
366234f6 34 .text : AT(ADDR(.text) - LOAD_OFFSET) {
748a7683
KG
35 ALIGN_FUNCTION();
36 *(.text.head)
fd593d12 37 _text = .;
fac23fe4 38 *(.text .fixup .text.init.refok .exit.text.refok __ftr_alt_*)
e8222502
BH
39 SCHED_TEXT
40 LOCK_TEXT
41 KPROBES_TEXT
14cf11af 42
e8222502
BH
43#ifdef CONFIG_PPC32
44 *(.got1)
45 __got2_start = .;
46 *(.got2)
47 __got2_end = .;
48#endif /* CONFIG_PPC32 */
49
50 . = ALIGN(PAGE_SIZE);
51 _etext = .;
52 PROVIDE32 (etext = .);
53 }
54
55 /* Read-only data */
56 RODATA
57
58 /* Exception & bug tables */
366234f6 59 __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
14cf11af
PM
60 __start___ex_table = .;
61 *(__ex_table)
62 __stop___ex_table = .;
63 }
64
8fb775ee
RM
65 NOTES
66
e8222502
BH
67/*
68 * Init sections discarded at runtime
69 */
70 . = ALIGN(PAGE_SIZE);
71 __init_begin = .;
72
366234f6 73 .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
e8222502 74 _sinittext = .;
01ba2bdc 75 INIT_TEXT
e8222502
BH
76 _einittext = .;
77 }
78
79 /* .exit.text is discarded at runtime, not link time,
80 * to deal with references from __bug_table
81 */
366234f6 82 .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
01ba2bdc
SR
83 EXIT_TEXT
84 }
e8222502 85
366234f6 86 .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
01ba2bdc 87 INIT_DATA
e8222502
BH
88 __vtop_table_begin = .;
89 *(.vtop_fixup);
90 __vtop_table_end = .;
91 __ptov_table_begin = .;
92 *(.ptov_fixup);
93 __ptov_table_end = .;
c4e3ea25
SR
94#ifdef CONFIG_PPC_ISERIES
95 __dt_strings_start = .;
96 *(.dt_strings);
97 __dt_strings_end = .;
98#endif
e8222502
BH
99 }
100
101 . = ALIGN(16);
366234f6 102 .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
e8222502
BH
103 __setup_start = .;
104 *(.init.setup)
105 __setup_end = .;
106 }
107
366234f6 108 .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
e8222502 109 __initcall_start = .;
61ce1efe 110 INITCALLS
e8222502
BH
111 __initcall_end = .;
112 }
113
366234f6 114 .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
e8222502
BH
115 __con_initcall_start = .;
116 *(.con_initcall.init)
117 __con_initcall_end = .;
118 }
119
120 SECURITY_INIT
121
122 . = ALIGN(8);
366234f6 123 __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) {
cabb5587
SR
124 __start___ftr_fixup = .;
125 *(__ftr_fixup)
126 __stop___ftr_fixup = .;
127 }
2d1b2027
KG
128 . = ALIGN(8);
129 __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) {
130 __start___lwsync_fixup = .;
131 *(__lwsync_fixup)
132 __stop___lwsync_fixup = .;
133 }
3f639ee8
SR
134#ifdef CONFIG_PPC64
135 . = ALIGN(8);
366234f6 136 __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) {
3f639ee8
SR
137 __start___fw_ftr_fixup = .;
138 *(__fw_ftr_fixup)
139 __stop___fw_ftr_fixup = .;
140 }
141#endif
67d38229 142#ifdef CONFIG_BLK_DEV_INITRD
e8222502 143 . = ALIGN(PAGE_SIZE);
366234f6 144 .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
e8222502
BH
145 __initramfs_start = .;
146 *(.init.ramfs)
147 __initramfs_end = .;
148 }
67d38229 149#endif
b6e3590f 150 . = ALIGN(PAGE_SIZE);
366234f6 151 .data.percpu : AT(ADDR(.data.percpu) - LOAD_OFFSET) {
e8222502
BH
152 __per_cpu_start = .;
153 *(.data.percpu)
5fb7dc37 154 *(.data.percpu.shared_aligned)
e8222502
BH
155 __per_cpu_end = .;
156 }
14cf11af 157
e8222502 158 . = ALIGN(8);
366234f6 159 .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) {
e8222502
BH
160 __machine_desc_start = . ;
161 *(.machine.desc)
162 __machine_desc_end = . ;
163 }
164
165 /* freed after init ends here */
166 . = ALIGN(PAGE_SIZE);
167 __init_end = .;
168
169/*
170 * And now the various read/write data
171 */
172
173 . = ALIGN(PAGE_SIZE);
174 _sdata = .;
14cf11af 175
cabb5587 176#ifdef CONFIG_PPC32
366234f6 177 .data : AT(ADDR(.data) - LOAD_OFFSET) {
ca967258 178 DATA_DATA
e8222502
BH
179 *(.sdata)
180 *(.got.plt) *(.got)
181 }
cabb5587 182#else
366234f6 183 .data : AT(ADDR(.data) - LOAD_OFFSET) {
3ae0aa9f
MD
184 DATA_DATA
185 *(.data.rel*)
186 *(.toc1)
e8222502
BH
187 *(.branch_lt)
188 }
14cf11af 189
366234f6 190 .opd : AT(ADDR(.opd) - LOAD_OFFSET) {
e8222502
BH
191 *(.opd)
192 }
193
366234f6 194 .got : AT(ADDR(.got) - LOAD_OFFSET) {
e8222502
BH
195 __toc_start = .;
196 *(.got)
197 *(.toc)
198 }
cabb5587 199#endif
14cf11af 200
e8222502
BH
201 . = ALIGN(PAGE_SIZE);
202 _edata = .;
203 PROVIDE32 (edata = .);
204
205 /* The initial task and kernel stack */
206#ifdef CONFIG_PPC32
207 . = ALIGN(8192);
cabb5587 208#else
e8222502
BH
209 . = ALIGN(16384);
210#endif
366234f6 211 .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
e8222502
BH
212 *(.data.init_task)
213 }
14cf11af 214
e8222502 215 . = ALIGN(PAGE_SIZE);
366234f6 216 .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
e8222502
BH
217 *(.data.page_aligned)
218 }
14cf11af 219
366234f6 220 .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
e8222502
BH
221 *(.data.cacheline_aligned)
222 }
14cf11af 223
bd67fcf9 224 . = ALIGN(L1_CACHE_BYTES);
366234f6 225 .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
bd67fcf9
TB
226 *(.data.read_mostly)
227 }
228
e8222502 229 . = ALIGN(PAGE_SIZE);
366234f6 230 .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
e8222502
BH
231 __nosave_begin = .;
232 *(.data.nosave)
233 . = ALIGN(PAGE_SIZE);
234 __nosave_end = .;
235 }
4a288563 236
e8222502
BH
237/*
238 * And finally the bss
239 */
240
366234f6 241 .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
e8222502
BH
242 __bss_start = .;
243 *(.sbss) *(.scommon)
244 *(.dynbss)
245 *(.bss)
246 *(COMMON)
247 __bss_stop = .;
248 }
14cf11af 249
e8222502
BH
250 . = ALIGN(PAGE_SIZE);
251 _end = . ;
252 PROVIDE32 (end = .);
14cf11af 253}
This page took 0.35561 seconds and 5 git commands to generate.