aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2005-09-30 02:16:52 -0400
committerStephen Rothwell <sfr@canb.auug.org.au>2005-10-01 04:52:10 -0400
commitcabb558714945e92000f627dda562aa5e86a31af (patch)
tree595cd75dad072224041260afb220d7fce3164e53 /arch/powerpc/kernel/vmlinux.lds.S
parentbd142b70a6bd5522f7d95f0cec06091b93bb0715 (diff)
powerpc: make iSeries build
Merge vmlinux.lds.S. Also remove arch/powerpc/kernel/vmlinux.lds which is a generated file. Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch/powerpc/kernel/vmlinux.lds.S')
-rw-r--r--arch/powerpc/kernel/vmlinux.lds.S190
1 files changed, 176 insertions, 14 deletions
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S
index 09c6525cfa61..0587d9c4609d 100644
--- a/arch/powerpc/kernel/vmlinux.lds.S
+++ b/arch/powerpc/kernel/vmlinux.lds.S
@@ -1,10 +1,29 @@
1#include <linux/config.h>
2#ifdef CONFIG_PPC64
3#include <asm/page.h>
4#endif
1#include <asm-generic/vmlinux.lds.h> 5#include <asm-generic/vmlinux.lds.h>
2 6
7#ifdef CONFIG_PPC64
8OUTPUT_ARCH(powerpc:common64)
9jiffies = jiffies_64;
10#else
3OUTPUT_ARCH(powerpc:common) 11OUTPUT_ARCH(powerpc:common)
4jiffies = jiffies_64 + 4; 12jiffies = jiffies_64 + 4;
13#endif
5SECTIONS 14SECTIONS
6{ 15{
16 /* Sections to be discarded. */
17 /DISCARD/ : {
18 *(.exitcall.exit)
19#ifdef CONFIG_PPC32
20 *(.exit.data)
21#endif
22 }
23
24
7 /* Read-only sections, merged into text segment: */ 25 /* Read-only sections, merged into text segment: */
26#ifdef CONFIG_PPC32
8 . = + SIZEOF_HEADERS; 27 . = + SIZEOF_HEADERS;
9 .interp : { *(.interp) } 28 .interp : { *(.interp) }
10 .hash : { *(.hash) } 29 .hash : { *(.hash) }
@@ -28,17 +47,30 @@ SECTIONS
28 .rela.plt : { *(.rela.plt) } 47 .rela.plt : { *(.rela.plt) }
29/* .init : { *(.init) } =0*/ 48/* .init : { *(.init) } =0*/
30 .plt : { *(.plt) } 49 .plt : { *(.plt) }
31 .text : 50#endif
32 { 51 .text : {
52#ifdef CONFIG_PPC64
53 *(.text .text.*)
54#else
33 *(.text) 55 *(.text)
56#endif
34 SCHED_TEXT 57 SCHED_TEXT
35 LOCK_TEXT 58 LOCK_TEXT
59#ifdef CONFIG_PPC64
60 KPROBES_TEXT
61#endif
36 *(.fixup) 62 *(.fixup)
63#ifdef CONFIG_PPC32
37 *(.got1) 64 *(.got1)
38 __got2_start = .; 65 __got2_start = .;
39 *(.got2) 66 *(.got2)
40 __got2_end = .; 67 __got2_end = .;
68#else
69 . = ALIGN(PAGE_SIZE);
70 _etext = .;
71#endif
41 } 72 }
73#ifdef CONFIG_PPC32
42 _etext = .; 74 _etext = .;
43 PROVIDE (etext = .); 75 PROVIDE (etext = .);
44 76
@@ -48,6 +80,7 @@ SECTIONS
48 .dtors : { *(.dtors) } 80 .dtors : { *(.dtors) }
49 81
50 .fixup : { *(.fixup) } 82 .fixup : { *(.fixup) }
83#endif
51 84
52 __ex_table : { 85 __ex_table : {
53 __start___ex_table = .; 86 __start___ex_table = .;
@@ -61,6 +94,17 @@ SECTIONS
61 __stop___bug_table = .; 94 __stop___bug_table = .;
62 } 95 }
63 96
97#ifdef CONFIG_PPC64
98 __ftr_fixup : {
99 __start___ftr_fixup = .;
100 *(__ftr_fixup)
101 __stop___ftr_fixup = .;
102 }
103
104 RODATA
105#endif
106
107#ifdef CONFIG_PPC32
64 /* Read-write section, merged into data segment: */ 108 /* Read-write section, merged into data segment: */
65 . = ALIGN(4096); 109 . = ALIGN(4096);
66 .data : 110 .data :
@@ -90,16 +134,25 @@ SECTIONS
90 .data.init_task : { *(.data.init_task) } 134 .data.init_task : { *(.data.init_task) }
91 135
92 . = ALIGN(4096); 136 . = ALIGN(4096);
137#else
138 /* will be freed after init */
139 . = ALIGN(PAGE_SIZE);
140#endif
93 __init_begin = .; 141 __init_begin = .;
94 .init.text : { 142 .init.text : {
95 _sinittext = .; 143 _sinittext = .;
96 *(.init.text) 144 *(.init.text)
97 _einittext = .; 145 _einittext = .;
98 } 146 }
147#ifdef CONFIG_PPC32
99 /* .exit.text is discarded at runtime, not link time, 148 /* .exit.text is discarded at runtime, not link time,
100 to deal with references from __bug_table */ 149 to deal with references from __bug_table */
101 .exit.text : { *(.exit.text) } 150 .exit.text : { *(.exit.text) }
151#endif
102 .init.data : { 152 .init.data : {
153#ifdef CONFIG_PPC64
154 *(.init.data)
155#else
103 *(.init.data); 156 *(.init.data);
104 __vtop_table_begin = .; 157 __vtop_table_begin = .;
105 *(.vtop_fixup); 158 *(.vtop_fixup);
@@ -107,13 +160,31 @@ SECTIONS
107 __ptov_table_begin = .; 160 __ptov_table_begin = .;
108 *(.ptov_fixup); 161 *(.ptov_fixup);
109 __ptov_table_end = .; 162 __ptov_table_end = .;
163#endif
110 } 164 }
165
111 . = ALIGN(16); 166 . = ALIGN(16);
167#ifdef CONFIG_PPC32
112 __setup_start = .; 168 __setup_start = .;
113 .init.setup : { *(.init.setup) } 169#endif
170 .init.setup : {
171#ifdef CONFIG_PPC64
172 __setup_start = .;
173#endif
174 *(.init.setup)
175#ifdef CONFIG_PPC64
176 __setup_end = .;
177#endif
178 }
179#ifdef CONFIG_PPC32
114 __setup_end = .; 180 __setup_end = .;
181
115 __initcall_start = .; 182 __initcall_start = .;
183#endif
116 .initcall.init : { 184 .initcall.init : {
185#ifdef CONFIG_PPC64
186 __initcall_start = .;
187#endif
117 *(.initcall1.init) 188 *(.initcall1.init)
118 *(.initcall2.init) 189 *(.initcall2.init)
119 *(.initcall3.init) 190 *(.initcall3.init)
@@ -121,27 +192,109 @@ SECTIONS
121 *(.initcall5.init) 192 *(.initcall5.init)
122 *(.initcall6.init) 193 *(.initcall6.init)
123 *(.initcall7.init) 194 *(.initcall7.init)
195#ifdef CONFIG_PPC64
196 __initcall_end = .;
197#endif
124 } 198 }
199#ifdef CONFIG_PPC32
125 __initcall_end = .; 200 __initcall_end = .;
126 201
127 __con_initcall_start = .; 202 __con_initcall_start = .;
128 .con_initcall.init : { *(.con_initcall.init) } 203#endif
204 .con_initcall.init : {
205#ifdef CONFIG_PPC64
206 __con_initcall_start = .;
207#endif
208 *(.con_initcall.init)
209#ifdef CONFIG_PPC64
210 __con_initcall_end = .;
211#endif
212 }
213#ifdef CONFIG_PPC32
129 __con_initcall_end = .; 214 __con_initcall_end = .;
215#endif
130 216
131 SECURITY_INIT 217 SECURITY_INIT
132 218
219#ifdef CONFIG_PPC32
133 __start___ftr_fixup = .; 220 __start___ftr_fixup = .;
134 __ftr_fixup : { *(__ftr_fixup) } 221 __ftr_fixup : { *(__ftr_fixup) }
135 __stop___ftr_fixup = .; 222 __stop___ftr_fixup = .;
223#else
224 . = ALIGN(PAGE_SIZE);
225 .init.ramfs : {
226 __initramfs_start = .;
227 *(.init.ramfs)
228 __initramfs_end = .;
229 }
230#endif
136 231
232#ifdef CONFIG_PPC32
137 . = ALIGN(32); 233 . = ALIGN(32);
138 __per_cpu_start = .; 234 __per_cpu_start = .;
139 .data.percpu : { *(.data.percpu) } 235#endif
236 .data.percpu : {
237#ifdef CONFIG_PPC64
238 __per_cpu_start = .;
239#endif
240 *(.data.percpu)
241#ifdef CONFIG_PPC64
242 __per_cpu_end = .;
243#endif
244 }
245#ifdef CONFIG_PPC32
140 __per_cpu_end = .; 246 __per_cpu_end = .;
247#endif
141 248
249#ifdef CONFIG_PPC64
250 . = ALIGN(PAGE_SIZE);
251 . = ALIGN(16384);
252 __init_end = .;
253 /* freed after init ends here */
254
255
256 /* Read/write sections */
257 . = ALIGN(PAGE_SIZE);
258 . = ALIGN(16384);
259 /* The initial task and kernel stack */
260 .data.init_task : {
261 *(.data.init_task)
262 }
263
264 . = ALIGN(PAGE_SIZE);
265 .data.page_aligned : {
266 *(.data.page_aligned)
267 }
268
269 .data.cacheline_aligned : {
270 *(.data.cacheline_aligned)
271 }
272
273 .data : {
274 *(.data .data.rel* .toc1)
275 *(.branch_lt)
276 }
277
278 .opd : {
279 *(.opd)
280 }
281
282 .got : {
283 __toc_start = .;
284 *(.got)
285 *(.toc)
286 . = ALIGN(PAGE_SIZE);
287 _edata = .;
288 }
289
290
291 . = ALIGN(PAGE_SIZE);
292#else
142 . = ALIGN(4096); 293 . = ALIGN(4096);
143 __initramfs_start = .; 294 __initramfs_start = .;
144 .init.ramfs : { *(.init.ramfs) } 295 .init.ramfs : {
296 *(.init.ramfs)
297 }
145 __initramfs_end = .; 298 __initramfs_end = .;
146 299
147 . = ALIGN(4096); 300 . = ALIGN(4096);
@@ -152,21 +305,30 @@ SECTIONS
152 _eextratext = .; 305 _eextratext = .;
153 306
154 __bss_start = .; 307 __bss_start = .;
155 .bss : 308#endif
156 { 309 .bss : {
310#ifdef CONFIG_PPC64
311 __bss_start = .;
312#else
157 *(.sbss) *(.scommon) 313 *(.sbss) *(.scommon)
158 *(.dynbss) 314 *(.dynbss)
315#endif
159 *(.bss) 316 *(.bss)
317#ifdef CONFIG_PPC32
160 *(COMMON) 318 *(COMMON)
319#else
320 __bss_stop = .;
321#endif
161 } 322 }
323#ifdef CONFIG_PPC32
162 __bss_stop = .; 324 __bss_stop = .;
325#endif
163 326
327#ifdef CONFIG_PPC64
328 . = ALIGN(PAGE_SIZE);
329#endif
164 _end = . ; 330 _end = . ;
331#ifdef CONFIG_PPC32
165 PROVIDE (end = .); 332 PROVIDE (end = .);
166 333#endif
167 /* Sections to be discarded. */
168 /DISCARD/ : {
169 *(.exitcall.exit)
170 *(.exit.data)
171 }
172} 334}