Signed-off-by: Franck Bui-Huu <fbuihuu@xxxxxxxxx> --- arch/mips/kernel/vmlinux.lds.S | 21 ++++++++++++++++----- 1 files changed, 16 insertions(+), 5 deletions(-) diff --git a/arch/mips/kernel/vmlinux.lds.S b/arch/mips/kernel/vmlinux.lds.S index 5fc2398..8508d3c 100644 --- a/arch/mips/kernel/vmlinux.lds.S +++ b/arch/mips/kernel/vmlinux.lds.S @@ -110,7 +110,7 @@ SECTIONS _edata = .; /* End of data section */ /* will be freed after init */ - . = ALIGN(_PAGE_SIZE); /* Init code and data */ + . = ALIGN(_PAGE_SIZE); /* Init code, data and bss */ __init_begin = .; .init.text : { _sinittext = .; @@ -158,12 +158,23 @@ SECTIONS } #endif PERCPU(_PAGE_SIZE) - . = ALIGN(_PAGE_SIZE); - __init_end = .; - /* freed after init ends here */ + /* + * We keep init/exit bss sections here to have only one + * segment to load. Note that .bss.exit is also discarded + * at runtime for the same reason as above. + */ + .exit.bss : { + *(.bss.exit) + } __bss_start = .; /* BSS */ - .sbss : { + .init.bss : { + *(.bss.init) + } + . = ALIGN(_PAGE_SIZE); + __init_end = .; /* freed after init ends here */ + + .sbss : { *(.sbss) *(.scommon) } -- 1.5.3.5