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