1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */ 2c51e3a41SPaul Mackerras#ifdef CONFIG_PPC64 3e8222502SBenjamin Herrenschmidt#define PROVIDE32(x) PROVIDE(__unused__##x) 4c51e3a41SPaul Mackerras#else 5e8222502SBenjamin Herrenschmidt#define PROVIDE32(x) PROVIDE(x) 6c51e3a41SPaul Mackerras#endif 75f69e388SBenjamin Herrenschmidt 85f69e388SBenjamin Herrenschmidt#define BSS_FIRST_SECTIONS *(.bss.prominit) 9441110a5SKees Cook#define EMITS_PT_NOTE 104e9e559aSKees Cook#define RO_EXCEPTION_TABLE_ALIGN 0 115f69e388SBenjamin Herrenschmidt 124846c5deSKumar Gala#include <asm/page.h> 1314cf11afSPaul Mackerras#include <asm-generic/vmlinux.lds.h> 14bd67fcf9STony Breeds#include <asm/cache.h> 1562bef288STim Abbott#include <asm/thread_info.h> 1614cf11afSPaul Mackerras 17166d97d9SChristophe Leroy#define STRICT_ALIGN_SIZE (1 << CONFIG_DATA_SHIFT) 18d924cc3fSBalbir Singh 19e19e4ab4SMichael EllermanENTRY(_stext) 20e19e4ab4SMichael Ellerman 21c69cccc9SSegher BoessenkoolPHDRS { 22af0f3e9eSKees Cook text PT_LOAD FLAGS(7); /* RWX */ 23ec556271SKees Cook note PT_NOTE FLAGS(0); 24c69cccc9SSegher Boessenkool} 25c69cccc9SSegher Boessenkool 26cabb5587SStephen Rothwell#ifdef CONFIG_PPC64 27cabb5587SStephen RothwellOUTPUT_ARCH(powerpc:common64) 28cabb5587SStephen Rothwelljiffies = jiffies_64; 29cabb5587SStephen Rothwell#else 3014cf11afSPaul MackerrasOUTPUT_ARCH(powerpc:common) 3114cf11afSPaul Mackerrasjiffies = jiffies_64 + 4; 32cabb5587SStephen Rothwell#endif 3314cf11afSPaul MackerrasSECTIONS 3414cf11afSPaul Mackerras{ 35e19e4ab4SMichael Ellerman . = KERNELBASE; 36cabb5587SStephen Rothwell 37e8222502SBenjamin Herrenschmidt/* 38e8222502SBenjamin Herrenschmidt * Text, read only data and other permanent read-only sections 39e8222502SBenjamin Herrenschmidt */ 40e8222502SBenjamin Herrenschmidt 4157f26649SNicholas Piggin _text = .; 4257f26649SNicholas Piggin _stext = .; 4357f26649SNicholas Piggin 4457f26649SNicholas Piggin /* 4557f26649SNicholas Piggin * Head text. 4657f26649SNicholas Piggin * This needs to be in its own output section to avoid ld placing 4757f26649SNicholas Piggin * branch trampoline stubs randomly throughout the fixed sections, 4857f26649SNicholas Piggin * which it will do (even if the branch comes from another section) 4957f26649SNicholas Piggin * in order to optimize stub generation. 5057f26649SNicholas Piggin */ 5157f26649SNicholas Piggin .head.text : AT(ADDR(.head.text) - LOAD_OFFSET) { 5257f26649SNicholas Piggin#ifdef CONFIG_PPC64 5357f26649SNicholas Piggin KEEP(*(.head.text.first_256B)); 5457f26649SNicholas Piggin#ifdef CONFIG_PPC_BOOK3E 5557f26649SNicholas Piggin#else 5657f26649SNicholas Piggin KEEP(*(.head.text.real_vectors)); 5757f26649SNicholas Piggin *(.head.text.real_trampolines); 5857f26649SNicholas Piggin KEEP(*(.head.text.virt_vectors)); 5957f26649SNicholas Piggin *(.head.text.virt_trampolines); 6057f26649SNicholas Piggin# if defined(CONFIG_PPC_PSERIES) || defined(CONFIG_PPC_POWERNV) 6157f26649SNicholas Piggin KEEP(*(.head.data.fwnmi_page)); 6257f26649SNicholas Piggin# endif 6357f26649SNicholas Piggin#endif 6457f26649SNicholas Piggin#else /* !CONFIG_PPC64 */ 6557f26649SNicholas Piggin HEAD_TEXT 6657f26649SNicholas Piggin#endif 67af0f3e9eSKees Cook } :text 6857f26649SNicholas Piggin 697aa5b018SNaveen N. Rao __head_end = .; 707aa5b018SNaveen N. Rao 71dadc4a1bSNicholas Piggin#ifdef CONFIG_PPC64 72dadc4a1bSNicholas Piggin /* 73a652758aSJoel Stanley * ALIGN(0) overrides the default output section alignment because 74dadc4a1bSNicholas Piggin * this needs to start right after .head.text in order for fixed 75dadc4a1bSNicholas Piggin * section placement to work. 76dadc4a1bSNicholas Piggin */ 77a652758aSJoel Stanley .text ALIGN(0) : AT(ADDR(.text) - LOAD_OFFSET) { 78951eedebSNicholas Piggin#ifdef CONFIG_LD_HEAD_STUB_CATCH 794c1d9bb0SNicholas Piggin KEEP(*(.linker_stub_catch)); 80951eedebSNicholas Piggin . = . ; 81951eedebSNicholas Piggin#endif 82951eedebSNicholas Piggin 83dadc4a1bSNicholas Piggin#else 84366234f6SKumar Gala .text : AT(ADDR(.text) - LOAD_OFFSET) { 85748a7683SKumar Gala ALIGN_FUNCTION(); 86dadc4a1bSNicholas Piggin#endif 8713beadd9STim Abbott /* careful! __ftr_alt_* sections need to be close to .text */ 883ce47d95SNathan Chancellor *(.text.hot .text.hot.* TEXT_MAIN .text.fixup .text.unlikely .text.unlikely.* .fixup __ftr_alt_* .ref.text); 8967361cf8SNaveen N. Rao#ifdef CONFIG_PPC64 9067361cf8SNaveen N. Rao *(.tramp.ftrace.text); 9167361cf8SNaveen N. Rao#endif 9265538966SThomas Gleixner NOINSTR_TEXT 9314cf11afSPaul Mackerras SCHED_TEXT 946727ad9eSChris Metcalf CPUIDLE_TEXT 9514cf11afSPaul Mackerras LOCK_TEXT 96cabb5587SStephen Rothwell KPROBES_TEXT 976794c782SSteven Rostedt IRQENTRY_TEXT 98be7635e7SAlexander Potapenko SOFTIRQENTRY_TEXT 99e8c68825SNicholas Piggin /* 100e8c68825SNicholas Piggin * -Os builds call FP save/restore functions. The powerpc64 101e8c68825SNicholas Piggin * linker generates those on demand in the .sfpr section. 102e8c68825SNicholas Piggin * .sfpr gets placed at the beginning of a group of input 103e8c68825SNicholas Piggin * sections, which can break start-of-text offset if it is 104e8c68825SNicholas Piggin * included with the main text sections, so put it by itself. 105e8c68825SNicholas Piggin */ 106e8c68825SNicholas Piggin *(.sfpr); 1077de3b27bSMichael Ellerman MEM_KEEP(init.text) 1087de3b27bSMichael Ellerman MEM_KEEP(exit.text) 109e8222502SBenjamin Herrenschmidt 110cabb5587SStephen Rothwell#ifdef CONFIG_PPC32 11114cf11afSPaul Mackerras *(.got1) 11214cf11afSPaul Mackerras __got2_start = .; 11314cf11afSPaul Mackerras *(.got2) 11414cf11afSPaul Mackerras __got2_end = .; 115e8222502SBenjamin Herrenschmidt#endif /* CONFIG_PPC32 */ 116e8222502SBenjamin Herrenschmidt 117af0f3e9eSKees Cook } :text 118303996daSStephen Rothwell 119a0591b60SChristophe Leroy . = ALIGN(PAGE_SIZE); 120cabb5587SStephen Rothwell _etext = .; 121e8222502SBenjamin Herrenschmidt PROVIDE32 (etext = .); 12214cf11afSPaul Mackerras 123e8222502SBenjamin Herrenschmidt /* Read-only data */ 124d924cc3fSBalbir Singh RO_DATA(PAGE_SIZE) 12514cf11afSPaul Mackerras 126aa8a5e00SMichael Ellerman#ifdef CONFIG_PPC64 127aa8a5e00SMichael Ellerman . = ALIGN(8); 128a048a07dSNicholas Piggin __stf_entry_barrier_fixup : AT(ADDR(__stf_entry_barrier_fixup) - LOAD_OFFSET) { 129a048a07dSNicholas Piggin __start___stf_entry_barrier_fixup = .; 130a048a07dSNicholas Piggin *(__stf_entry_barrier_fixup) 131a048a07dSNicholas Piggin __stop___stf_entry_barrier_fixup = .; 132a048a07dSNicholas Piggin } 133a048a07dSNicholas Piggin 134a048a07dSNicholas Piggin . = ALIGN(8); 1359a32a7e7SNicholas Piggin __uaccess_flush_fixup : AT(ADDR(__uaccess_flush_fixup) - LOAD_OFFSET) { 1369a32a7e7SNicholas Piggin __start___uaccess_flush_fixup = .; 1379a32a7e7SNicholas Piggin *(__uaccess_flush_fixup) 1389a32a7e7SNicholas Piggin __stop___uaccess_flush_fixup = .; 1399a32a7e7SNicholas Piggin } 1409a32a7e7SNicholas Piggin 1419a32a7e7SNicholas Piggin . = ALIGN(8); 142f7964378SNicholas Piggin __entry_flush_fixup : AT(ADDR(__entry_flush_fixup) - LOAD_OFFSET) { 143f7964378SNicholas Piggin __start___entry_flush_fixup = .; 144f7964378SNicholas Piggin *(__entry_flush_fixup) 145f7964378SNicholas Piggin __stop___entry_flush_fixup = .; 146f7964378SNicholas Piggin } 147f7964378SNicholas Piggin 148f7964378SNicholas Piggin . = ALIGN(8); 149a048a07dSNicholas Piggin __stf_exit_barrier_fixup : AT(ADDR(__stf_exit_barrier_fixup) - LOAD_OFFSET) { 150a048a07dSNicholas Piggin __start___stf_exit_barrier_fixup = .; 151a048a07dSNicholas Piggin *(__stf_exit_barrier_fixup) 152a048a07dSNicholas Piggin __stop___stf_exit_barrier_fixup = .; 153a048a07dSNicholas Piggin } 154a048a07dSNicholas Piggin 155a048a07dSNicholas Piggin . = ALIGN(8); 156aa8a5e00SMichael Ellerman __rfi_flush_fixup : AT(ADDR(__rfi_flush_fixup) - LOAD_OFFSET) { 157aa8a5e00SMichael Ellerman __start___rfi_flush_fixup = .; 158aa8a5e00SMichael Ellerman *(__rfi_flush_fixup) 159aa8a5e00SMichael Ellerman __stop___rfi_flush_fixup = .; 160aa8a5e00SMichael Ellerman } 161179ab1cbSMichael Ellerman#endif /* CONFIG_PPC64 */ 1622eea7f06SMichal Suchanek 163179ab1cbSMichael Ellerman#ifdef CONFIG_PPC_BARRIER_NOSPEC 1642eea7f06SMichal Suchanek . = ALIGN(8); 1652eea7f06SMichal Suchanek __spec_barrier_fixup : AT(ADDR(__spec_barrier_fixup) - LOAD_OFFSET) { 1662eea7f06SMichal Suchanek __start___barrier_nospec_fixup = .; 1672eea7f06SMichal Suchanek *(__barrier_nospec_fixup) 1682eea7f06SMichal Suchanek __stop___barrier_nospec_fixup = .; 1692eea7f06SMichal Suchanek } 170179ab1cbSMichael Ellerman#endif /* CONFIG_PPC_BARRIER_NOSPEC */ 171aa8a5e00SMichael Ellerman 17276a5eaa3SDiana Craciun#ifdef CONFIG_PPC_FSL_BOOK3E 17376a5eaa3SDiana Craciun . = ALIGN(8); 17476a5eaa3SDiana Craciun __spec_btb_flush_fixup : AT(ADDR(__spec_btb_flush_fixup) - LOAD_OFFSET) { 17576a5eaa3SDiana Craciun __start__btb_flush_fixup = .; 17676a5eaa3SDiana Craciun *(__btb_flush_fixup) 17776a5eaa3SDiana Craciun __stop__btb_flush_fixup = .; 17876a5eaa3SDiana Craciun } 17976a5eaa3SDiana Craciun#endif 18014cf11afSPaul Mackerras 181e8222502SBenjamin Herrenschmidt/* 182e8222502SBenjamin Herrenschmidt * Init sections discarded at runtime 183e8222502SBenjamin Herrenschmidt */ 184d924cc3fSBalbir Singh . = ALIGN(STRICT_ALIGN_SIZE); 18514cf11afSPaul Mackerras __init_begin = .; 18667361cf8SNaveen N. Rao . = ALIGN(PAGE_SIZE); 18767361cf8SNaveen N. Rao .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { 18867361cf8SNaveen N. Rao _sinittext = .; 18967361cf8SNaveen N. Rao INIT_TEXT 19067361cf8SNaveen N. Rao _einittext = .; 19167361cf8SNaveen N. Rao#ifdef CONFIG_PPC64 19267361cf8SNaveen N. Rao *(.tramp.ftrace.init); 19367361cf8SNaveen N. Rao#endif 194af0f3e9eSKees Cook } :text 195e8222502SBenjamin Herrenschmidt 19614cf11afSPaul Mackerras /* .exit.text is discarded at runtime, not link time, 197e8222502SBenjamin Herrenschmidt * to deal with references from __bug_table 198e8222502SBenjamin Herrenschmidt */ 199366234f6SKumar Gala .exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { 20001ba2bdcSSam Ravnborg EXIT_TEXT 20101ba2bdcSSam Ravnborg } 202e8222502SBenjamin Herrenschmidt 203fdcfeabaSYouling Tang INIT_DATA_SECTION(16) 20414cf11afSPaul Mackerras 205e8222502SBenjamin Herrenschmidt . = ALIGN(8); 206366234f6SKumar Gala __ftr_fixup : AT(ADDR(__ftr_fixup) - LOAD_OFFSET) { 20714cf11afSPaul Mackerras __start___ftr_fixup = .; 2084c1d9bb0SNicholas Piggin KEEP(*(__ftr_fixup)) 20914cf11afSPaul Mackerras __stop___ftr_fixup = .; 210e8222502SBenjamin Herrenschmidt } 2112d1b2027SKumar Gala . = ALIGN(8); 2127c03d653SBenjamin Herrenschmidt __mmu_ftr_fixup : AT(ADDR(__mmu_ftr_fixup) - LOAD_OFFSET) { 2137c03d653SBenjamin Herrenschmidt __start___mmu_ftr_fixup = .; 2144c1d9bb0SNicholas Piggin KEEP(*(__mmu_ftr_fixup)) 2157c03d653SBenjamin Herrenschmidt __stop___mmu_ftr_fixup = .; 2167c03d653SBenjamin Herrenschmidt } 2177c03d653SBenjamin Herrenschmidt . = ALIGN(8); 2182d1b2027SKumar Gala __lwsync_fixup : AT(ADDR(__lwsync_fixup) - LOAD_OFFSET) { 2192d1b2027SKumar Gala __start___lwsync_fixup = .; 2204c1d9bb0SNicholas Piggin KEEP(*(__lwsync_fixup)) 2212d1b2027SKumar Gala __stop___lwsync_fixup = .; 2222d1b2027SKumar Gala } 2233f639ee8SStephen Rothwell#ifdef CONFIG_PPC64 2243f639ee8SStephen Rothwell . = ALIGN(8); 225366234f6SKumar Gala __fw_ftr_fixup : AT(ADDR(__fw_ftr_fixup) - LOAD_OFFSET) { 2263f639ee8SStephen Rothwell __start___fw_ftr_fixup = .; 2274c1d9bb0SNicholas Piggin KEEP(*(__fw_ftr_fixup)) 2283f639ee8SStephen Rothwell __stop___fw_ftr_fixup = .; 2293f639ee8SStephen Rothwell } 2303f639ee8SStephen Rothwell#endif 23162bef288STim Abbott 2320415b00dSTejun Heo PERCPU_SECTION(L1_CACHE_BYTES) 23314cf11afSPaul Mackerras 234e8222502SBenjamin Herrenschmidt . = ALIGN(8); 235366234f6SKumar Gala .machine.desc : AT(ADDR(.machine.desc) - LOAD_OFFSET) { 236e8222502SBenjamin Herrenschmidt __machine_desc_start = . ; 2374c1d9bb0SNicholas Piggin KEEP(*(.machine.desc)) 238e8222502SBenjamin Herrenschmidt __machine_desc_end = . ; 239e8222502SBenjamin Herrenschmidt } 2402a4b9c5aSPaul Mackerras#ifdef CONFIG_RELOCATABLE 241549e8152SPaul Mackerras . = ALIGN(8); 2429c5f7d39SSuzuki Poulose .dynsym : AT(ADDR(.dynsym) - LOAD_OFFSET) 2439c5f7d39SSuzuki Poulose { 24427d11496SKevin Hao#ifdef CONFIG_PPC32 2459c5f7d39SSuzuki Poulose __dynamic_symtab = .; 2469c5f7d39SSuzuki Poulose#endif 2479c5f7d39SSuzuki Poulose *(.dynsym) 2489c5f7d39SSuzuki Poulose } 249549e8152SPaul Mackerras .dynstr : AT(ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) } 250549e8152SPaul Mackerras .dynamic : AT(ADDR(.dynamic) - LOAD_OFFSET) 251549e8152SPaul Mackerras { 252549e8152SPaul Mackerras __dynamic_start = .; 253549e8152SPaul Mackerras *(.dynamic) 254549e8152SPaul Mackerras } 255549e8152SPaul Mackerras .hash : AT(ADDR(.hash) - LOAD_OFFSET) { *(.hash) } 256ead98360SMichael Ellerman .gnu.hash : AT(ADDR(.gnu.hash) - LOAD_OFFSET) { *(.gnu.hash) } 257549e8152SPaul Mackerras .interp : AT(ADDR(.interp) - LOAD_OFFSET) { *(.interp) } 258549e8152SPaul Mackerras .rela.dyn : AT(ADDR(.rela.dyn) - LOAD_OFFSET) 259549e8152SPaul Mackerras { 260549e8152SPaul Mackerras __rela_dyn_start = .; 261549e8152SPaul Mackerras *(.rela*) 262549e8152SPaul Mackerras } 2632a4b9c5aSPaul Mackerras#endif 2644c812318SStephen Rothwell /* .exit.data is discarded at runtime, not link time, 2654c812318SStephen Rothwell * to deal with references from .exit.text 2664c812318SStephen Rothwell */ 2674c812318SStephen Rothwell .exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) { 2684c812318SStephen Rothwell EXIT_DATA 2694c812318SStephen Rothwell } 270e8222502SBenjamin Herrenschmidt 271cabb5587SStephen Rothwell /* freed after init ends here */ 272cabb5587SStephen Rothwell . = ALIGN(PAGE_SIZE); 273e8222502SBenjamin Herrenschmidt __init_end = .; 274e8222502SBenjamin Herrenschmidt 275e8222502SBenjamin Herrenschmidt/* 276e8222502SBenjamin Herrenschmidt * And now the various read/write data 277e8222502SBenjamin Herrenschmidt */ 278e8222502SBenjamin Herrenschmidt 279e8222502SBenjamin Herrenschmidt . = ALIGN(PAGE_SIZE); 2804a288563SPaul Mackerras _sdata = .; 281cabb5587SStephen Rothwell 282e8222502SBenjamin Herrenschmidt#ifdef CONFIG_PPC32 283366234f6SKumar Gala .data : AT(ADDR(.data) - LOAD_OFFSET) { 284ca967258SSam Ravnborg DATA_DATA 285beba24acSMathieu Malaterre#ifdef CONFIG_UBSAN 286beba24acSMathieu Malaterre *(.data..Lubsan_data*) 287beba24acSMathieu Malaterre *(.data..Lubsan_type*) 288beba24acSMathieu Malaterre#endif 289a1072607SNicholas Piggin *(.data.rel*) 2904c1d9bb0SNicholas Piggin *(SDATA_MAIN) 29183a092cfSNicholas Piggin *(.sdata2) 292e8222502SBenjamin Herrenschmidt *(.got.plt) *(.got) 29383a092cfSNicholas Piggin *(.plt) 29498ecc676SJoel Stanley *(.branch_lt) 295cabb5587SStephen Rothwell } 296e8222502SBenjamin Herrenschmidt#else 297366234f6SKumar Gala .data : AT(ADDR(.data) - LOAD_OFFSET) { 2983ae0aa9fSMathieu Desnoyers DATA_DATA 299d0a3ac54SKees Cook#ifdef CONFIG_UBSAN 300d0a3ac54SKees Cook *(.data..Lubsan_data*) 301d0a3ac54SKees Cook *(.data..Lubsan_type*) 302d0a3ac54SKees Cook#endif 3033ae0aa9fSMathieu Desnoyers *(.data.rel*) 3043ae0aa9fSMathieu Desnoyers *(.toc1) 305cabb5587SStephen Rothwell *(.branch_lt) 306cabb5587SStephen Rothwell } 307cabb5587SStephen Rothwell 308366234f6SKumar Gala .opd : AT(ADDR(.opd) - LOAD_OFFSET) { 3095633e85bSSergey Senozhatsky __start_opd = .; 3104c1d9bb0SNicholas Piggin KEEP(*(.opd)) 3115633e85bSSergey Senozhatsky __end_opd = .; 312cabb5587SStephen Rothwell } 313cabb5587SStephen Rothwell 3145e95235cSAnton Blanchard . = ALIGN(256); 315366234f6SKumar Gala .got : AT(ADDR(.got) - LOAD_OFFSET) { 316cabb5587SStephen Rothwell __toc_start = .; 3175ac47f7aSAnton Blanchard#ifndef CONFIG_RELOCATABLE 3185ac47f7aSAnton Blanchard __prom_init_toc_start = .; 3195ac47f7aSAnton Blanchard arch/powerpc/kernel/prom_init.o*(.toc .got) 3205ac47f7aSAnton Blanchard __prom_init_toc_end = .; 3215ac47f7aSAnton Blanchard#endif 322cabb5587SStephen Rothwell *(.got) 323cabb5587SStephen Rothwell *(.toc) 324e8222502SBenjamin Herrenschmidt } 325e8222502SBenjamin Herrenschmidt#endif 326e8222502SBenjamin Herrenschmidt 327e8222502SBenjamin Herrenschmidt /* The initial task and kernel stack */ 32863289e7dSChristophe Leroy INIT_TASK_DATA_SECTION(THREAD_ALIGN) 329cabb5587SStephen Rothwell 33075b13483STim Abbott .data..page_aligned : AT(ADDR(.data..page_aligned) - LOAD_OFFSET) { 33162bef288STim Abbott PAGE_ALIGNED_DATA(PAGE_SIZE) 332cabb5587SStephen Rothwell } 33314cf11afSPaul Mackerras 3344af57b78STim Abbott .data..cacheline_aligned : AT(ADDR(.data..cacheline_aligned) - LOAD_OFFSET) { 33562bef288STim Abbott CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) 336e8222502SBenjamin Herrenschmidt } 33714cf11afSPaul Mackerras 33854cb27a7SDenys Vlasenko .data..read_mostly : AT(ADDR(.data..read_mostly) - LOAD_OFFSET) { 33962bef288STim Abbott READ_MOSTLY_DATA(L1_CACHE_BYTES) 340bd67fcf9STony Breeds } 341bd67fcf9STony Breeds 3425be2a213SSean MacLennan . = ALIGN(PAGE_SIZE); 343366234f6SKumar Gala .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) { 34462bef288STim Abbott NOSAVE_DATA 345e8222502SBenjamin Herrenschmidt } 34614cf11afSPaul Mackerras 347b5effd38SPeter Zijlstra BUG_TABLE 348b5effd38SPeter Zijlstra 349903444e4SMichael Ellerman . = ALIGN(PAGE_SIZE); 350903444e4SMichael Ellerman _edata = .; 351903444e4SMichael Ellerman PROVIDE32 (edata = .); 352903444e4SMichael Ellerman 353e8222502SBenjamin Herrenschmidt/* 354e8222502SBenjamin Herrenschmidt * And finally the bss 355e8222502SBenjamin Herrenschmidt */ 3564a288563SPaul Mackerras 35762bef288STim Abbott BSS_SECTION(0, 0, 0) 358cabb5587SStephen Rothwell 359cabb5587SStephen Rothwell . = ALIGN(PAGE_SIZE); 360cabb5587SStephen Rothwell _end = . ; 361e8222502SBenjamin Herrenschmidt PROVIDE32 (end = .); 362023bf6f1STejun Heo 36383a092cfSNicholas Piggin STABS_DEBUG 36483a092cfSNicholas Piggin DWARF_DEBUG 365c604abc3SKees Cook ELF_DETAILS 36683a092cfSNicholas Piggin 367023bf6f1STejun Heo DISCARDS 36883a092cfSNicholas Piggin /DISCARD/ : { 36983a092cfSNicholas Piggin *(*.EMB.apuinfo) 37083a092cfSNicholas Piggin *(.glink .iplt .plt .rela* .comment) 37183a092cfSNicholas Piggin *(.gnu.version*) 37283a092cfSNicholas Piggin *(.gnu.attributes) 37383a092cfSNicholas Piggin *(.eh_frame) 37483a092cfSNicholas Piggin } 37514cf11afSPaul Mackerras} 376