diff options
Diffstat (limited to 'arch/arm/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/arm/kernel/vmlinux.lds.S | 100 |
1 files changed, 33 insertions, 67 deletions
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index aecf87dfbaec..b16c07914b55 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
@@ -24,13 +24,11 @@ SECTIONS | |||
24 | #else | 24 | #else |
25 | . = PAGE_OFFSET + TEXT_OFFSET; | 25 | . = PAGE_OFFSET + TEXT_OFFSET; |
26 | #endif | 26 | #endif |
27 | .text.head : { | ||
28 | _stext = .; | ||
29 | _sinittext = .; | ||
30 | *(.text.head) | ||
31 | } | ||
32 | 27 | ||
33 | .init : { /* Init code and data */ | 28 | .init : { /* Init code and data */ |
29 | _stext = .; | ||
30 | _sinittext = .; | ||
31 | HEAD_TEXT | ||
34 | INIT_TEXT | 32 | INIT_TEXT |
35 | _einittext = .; | 33 | _einittext = .; |
36 | __proc_info_begin = .; | 34 | __proc_info_begin = .; |
@@ -42,48 +40,32 @@ SECTIONS | |||
42 | __tagtable_begin = .; | 40 | __tagtable_begin = .; |
43 | *(.taglist.init) | 41 | *(.taglist.init) |
44 | __tagtable_end = .; | 42 | __tagtable_end = .; |
45 | . = ALIGN(16); | 43 | |
46 | __setup_start = .; | 44 | INIT_SETUP(16) |
47 | *(.init.setup) | 45 | |
48 | __setup_end = .; | 46 | INIT_CALLS |
49 | __early_begin = .; | 47 | CON_INITCALL |
50 | *(.early_param.init) | 48 | SECURITY_INITCALL |
51 | __early_end = .; | 49 | INIT_RAM_FS |
52 | __initcall_start = .; | 50 | |
53 | INITCALLS | ||
54 | __initcall_end = .; | ||
55 | __con_initcall_start = .; | ||
56 | *(.con_initcall.init) | ||
57 | __con_initcall_end = .; | ||
58 | __security_initcall_start = .; | ||
59 | *(.security_initcall.init) | ||
60 | __security_initcall_end = .; | ||
61 | #ifdef CONFIG_BLK_DEV_INITRD | ||
62 | . = ALIGN(32); | ||
63 | __initramfs_start = .; | ||
64 | usr/built-in.o(.init.ramfs) | ||
65 | __initramfs_end = .; | ||
66 | #endif | ||
67 | . = ALIGN(PAGE_SIZE); | ||
68 | __per_cpu_load = .; | ||
69 | __per_cpu_start = .; | ||
70 | *(.data.percpu.page_aligned) | ||
71 | *(.data.percpu) | ||
72 | *(.data.percpu.shared_aligned) | ||
73 | __per_cpu_end = .; | ||
74 | #ifndef CONFIG_XIP_KERNEL | 51 | #ifndef CONFIG_XIP_KERNEL |
75 | __init_begin = _stext; | 52 | __init_begin = _stext; |
76 | INIT_DATA | 53 | INIT_DATA |
77 | . = ALIGN(PAGE_SIZE); | ||
78 | __init_end = .; | ||
79 | #endif | 54 | #endif |
80 | } | 55 | } |
81 | 56 | ||
82 | /DISCARD/ : { /* Exit code and data */ | 57 | PERCPU(PAGE_SIZE) |
83 | EXIT_TEXT | 58 | |
84 | EXIT_DATA | 59 | #ifndef CONFIG_XIP_KERNEL |
85 | *(.exitcall.exit) | 60 | . = ALIGN(PAGE_SIZE); |
86 | *(.discard) | 61 | __init_end = .; |
62 | #endif | ||
63 | |||
64 | /* | ||
65 | * unwind exit sections must be discarded before the rest of the | ||
66 | * unwind sections get included. | ||
67 | */ | ||
68 | /DISCARD/ : { | ||
87 | *(.ARM.exidx.exit.text) | 69 | *(.ARM.exidx.exit.text) |
88 | *(.ARM.extab.exit.text) | 70 | *(.ARM.extab.exit.text) |
89 | #ifndef CONFIG_HOTPLUG_CPU | 71 | #ifndef CONFIG_HOTPLUG_CPU |
@@ -157,7 +139,7 @@ SECTIONS | |||
157 | * first, the init task union, aligned | 139 | * first, the init task union, aligned |
158 | * to an 8192 byte boundary. | 140 | * to an 8192 byte boundary. |
159 | */ | 141 | */ |
160 | *(.data.init_task) | 142 | INIT_TASK_DATA(THREAD_SIZE) |
161 | 143 | ||
162 | #ifdef CONFIG_XIP_KERNEL | 144 | #ifdef CONFIG_XIP_KERNEL |
163 | . = ALIGN(PAGE_SIZE); | 145 | . = ALIGN(PAGE_SIZE); |
@@ -167,17 +149,8 @@ SECTIONS | |||
167 | __init_end = .; | 149 | __init_end = .; |
168 | #endif | 150 | #endif |
169 | 151 | ||
170 | . = ALIGN(PAGE_SIZE); | 152 | NOSAVE_DATA |
171 | __nosave_begin = .; | 153 | CACHELINE_ALIGNED_DATA(32) |
172 | *(.data.nosave) | ||
173 | . = ALIGN(PAGE_SIZE); | ||
174 | __nosave_end = .; | ||
175 | |||
176 | /* | ||
177 | * then the cacheline aligned data | ||
178 | */ | ||
179 | . = ALIGN(32); | ||
180 | *(.data.cacheline_aligned) | ||
181 | 154 | ||
182 | /* | 155 | /* |
183 | * The exception fixup table (might need resorting at runtime) | 156 | * The exception fixup table (might need resorting at runtime) |
@@ -256,21 +229,14 @@ SECTIONS | |||
256 | } | 229 | } |
257 | #endif | 230 | #endif |
258 | 231 | ||
259 | .bss : { | 232 | BSS_SECTION(0, 0, 0) |
260 | __bss_start = .; /* BSS */ | 233 | _end = .; |
261 | *(.bss) | 234 | |
262 | *(COMMON) | 235 | STABS_DEBUG |
263 | __bss_stop = .; | ||
264 | _end = .; | ||
265 | } | ||
266 | /* Stabs debugging sections. */ | ||
267 | .stab 0 : { *(.stab) } | ||
268 | .stabstr 0 : { *(.stabstr) } | ||
269 | .stab.excl 0 : { *(.stab.excl) } | ||
270 | .stab.exclstr 0 : { *(.stab.exclstr) } | ||
271 | .stab.index 0 : { *(.stab.index) } | ||
272 | .stab.indexstr 0 : { *(.stab.indexstr) } | ||
273 | .comment 0 : { *(.comment) } | 236 | .comment 0 : { *(.comment) } |
237 | |||
238 | /* Default discards */ | ||
239 | DISCARDS | ||
274 | } | 240 | } |
275 | 241 | ||
276 | /* | 242 | /* |