forked from luck/tmp_suning_uos_patched
2680314466
.data.page_aligned should not need a separate output section, so as part of this cleanup I moved into the .data output section in the linker scripts in order to eliminate unnecessary references to the section name. Remove the reference to .data.idt, since nothing is put into the .data.idt section on the s390 architecture. It looks like Cyrill Gorcunov posted a patch to remove the .data.idt code on s390 previously: <http://lkml.indiana.edu/hypermail/linux/kernel/0802.2/2536.html> CCing him and the people who acked that patch in case there's a reason it wasn't applied. Signed-off-by: Tim Abbott <tabbott@ksplice.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Acked-by: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
166 lines
2.8 KiB
ArmAsm
166 lines
2.8 KiB
ArmAsm
/* ld script to make s390 Linux kernel
|
|
* Written by Martin Schwidefsky (schwidefsky@de.ibm.com)
|
|
*/
|
|
|
|
#include <asm/thread_info.h>
|
|
#include <asm/page.h>
|
|
#include <asm-generic/vmlinux.lds.h>
|
|
|
|
#ifndef CONFIG_64BIT
|
|
OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390")
|
|
OUTPUT_ARCH(s390)
|
|
ENTRY(_start)
|
|
jiffies = jiffies_64 + 4;
|
|
#else
|
|
OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
|
|
OUTPUT_ARCH(s390:64-bit)
|
|
ENTRY(_start)
|
|
jiffies = jiffies_64;
|
|
#endif
|
|
|
|
PHDRS {
|
|
text PT_LOAD FLAGS(5); /* R_E */
|
|
data PT_LOAD FLAGS(7); /* RWE */
|
|
note PT_NOTE FLAGS(0); /* ___ */
|
|
}
|
|
|
|
SECTIONS
|
|
{
|
|
. = 0x00000000;
|
|
.text : {
|
|
_text = .; /* Text and read-only data */
|
|
HEAD_TEXT
|
|
TEXT_TEXT
|
|
SCHED_TEXT
|
|
LOCK_TEXT
|
|
KPROBES_TEXT
|
|
IRQENTRY_TEXT
|
|
*(.fixup)
|
|
*(.gnu.warning)
|
|
} :text = 0x0700
|
|
|
|
_etext = .; /* End of text section */
|
|
|
|
NOTES :text :note
|
|
|
|
RODATA
|
|
|
|
#ifdef CONFIG_SHARED_KERNEL
|
|
. = ALIGN(0x100000); /* VM shared segments are 1MB aligned */
|
|
#endif
|
|
|
|
. = ALIGN(PAGE_SIZE);
|
|
_eshared = .; /* End of shareable data */
|
|
|
|
. = ALIGN(16); /* Exception table */
|
|
__ex_table : {
|
|
__start___ex_table = .;
|
|
*(__ex_table)
|
|
__stop___ex_table = .;
|
|
} :data
|
|
|
|
.data : { /* Data */
|
|
PAGE_ALIGNED_DATA(PAGE_SIZE)
|
|
DATA_DATA
|
|
CONSTRUCTORS
|
|
}
|
|
|
|
. = ALIGN(PAGE_SIZE);
|
|
.data_nosave : {
|
|
__nosave_begin = .;
|
|
*(.data.nosave)
|
|
}
|
|
. = ALIGN(PAGE_SIZE);
|
|
__nosave_end = .;
|
|
|
|
. = ALIGN(0x100);
|
|
.data.cacheline_aligned : {
|
|
*(.data.cacheline_aligned)
|
|
}
|
|
|
|
. = ALIGN(0x100);
|
|
.data.read_mostly : {
|
|
*(.data.read_mostly)
|
|
}
|
|
_edata = .; /* End of data section */
|
|
|
|
. = ALIGN(THREAD_SIZE); /* init_task */
|
|
.data.init_task : {
|
|
*(.data.init_task)
|
|
}
|
|
|
|
/* will be freed after init */
|
|
. = ALIGN(PAGE_SIZE); /* Init code and data */
|
|
__init_begin = .;
|
|
.init.text : {
|
|
_sinittext = .;
|
|
INIT_TEXT
|
|
_einittext = .;
|
|
}
|
|
/*
|
|
* .exit.text is discarded at runtime, not link time,
|
|
* to deal with references from __bug_table
|
|
*/
|
|
.exit.text : {
|
|
EXIT_TEXT
|
|
}
|
|
|
|
/* early.c uses stsi, which requires page aligned data. */
|
|
. = ALIGN(PAGE_SIZE);
|
|
.init.data : {
|
|
INIT_DATA
|
|
}
|
|
. = ALIGN(0x100);
|
|
.init.setup : {
|
|
__setup_start = .;
|
|
*(.init.setup)
|
|
__setup_end = .;
|
|
}
|
|
.initcall.init : {
|
|
__initcall_start = .;
|
|
INITCALLS
|
|
__initcall_end = .;
|
|
}
|
|
|
|
.con_initcall.init : {
|
|
__con_initcall_start = .;
|
|
*(.con_initcall.init)
|
|
__con_initcall_end = .;
|
|
}
|
|
SECURITY_INIT
|
|
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
. = ALIGN(0x100);
|
|
.init.ramfs : {
|
|
__initramfs_start = .;
|
|
*(.init.ramfs)
|
|
. = ALIGN(2);
|
|
__initramfs_end = .;
|
|
}
|
|
#endif
|
|
|
|
PERCPU(PAGE_SIZE)
|
|
. = ALIGN(PAGE_SIZE);
|
|
__init_end = .; /* freed after init ends here */
|
|
|
|
/* BSS */
|
|
.bss : {
|
|
__bss_start = .;
|
|
*(.bss)
|
|
. = ALIGN(2);
|
|
__bss_stop = .;
|
|
}
|
|
|
|
_end = . ;
|
|
|
|
/* Sections to be discarded */
|
|
/DISCARD/ : {
|
|
EXIT_DATA
|
|
*(.exitcall.exit)
|
|
}
|
|
|
|
/* Debugging sections. */
|
|
STABS_DEBUG
|
|
DWARF_DEBUG
|
|
}
|