Blame view
arch/powerpc/kernel/vmlinux.lds.S
5.39 KB
c51e3a417 powerpc: Fix vmli... |
1 |
#ifdef CONFIG_PPC64 |
e8222502e [PATCH] powerpc: ... |
2 |
#define PROVIDE32(x) PROVIDE(__unused__##x) |
c51e3a417 powerpc: Fix vmli... |
3 |
#else |
e8222502e [PATCH] powerpc: ... |
4 |
#define PROVIDE32(x) PROVIDE(x) |
c51e3a417 powerpc: Fix vmli... |
5 |
#endif |
4846c5deb [POWERPC] Clean u... |
6 |
#include <asm/page.h> |
14cf11af6 powerpc: Merge en... |
7 |
#include <asm-generic/vmlinux.lds.h> |
bd67fcf9b [POWERPC] Add __r... |
8 |
#include <asm/cache.h> |
62bef2885 powerpc: Cleanup ... |
9 |
#include <asm/thread_info.h> |
14cf11af6 powerpc: Merge en... |
10 |
|
e19e4ab41 powerpc: Set entr... |
11 |
ENTRY(_stext) |
c69cccc95 powerpc: Fix buil... |
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
PHDRS { kernel PT_LOAD FLAGS(7); /* RWX */ notes PT_NOTE FLAGS(0); dummy PT_NOTE FLAGS(0); /* binutils < 2.18 has a bug that makes it misbehave when taking an ELF file with all segments at load address 0 as input. This happens when running "strip" on vmlinux, because of the AT() magic in this linker script. People using GCC >= 4.2 won't run into this problem, because the "build-id" support will put some data into the "notes" segment (at a non-zero load address). To work around this, we force some data into both the "dummy" segment and the kernel segment, so the dummy segment will get a non-zero load address. It's not enough to always create the "notes" segment, since if nothing gets assigned to it, its load address will be zero. */ } |
cabb55871 powerpc: make iSe... |
30 31 32 33 |
#ifdef CONFIG_PPC64 OUTPUT_ARCH(powerpc:common64) jiffies = jiffies_64; #else |
14cf11af6 powerpc: Merge en... |
34 35 |
OUTPUT_ARCH(powerpc:common) jiffies = jiffies_64 + 4; |
cabb55871 powerpc: make iSe... |
36 |
#endif |
14cf11af6 powerpc: Merge en... |
37 38 |
SECTIONS { |
d4703aefd module: handle pp... |
39 40 |
. = 0; reloc_start = .; |
e8222502e [PATCH] powerpc: ... |
41 |
. = KERNELBASE; |
14cf11af6 powerpc: Merge en... |
42 |
|
e8222502e [PATCH] powerpc: ... |
43 44 45 46 47 |
/* * Text, read only data and other permanent read-only sections */ /* Text and gots */ |
366234f65 [POWERPC] Update ... |
48 |
.text : AT(ADDR(.text) - LOAD_OFFSET) { |
748a76838 [POWERPC] Fix mod... |
49 |
ALIGN_FUNCTION(); |
e70398458 powerpc: convert ... |
50 |
HEAD_TEXT |
fd593d127 [PATCH] relocatab... |
51 |
_text = .; |
13beadd91 powerpc: Revert s... |
52 53 |
/* careful! __ftr_alt_* sections need to be close to .text */ *(.text .fixup __ftr_alt_* .ref.text) |
e8222502e [PATCH] powerpc: ... |
54 55 56 |
SCHED_TEXT LOCK_TEXT KPROBES_TEXT |
6794c7824 powerpc64: port o... |
57 |
IRQENTRY_TEXT |
14cf11af6 powerpc: Merge en... |
58 |
|
e8222502e [PATCH] powerpc: ... |
59 60 61 62 63 64 |
#ifdef CONFIG_PPC32 *(.got1) __got2_start = .; *(.got2) __got2_end = .; #endif /* CONFIG_PPC32 */ |
c69cccc95 powerpc: Fix buil... |
65 |
} :kernel |
e8222502e [PATCH] powerpc: ... |
66 |
|
303996dac powerpc: Make sur... |
67 68 69 |
. = ALIGN(PAGE_SIZE); _etext = .; PROVIDE32 (etext = .); |
e8222502e [PATCH] powerpc: ... |
70 71 |
/* Read-only data */ RODATA |
62bef2885 powerpc: Cleanup ... |
72 |
EXCEPTION_TABLE(0) |
14cf11af6 powerpc: Merge en... |
73 |
|
c69cccc95 powerpc: Fix buil... |
74 75 76 77 |
NOTES :kernel :notes /* The dummy segment contents for the bug workaround mentioned above near PHDRS. */ |
80c60bf9b powerpc: Fix comp... |
78 |
.dummy : AT(ADDR(.dummy) - LOAD_OFFSET) { |
e16459c6b powerpc: Make dum... |
79 80 81 |
LONG(0) LONG(0) LONG(0) |
c69cccc95 powerpc: Fix buil... |
82 |
} :kernel :dummy |
8fb775ee5 powerpc: Put allo... |
83 |
|
e8222502e [PATCH] powerpc: ... |
84 85 86 87 88 |
/* * Init sections discarded at runtime */ . = ALIGN(PAGE_SIZE); __init_begin = .; |
62bef2885 powerpc: Cleanup ... |
89 |
INIT_TEXT_SECTION(PAGE_SIZE) :kernel |
e8222502e [PATCH] powerpc: ... |
90 91 92 93 |
/* .exit.text is discarded at runtime, not link time, * to deal with references from __bug_table */ |
366234f65 [POWERPC] Update ... |
94 |
.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { |
01ba2bdc6 all archs: consol... |
95 96 |
EXIT_TEXT } |
e8222502e [PATCH] powerpc: ... |
97 |
|
366234f65 [POWERPC] Update ... |
98 |
.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { |
01ba2bdc6 all archs: consol... |
99 |
INIT_DATA |
e8222502e [PATCH] powerpc: ... |
100 101 102 103 104 105 |
__vtop_table_begin = .; *(.vtop_fixup); __vtop_table_end = .; __ptov_table_begin = .; *(.ptov_fixup); __ptov_table_end = .; |
c4e3ea255 [PATCH] powerpc: ... |
106 107 108 109 110 |
#ifdef CONFIG_PPC_ISERIES __dt_strings_start = .; *(.dt_strings); __dt_strings_end = .; #endif |
e8222502e [PATCH] powerpc: ... |
111 |
} |
366234f65 [POWERPC] Update ... |
112 |
.init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
113 |
INIT_SETUP(16) |
e8222502e [PATCH] powerpc: ... |
114 |
} |
366234f65 [POWERPC] Update ... |
115 |
.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
116 117 |
INIT_CALLS } |
e8222502e [PATCH] powerpc: ... |
118 |
|
366234f65 [POWERPC] Update ... |
119 |
.con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
120 |
CON_INITCALL |
e8222502e [PATCH] powerpc: ... |
121 122 123 124 125 |
} SECURITY_INIT . = ALIGN(8); |
366234f65 [POWERPC] Update ... |
126 |
__ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { |
cabb55871 powerpc: make iSe... |
127 128 129 130 |
__start___ftr_fixup = .; *(__ftr_fixup) __stop___ftr_fixup = .; } |
2d1b20276 powerpc: Fixup lw... |
131 |
. = ALIGN(8); |
7c03d653c powerpc/mm: Intro... |
132 133 134 135 136 137 |
__mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { __start___mmu_ftr_fixup = .; *(__mmu_ftr_fixup) __stop___mmu_ftr_fixup = .; } . = ALIGN(8); |
2d1b20276 powerpc: Fixup lw... |
138 139 140 141 142 |
__lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { __start___lwsync_fixup = .; *(__lwsync_fixup) __stop___lwsync_fixup = .; } |
3f639ee8c [POWERPC] impleme... |
143 144 |
#ifdef CONFIG_PPC64 . = ALIGN(8); |
366234f65 [POWERPC] Update ... |
145 |
__fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { |
3f639ee8c [POWERPC] impleme... |
146 147 148 149 150 |
__start___fw_ftr_fixup = .; *(__fw_ftr_fixup) __stop___fw_ftr_fixup = .; } #endif |
366234f65 [POWERPC] Update ... |
151 |
.init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
152 |
INIT_RAM_FS |
e8222502e [PATCH] powerpc: ... |
153 |
} |
62bef2885 powerpc: Cleanup ... |
154 |
|
0415b00d1 percpu: Always al... |
155 |
PERCPU_SECTION(L1_CACHE_BYTES) |
14cf11af6 powerpc: Merge en... |
156 |
|
e8222502e [PATCH] powerpc: ... |
157 |
. = ALIGN(8); |
366234f65 [POWERPC] Update ... |
158 |
.machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { |
e8222502e [PATCH] powerpc: ... |
159 160 161 162 |
__machine_desc_start = . ; *(.machine.desc) __machine_desc_end = . ; } |
2a4b9c5af powerpc: Work aro... |
163 |
#ifdef CONFIG_RELOCATABLE |
549e8152d powerpc: Make the... |
164 |
. = ALIGN(8); |
9c5f7d39a powerpc: Process ... |
165 166 167 168 169 170 171 |
.dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET) { #ifdef CONFIG_RELOCATABLE_PPC32 __dynamic_symtab = .; #endif *(.dynsym) } |
549e8152d powerpc: Make the... |
172 173 174 175 176 177 178 179 180 181 182 183 184 |
.dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) } .dynamic : AT(ADDR(.dynamic) - LOAD_OFFSET) { __dynamic_start = .; *(.dynamic) } .hash : AT(ADDR(.hash) - LOAD_OFFSET) { *(.hash) } .interp : AT(ADDR(.interp) - LOAD_OFFSET) { *(.interp) } .rela.dyn : AT(ADDR(.rela.dyn) - LOAD_OFFSET) { __rela_dyn_start = .; *(.rela*) } |
2a4b9c5af powerpc: Work aro... |
185 |
#endif |
e8222502e [PATCH] powerpc: ... |
186 187 188 189 190 191 192 193 194 195 196 |
/* freed after init ends here */ . = ALIGN(PAGE_SIZE); __init_end = .; /* * And now the various read/write data */ . = ALIGN(PAGE_SIZE); _sdata = .; |
14cf11af6 powerpc: Merge en... |
197 |
|
cabb55871 powerpc: make iSe... |
198 |
#ifdef CONFIG_PPC32 |
366234f65 [POWERPC] Update ... |
199 |
.data : AT(ADDR(.data) - LOAD_OFFSET) { |
ca967258b all-archs: consol... |
200 |
DATA_DATA |
e8222502e [PATCH] powerpc: ... |
201 202 203 |
*(.sdata) *(.got.plt) *(.got) } |
cabb55871 powerpc: make iSe... |
204 |
#else |
366234f65 [POWERPC] Update ... |
205 |
.data : AT(ADDR(.data) - LOAD_OFFSET) { |
3ae0aa9f4 powerpc: add miss... |
206 207 208 |
DATA_DATA *(.data.rel*) *(.toc1) |
e8222502e [PATCH] powerpc: ... |
209 210 |
*(.branch_lt) } |
14cf11af6 powerpc: Merge en... |
211 |
|
366234f65 [POWERPC] Update ... |
212 |
.opd : AT(ADDR(.opd) - LOAD_OFFSET) { |
e8222502e [PATCH] powerpc: ... |
213 214 |
*(.opd) } |
366234f65 [POWERPC] Update ... |
215 |
.got : AT(ADDR(.got) - LOAD_OFFSET) { |
e8222502e [PATCH] powerpc: ... |
216 217 218 219 |
__toc_start = .; *(.got) *(.toc) } |
cabb55871 powerpc: make iSe... |
220 |
#endif |
14cf11af6 powerpc: Merge en... |
221 |
|
e8222502e [PATCH] powerpc: ... |
222 |
/* The initial task and kernel stack */ |
2af7687f1 Rename .data.init... |
223 |
INIT_TASK_DATA_SECTION(THREAD_SIZE) |
14cf11af6 powerpc: Merge en... |
224 |
|
75b134837 Rename .data.page... |
225 |
.data..page_aligned : AT(ADDR(.data..page_aligned) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
226 |
PAGE_ALIGNED_DATA(PAGE_SIZE) |
e8222502e [PATCH] powerpc: ... |
227 |
} |
14cf11af6 powerpc: Merge en... |
228 |
|
4af57b787 Rename .data.cach... |
229 |
.data..cacheline_aligned : AT(ADDR(.data..cacheline_aligned) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
230 |
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) |
e8222502e [PATCH] powerpc: ... |
231 |
} |
14cf11af6 powerpc: Merge en... |
232 |
|
54cb27a71 Rename .data.read... |
233 |
.data..read_mostly : AT(ADDR(.data..read_mostly) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
234 |
READ_MOSTLY_DATA(L1_CACHE_BYTES) |
bd67fcf9b [POWERPC] Add __r... |
235 |
} |
5be2a213b powerpc: warning:... |
236 |
. = ALIGN(PAGE_SIZE); |
366234f65 [POWERPC] Update ... |
237 |
.data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { |
62bef2885 powerpc: Cleanup ... |
238 |
NOSAVE_DATA |
e8222502e [PATCH] powerpc: ... |
239 |
} |
4a2885630 powerpc: Reduce t... |
240 |
|
903444e42 powerpc/vmlinux.l... |
241 242 243 |
. = ALIGN(PAGE_SIZE); _edata = .; PROVIDE32 (edata = .); |
e8222502e [PATCH] powerpc: ... |
244 245 246 |
/* * And finally the bss */ |
62bef2885 powerpc: Cleanup ... |
247 |
BSS_SECTION(0, 0, 0) |
14cf11af6 powerpc: Merge en... |
248 |
|
e8222502e [PATCH] powerpc: ... |
249 250 251 |
. = ALIGN(PAGE_SIZE); _end = . ; PROVIDE32 (end = .); |
023bf6f1b linker script: un... |
252 253 254 |
/* Sections to be discarded. */ DISCARDS |
14cf11af6 powerpc: Merge en... |
255 |
} |