diff options
| -rw-r--r-- | arch/powerpc/kernel/vmlinux.lds.S | 69 |
1 files changed, 15 insertions, 54 deletions
diff --git a/arch/powerpc/kernel/vmlinux.lds.S b/arch/powerpc/kernel/vmlinux.lds.S index 58da4070723d..f56429362a12 100644 --- a/arch/powerpc/kernel/vmlinux.lds.S +++ b/arch/powerpc/kernel/vmlinux.lds.S | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #include <asm/page.h> | 6 | #include <asm/page.h> |
| 7 | #include <asm-generic/vmlinux.lds.h> | 7 | #include <asm-generic/vmlinux.lds.h> |
| 8 | #include <asm/cache.h> | 8 | #include <asm/cache.h> |
| 9 | #include <asm/thread_info.h> | ||
| 9 | 10 | ||
| 10 | ENTRY(_stext) | 11 | ENTRY(_stext) |
| 11 | 12 | ||
| @@ -71,12 +72,7 @@ SECTIONS | |||
| 71 | /* Read-only data */ | 72 | /* Read-only data */ |
| 72 | RODATA | 73 | RODATA |
| 73 | 74 | ||
| 74 | /* Exception & bug tables */ | 75 | EXCEPTION_TABLE(0) |
| 75 | __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { | ||
| 76 | __start___ex_table = .; | ||
| 77 | *(__ex_table) | ||
| 78 | __stop___ex_table = .; | ||
| 79 | } | ||
| 80 | 76 | ||
| 81 | NOTES :kernel :notes | 77 | NOTES :kernel :notes |
| 82 | 78 | ||
| @@ -93,12 +89,7 @@ SECTIONS | |||
| 93 | */ | 89 | */ |
| 94 | . = ALIGN(PAGE_SIZE); | 90 | . = ALIGN(PAGE_SIZE); |
| 95 | __init_begin = .; | 91 | __init_begin = .; |
| 96 | 92 | INIT_TEXT_SECTION(PAGE_SIZE) :kernel | |
| 97 | .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { | ||
| 98 | _sinittext = .; | ||
| 99 | INIT_TEXT | ||
| 100 | _einittext = .; | ||
| 101 | } :kernel | ||
| 102 | 93 | ||
| 103 | /* .exit.text is discarded at runtime, not link time, | 94 | /* .exit.text is discarded at runtime, not link time, |
| 104 | * to deal with references from __bug_table | 95 | * to deal with references from __bug_table |
| @@ -122,23 +113,16 @@ SECTIONS | |||
| 122 | #endif | 113 | #endif |
| 123 | } | 114 | } |
| 124 | 115 | ||
| 125 | . = ALIGN(16); | ||
| 126 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { | 116 | .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { |
| 127 | __setup_start = .; | 117 | INIT_SETUP(16) |
| 128 | *(.init.setup) | ||
| 129 | __setup_end = .; | ||
| 130 | } | 118 | } |
| 131 | 119 | ||
| 132 | .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { | 120 | .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { |
| 133 | __initcall_start = .; | 121 | INIT_CALLS |
| 134 | INITCALLS | 122 | } |
| 135 | __initcall_end = .; | ||
| 136 | } | ||
| 137 | 123 | ||
| 138 | .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { | 124 | .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { |
| 139 | __con_initcall_start = .; | 125 | CON_INITCALL |
| 140 | *(.con_initcall.init) | ||
| 141 | __con_initcall_end = .; | ||
| 142 | } | 126 | } |
| 143 | 127 | ||
| 144 | SECURITY_INIT | 128 | SECURITY_INIT |
| @@ -169,14 +153,10 @@ SECTIONS | |||
| 169 | __stop___fw_ftr_fixup = .; | 153 | __stop___fw_ftr_fixup = .; |
| 170 | } | 154 | } |
| 171 | #endif | 155 | #endif |
| 172 | #ifdef CONFIG_BLK_DEV_INITRD | ||
| 173 | . = ALIGN(PAGE_SIZE); | ||
| 174 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { | 156 | .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { |
| 175 | __initramfs_start = .; | 157 | INIT_RAM_FS |
| 176 | *(.init.ramfs) | ||
| 177 | __initramfs_end = .; | ||
| 178 | } | 158 | } |
| 179 | #endif | 159 | |
| 180 | PERCPU(PAGE_SIZE) | 160 | PERCPU(PAGE_SIZE) |
| 181 | 161 | ||
| 182 | . = ALIGN(8); | 162 | . = ALIGN(8); |
| @@ -240,36 +220,24 @@ SECTIONS | |||
| 240 | #endif | 220 | #endif |
| 241 | 221 | ||
| 242 | /* The initial task and kernel stack */ | 222 | /* The initial task and kernel stack */ |
| 243 | #ifdef CONFIG_PPC32 | ||
| 244 | . = ALIGN(8192); | ||
| 245 | #else | ||
| 246 | . = ALIGN(16384); | ||
| 247 | #endif | ||
| 248 | .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { | 223 | .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { |
| 249 | *(.data.init_task) | 224 | INIT_TASK_DATA(THREAD_SIZE) |
| 250 | } | 225 | } |
| 251 | 226 | ||
| 252 | . = ALIGN(PAGE_SIZE); | ||
| 253 | .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { | 227 | .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { |
| 254 | *(.data.page_aligned) | 228 | PAGE_ALIGNED_DATA(PAGE_SIZE) |
| 255 | } | 229 | } |
| 256 | 230 | ||
| 257 | . = ALIGN(L1_CACHE_BYTES); | ||
| 258 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { | 231 | .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { |
| 259 | *(.data.cacheline_aligned) | 232 | CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) |
| 260 | } | 233 | } |
| 261 | 234 | ||
| 262 | . = ALIGN(L1_CACHE_BYTES); | ||
| 263 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { | 235 | .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { |
| 264 | *(.data.read_mostly) | 236 | READ_MOSTLY_DATA(L1_CACHE_BYTES) |
| 265 | } | 237 | } |
| 266 | 238 | ||
| 267 | . = ALIGN(PAGE_SIZE); | ||
| 268 | .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { | 239 | .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { |
| 269 | __nosave_begin = .; | 240 | NOSAVE_DATA |
| 270 | *(.data.nosave) | ||
| 271 | . = ALIGN(PAGE_SIZE); | ||
| 272 | __nosave_end = .; | ||
| 273 | } | 241 | } |
| 274 | 242 | ||
| 275 | . = ALIGN(PAGE_SIZE); | 243 | . = ALIGN(PAGE_SIZE); |
| @@ -280,14 +248,7 @@ SECTIONS | |||
| 280 | * And finally the bss | 248 | * And finally the bss |
| 281 | */ | 249 | */ |
| 282 | 250 | ||
| 283 | .bss : AT(ADDR(.bss) - LOAD_OFFSET) { | 251 | BSS_SECTION(0, 0, 0) |
| 284 | __bss_start = .; | ||
| 285 | *(.sbss) *(.scommon) | ||
| 286 | *(.dynbss) | ||
| 287 | *(.bss) | ||
| 288 | *(COMMON) | ||
| 289 | __bss_stop = .; | ||
| 290 | } | ||
| 291 | 252 | ||
| 292 | . = ALIGN(PAGE_SIZE); | 253 | . = ALIGN(PAGE_SIZE); |
| 293 | _end = . ; | 254 | _end = . ; |
