1#include <linux/config.h> 2#ifdef CONFIG_PPC64 3#include <asm/page.h> 4#define PROVIDE32(x) PROVIDE(__unused__##x) 5#else 6#define PAGE_SIZE 4096 7#define KERNELBASE CONFIG_KERNEL_START 8#define PROVIDE32(x) PROVIDE(x) 9#endif 10#include <asm-generic/vmlinux.lds.h> 11 12ENTRY(_stext) 13 14#ifdef CONFIG_PPC64 15OUTPUT_ARCH(powerpc:common64) 16jiffies = jiffies_64; 17#else 18OUTPUT_ARCH(powerpc:common) 19jiffies = jiffies_64 + 4; 20#endif 21SECTIONS 22{ 23 /* Sections to be discarded. */ 24 /DISCARD/ : { 25 *(.exitcall.exit) 26 *(.exit.data) 27 } 28 29 . = KERNELBASE; 30 31/* 32 * Text, read only data and other permanent read-only sections 33 */ 34 35 /* Text and gots */ 36 .text : { 37 *(.text .text.*) 38 SCHED_TEXT 39 LOCK_TEXT 40 KPROBES_TEXT 41 *(.fixup) 42 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 */ 59 __ex_table : { 60 __start___ex_table = .; 61 *(__ex_table) 62 __stop___ex_table = .; 63 } 64 65 __bug_table : { 66 __start___bug_table = .; 67 *(__bug_table) 68 __stop___bug_table = .; 69 } 70 71/* 72 * Init sections discarded at runtime 73 */ 74 . = ALIGN(PAGE_SIZE); 75 __init_begin = .; 76 77 .init.text : { 78 _sinittext = .; 79 *(.init.text) 80 _einittext = .; 81 } 82 83 /* .exit.text is discarded at runtime, not link time, 84 * to deal with references from __bug_table 85 */ 86 .exit.text : { *(.exit.text) } 87 88 .init.data : { 89 *(.init.data); 90 __vtop_table_begin = .; 91 *(.vtop_fixup); 92 __vtop_table_end = .; 93 __ptov_table_begin = .; 94 *(.ptov_fixup); 95 __ptov_table_end = .; 96 } 97 98 . = ALIGN(16); 99 .init.setup : { 100 __setup_start = .; 101 *(.init.setup) 102 __setup_end = .; 103 } 104 105 .initcall.init : { 106 __initcall_start = .; 107 *(.initcall1.init) 108 *(.initcall2.init) 109 *(.initcall3.init) 110 *(.initcall4.init) 111 *(.initcall5.init) 112 *(.initcall6.init) 113 *(.initcall7.init) 114 __initcall_end = .; 115 } 116 117 .con_initcall.init : { 118 __con_initcall_start = .; 119 *(.con_initcall.init) 120 __con_initcall_end = .; 121 } 122 123 SECURITY_INIT 124 125 . = ALIGN(8); 126 __ftr_fixup : { 127 __start___ftr_fixup = .; 128 *(__ftr_fixup) 129 __stop___ftr_fixup = .; 130 } 131 132 . = ALIGN(PAGE_SIZE); 133 .init.ramfs : { 134 __initramfs_start = .; 135 *(.init.ramfs) 136 __initramfs_end = .; 137 } 138 139#ifdef CONFIG_PPC32 140 . = ALIGN(32); 141#else 142 . = ALIGN(128); 143#endif 144 .data.percpu : { 145 __per_cpu_start = .; 146 *(.data.percpu) 147 __per_cpu_end = .; 148 } 149 150 . = ALIGN(8); 151 .machine.desc : { 152 __machine_desc_start = . ; 153 *(.machine.desc) 154 __machine_desc_end = . ; 155 } 156 157 /* freed after init ends here */ 158 . = ALIGN(PAGE_SIZE); 159 __init_end = .; 160 161/* 162 * And now the various read/write data 163 */ 164 165 . = ALIGN(PAGE_SIZE); 166 _sdata = .; 167 168#ifdef CONFIG_PPC32 169 .data : 170 { 171 *(.data) 172 *(.sdata) 173 *(.got.plt) *(.got) 174 } 175#else 176 .data : { 177 *(.data .data.rel* .toc1) 178 *(.branch_lt) 179 } 180 181 .opd : { 182 *(.opd) 183 } 184 185 .got : { 186 __toc_start = .; 187 *(.got) 188 *(.toc) 189 } 190#endif 191 192 . = ALIGN(PAGE_SIZE); 193 _edata = .; 194 PROVIDE32 (edata = .); 195 196 /* The initial task and kernel stack */ 197#ifdef CONFIG_PPC32 198 . = ALIGN(8192); 199#else 200 . = ALIGN(16384); 201#endif 202 .data.init_task : { 203 *(.data.init_task) 204 } 205 206 . = ALIGN(PAGE_SIZE); 207 .data.page_aligned : { 208 *(.data.page_aligned) 209 } 210 211 .data.cacheline_aligned : { 212 *(.data.cacheline_aligned) 213 } 214 215 . = ALIGN(PAGE_SIZE); 216 __data_nosave : { 217 __nosave_begin = .; 218 *(.data.nosave) 219 . = ALIGN(PAGE_SIZE); 220 __nosave_end = .; 221 } 222 223/* 224 * And finally the bss 225 */ 226 227 .bss : { 228 __bss_start = .; 229 *(.sbss) *(.scommon) 230 *(.dynbss) 231 *(.bss) 232 *(COMMON) 233 __bss_stop = .; 234 } 235 236 . = ALIGN(PAGE_SIZE); 237 _end = . ; 238 PROVIDE32 (end = .); 239} 240