x86, vmlinux.lds: unify header/footer
Merge everything except PHDRS and SECTIONS into vmlinux.lds.S. [ Impact: cleanup ] Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Tim Abbott <tabbott@MIT.EDU> Cc: Linus Torvalds <torvalds@linux-foundation.org> LKML-Reference: <1240991249-27117-2-git-send-email-sam@ravnborg.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
aee6a166a5
commit
17ce265d6a
@@ -1,5 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* ld script for the x86 kernel
|
||||||
|
*
|
||||||
|
* Historic 32-bit version written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
||||||
|
*
|
||||||
|
* Modernisation and unification done by Sam Ravnborg <sam@ravnborg.org>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Don't define absolute symbols until and unless you know that symbol
|
||||||
|
* value is should remain constant even if kernel image is relocated
|
||||||
|
* at run time. Absolute symbols are not relocated. If symbol value should
|
||||||
|
* change if kernel is relocated, make the symbol section relative and
|
||||||
|
* put it inside the section definition.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef CONFIG_X86_32
|
||||||
|
#define LOAD_OFFSET __PAGE_OFFSET
|
||||||
|
#else
|
||||||
|
#define LOAD_OFFSET __START_KERNEL_map
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <asm-generic/vmlinux.lds.h>
|
||||||
|
#include <asm/asm-offsets.h>
|
||||||
|
#include <asm/thread_info.h>
|
||||||
|
#include <asm/page_types.h>
|
||||||
|
#include <asm/cache.h>
|
||||||
|
#include <asm/boot.h>
|
||||||
|
|
||||||
|
#undef i386 /* in case the preprocessor is a 32bit one */
|
||||||
|
|
||||||
|
OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
|
||||||
|
|
||||||
|
#ifdef CONFIG_X86_32
|
||||||
|
OUTPUT_ARCH(i386)
|
||||||
|
ENTRY(phys_startup_32)
|
||||||
|
jiffies = jiffies_64;
|
||||||
|
#else
|
||||||
|
OUTPUT_ARCH(i386:x86-64)
|
||||||
|
ENTRY(phys_startup_64)
|
||||||
|
jiffies_64 = jiffies;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef CONFIG_X86_32
|
#ifdef CONFIG_X86_32
|
||||||
# include "vmlinux_32.lds.S"
|
# include "vmlinux_32.lds.S"
|
||||||
#else
|
#else
|
||||||
# include "vmlinux_64.lds.S"
|
# include "vmlinux_64.lds.S"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_X86_32
|
||||||
|
ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE),
|
||||||
|
"kernel image bigger than KERNEL_IMAGE_SIZE")
|
||||||
|
#else
|
||||||
|
/*
|
||||||
|
* Per-cpu symbols which need to be offset from __per_cpu_load
|
||||||
|
* for the boot processor.
|
||||||
|
*/
|
||||||
|
#define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load
|
||||||
|
INIT_PER_CPU(gdt_page);
|
||||||
|
INIT_PER_CPU(irq_stack_union);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Build-time check on the image size:
|
||||||
|
*/
|
||||||
|
ASSERT((_end - _text <= KERNEL_IMAGE_SIZE),
|
||||||
|
"kernel image bigger than KERNEL_IMAGE_SIZE")
|
||||||
|
|
||||||
|
#ifdef CONFIG_SMP
|
||||||
|
ASSERT((per_cpu__irq_stack_union == 0),
|
||||||
|
"irq_stack_union is not at start of per-cpu area");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* CONFIG_X86_32 */
|
||||||
|
|
||||||
|
#ifdef CONFIG_KEXEC
|
||||||
|
#include <asm/kexec.h>
|
||||||
|
|
||||||
|
ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE,
|
||||||
|
"kexec control code size is too big")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -1,26 +1,3 @@
|
|||||||
/* ld script to make i386 Linux kernel
|
|
||||||
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
|
|
||||||
*
|
|
||||||
* Don't define absolute symbols until and unless you know that symbol
|
|
||||||
* value is should remain constant even if kernel image is relocated
|
|
||||||
* at run time. Absolute symbols are not relocated. If symbol value should
|
|
||||||
* change if kernel is relocated, make the symbol section relative and
|
|
||||||
* put it inside the section definition.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define LOAD_OFFSET __PAGE_OFFSET
|
|
||||||
|
|
||||||
#include <asm-generic/vmlinux.lds.h>
|
|
||||||
#include <asm/thread_info.h>
|
|
||||||
#include <asm/page_types.h>
|
|
||||||
#include <asm/cache.h>
|
|
||||||
#include <asm/boot.h>
|
|
||||||
|
|
||||||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
|
|
||||||
OUTPUT_ARCH(i386)
|
|
||||||
ENTRY(phys_startup_32)
|
|
||||||
jiffies = jiffies_64;
|
|
||||||
|
|
||||||
PHDRS {
|
PHDRS {
|
||||||
text PT_LOAD FLAGS(5); /* R_E */
|
text PT_LOAD FLAGS(5); /* R_E */
|
||||||
data PT_LOAD FLAGS(7); /* RWE */
|
data PT_LOAD FLAGS(7); /* RWE */
|
||||||
@@ -237,17 +214,3 @@ SECTIONS
|
|||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Build-time check on the image size:
|
|
||||||
*/
|
|
||||||
ASSERT((_end - LOAD_OFFSET <= KERNEL_IMAGE_SIZE),
|
|
||||||
"kernel image bigger than KERNEL_IMAGE_SIZE")
|
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC
|
|
||||||
/* Link time checks */
|
|
||||||
#include <asm/kexec.h>
|
|
||||||
|
|
||||||
ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE,
|
|
||||||
"kexec control code size is too big")
|
|
||||||
#endif
|
|
||||||
|
@@ -1,19 +1,3 @@
|
|||||||
/* ld script to make x86-64 Linux kernel
|
|
||||||
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define LOAD_OFFSET __START_KERNEL_map
|
|
||||||
|
|
||||||
#include <asm-generic/vmlinux.lds.h>
|
|
||||||
#include <asm/asm-offsets.h>
|
|
||||||
#include <asm/page_types.h>
|
|
||||||
|
|
||||||
#undef i386 /* in case the preprocessor is a 32bit one */
|
|
||||||
|
|
||||||
OUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
|
|
||||||
OUTPUT_ARCH(i386:x86-64)
|
|
||||||
ENTRY(phys_startup_64)
|
|
||||||
jiffies_64 = jiffies;
|
|
||||||
PHDRS {
|
PHDRS {
|
||||||
text PT_LOAD FLAGS(5); /* R_E */
|
text PT_LOAD FLAGS(5); /* R_E */
|
||||||
data PT_LOAD FLAGS(7); /* RWE */
|
data PT_LOAD FLAGS(7); /* RWE */
|
||||||
@@ -308,29 +292,3 @@ SECTIONS
|
|||||||
STABS_DEBUG
|
STABS_DEBUG
|
||||||
DWARF_DEBUG
|
DWARF_DEBUG
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Per-cpu symbols which need to be offset from __per_cpu_load
|
|
||||||
* for the boot processor.
|
|
||||||
*/
|
|
||||||
#define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load
|
|
||||||
INIT_PER_CPU(gdt_page);
|
|
||||||
INIT_PER_CPU(irq_stack_union);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Build-time check on the image size:
|
|
||||||
*/
|
|
||||||
ASSERT((_end - _text <= KERNEL_IMAGE_SIZE),
|
|
||||||
"kernel image bigger than KERNEL_IMAGE_SIZE")
|
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
|
||||||
ASSERT((per_cpu__irq_stack_union == 0),
|
|
||||||
"irq_stack_union is not at start of per-cpu area");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC
|
|
||||||
#include <asm/kexec.h>
|
|
||||||
|
|
||||||
ASSERT(kexec_control_code_size <= KEXEC_CONTROL_CODE_MAX_SIZE,
|
|
||||||
"kexec control code size is too big")
|
|
||||||
#endif
|
|
||||||
|
Reference in New Issue
Block a user