提交 0a3ec21f 编写于 作者: S Sam Ravnborg 提交者: Ingo Molnar

x86: beautify vmlinux_64.lds.S

Beautify vmlinux_64.lds.S:

 - Use tabs for indent
 - Located curly braces like in C code
 - Rearranged a few comments

There is no functional changes in this patch

The beautification is done to prepare a unification
of the _32 and the _64 variants of the linker scripts.

[ Impact: cleanup ]
Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
Cc: Tim Abbott <tabbott@MIT.EDU>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
LKML-Reference: <20090426210742.GA3464@uranus.ravnborg.org>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 d1f0ae5e
...@@ -15,69 +15,79 @@ OUTPUT_ARCH(i386:x86-64) ...@@ -15,69 +15,79 @@ OUTPUT_ARCH(i386:x86-64)
ENTRY(phys_startup_64) ENTRY(phys_startup_64)
jiffies_64 = jiffies; 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 */
user PT_LOAD FLAGS(7); /* RWE */ user PT_LOAD FLAGS(7); /* RWE */
data.init PT_LOAD FLAGS(7); /* RWE */ data.init PT_LOAD FLAGS(7); /* RWE */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
percpu PT_LOAD FLAGS(7); /* RWE */ percpu PT_LOAD FLAGS(7); /* RWE */
#endif #endif
data.init2 PT_LOAD FLAGS(7); /* RWE */ data.init2 PT_LOAD FLAGS(7); /* RWE */
note PT_NOTE FLAGS(0); /* ___ */ note PT_NOTE FLAGS(0); /* ___ */
} }
SECTIONS SECTIONS
{ {
. = __START_KERNEL; . = __START_KERNEL;
phys_startup_64 = startup_64 - LOAD_OFFSET; phys_startup_64 = startup_64 - LOAD_OFFSET;
.text : AT(ADDR(.text) - LOAD_OFFSET) {
_text = .; /* Text and read-only data */ /* Text and read-only data */
/* First the code that has to be first for bootstrapping */ .text : AT(ADDR(.text) - LOAD_OFFSET) {
*(.text.head) _text = .;
_stext = .; /* First the code that has to be first for bootstrapping */
/* Then the rest */ *(.text.head)
TEXT_TEXT _stext = .;
SCHED_TEXT /* Then the rest */
LOCK_TEXT TEXT_TEXT
KPROBES_TEXT SCHED_TEXT
IRQENTRY_TEXT LOCK_TEXT
*(.fixup) KPROBES_TEXT
*(.gnu.warning) IRQENTRY_TEXT
_etext = .; /* End of text section */ *(.fixup)
} :text = 0x9090 *(.gnu.warning)
/* End of text section */
NOTES :text :note _etext = .;
} :text = 0x9090
. = ALIGN(16); /* Exception table */
__ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) { NOTES :text :note
__start___ex_table = .;
*(__ex_table) /* Exception table */
__stop___ex_table = .; . = ALIGN(16);
} :text = 0x9090 __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
__start___ex_table = .;
RODATA *(__ex_table)
__stop___ex_table = .;
. = ALIGN(PAGE_SIZE); /* Align data segment to page size boundary */ } :text = 0x9090
/* Data */
.data : AT(ADDR(.data) - LOAD_OFFSET) {
DATA_DATA
CONSTRUCTORS
_edata = .; /* End of data section */
} :data
RODATA
.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) { /* Align data segment to page size boundary */
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES); /* Data */
*(.data.cacheline_aligned) .data : AT(ADDR(.data) - LOAD_OFFSET) {
} DATA_DATA
. = ALIGN(CONFIG_X86_INTERNODE_CACHE_BYTES); CONSTRUCTORS
.data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) { /* End of data section */
*(.data.read_mostly) _edata = .;
} } :data
.data.cacheline_aligned :
AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE);
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
*(.data.cacheline_aligned)
}
. = ALIGN(CONFIG_X86_INTERNODE_CACHE_BYTES);
.data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET) {
*(.data.read_mostly)
}
#define VSYSCALL_ADDR (-10*1024*1024) #define VSYSCALL_ADDR (-10*1024*1024)
#define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095)) #define VSYSCALL_PHYS_ADDR ((LOADADDR(.data.read_mostly) + \
#define VSYSCALL_VIRT_ADDR ((ADDR(.data.read_mostly) + SIZEOF(.data.read_mostly) + 4095) & ~(4095)) SIZEOF(.data.read_mostly) + 4095) & ~(4095))
#define VSYSCALL_VIRT_ADDR ((ADDR(.data.read_mostly) + \
SIZEOF(.data.read_mostly) + 4095) & ~(4095))
#define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR) #define VLOAD_OFFSET (VSYSCALL_ADDR - VSYSCALL_PHYS_ADDR)
#define VLOAD(x) (ADDR(x) - VLOAD_OFFSET) #define VLOAD(x) (ADDR(x) - VLOAD_OFFSET)
...@@ -85,37 +95,53 @@ SECTIONS ...@@ -85,37 +95,53 @@ SECTIONS
#define VVIRT_OFFSET (VSYSCALL_ADDR - VSYSCALL_VIRT_ADDR) #define VVIRT_OFFSET (VSYSCALL_ADDR - VSYSCALL_VIRT_ADDR)
#define VVIRT(x) (ADDR(x) - VVIRT_OFFSET) #define VVIRT(x) (ADDR(x) - VVIRT_OFFSET)
. = VSYSCALL_ADDR; . = VSYSCALL_ADDR;
.vsyscall_0 : AT(VSYSCALL_PHYS_ADDR) { *(.vsyscall_0) } :user .vsyscall_0 : AT(VSYSCALL_PHYS_ADDR) {
__vsyscall_0 = VSYSCALL_VIRT_ADDR; *(.vsyscall_0)
} :user
__vsyscall_0 = VSYSCALL_VIRT_ADDR;
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
.vsyscall_fn : AT(VLOAD(.vsyscall_fn)) {
*(.vsyscall_fn)
}
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
.vsyscall_gtod_data : AT(VLOAD(.vsyscall_gtod_data)) {
*(.vsyscall_gtod_data)
}
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES); vsyscall_gtod_data = VVIRT(.vsyscall_gtod_data);
.vsyscall_fn : AT(VLOAD(.vsyscall_fn)) { *(.vsyscall_fn) } .vsyscall_clock : AT(VLOAD(.vsyscall_clock)) {
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES); *(.vsyscall_clock)
.vsyscall_gtod_data : AT(VLOAD(.vsyscall_gtod_data)) }
{ *(.vsyscall_gtod_data) } vsyscall_clock = VVIRT(.vsyscall_clock);
vsyscall_gtod_data = VVIRT(.vsyscall_gtod_data);
.vsyscall_clock : AT(VLOAD(.vsyscall_clock))
{ *(.vsyscall_clock) }
vsyscall_clock = VVIRT(.vsyscall_clock);
.vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1)) .vsyscall_1 ADDR(.vsyscall_0) + 1024: AT(VLOAD(.vsyscall_1)) {
{ *(.vsyscall_1) } *(.vsyscall_1)
.vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2)) }
{ *(.vsyscall_2) } .vsyscall_2 ADDR(.vsyscall_0) + 2048: AT(VLOAD(.vsyscall_2)) {
*(.vsyscall_2)
}
.vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) { *(.vgetcpu_mode) } .vgetcpu_mode : AT(VLOAD(.vgetcpu_mode)) {
vgetcpu_mode = VVIRT(.vgetcpu_mode); *(.vgetcpu_mode)
}
vgetcpu_mode = VVIRT(.vgetcpu_mode);
. = ALIGN(CONFIG_X86_L1_CACHE_BYTES); . = ALIGN(CONFIG_X86_L1_CACHE_BYTES);
.jiffies : AT(VLOAD(.jiffies)) { *(.jiffies) } .jiffies : AT(VLOAD(.jiffies)) {
jiffies = VVIRT(.jiffies); *(.jiffies)
}
jiffies = VVIRT(.jiffies);
.vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) .vsyscall_3 ADDR(.vsyscall_0) + 3072: AT(VLOAD(.vsyscall_3)) {
{ *(.vsyscall_3) } *(.vsyscall_3)
}
. = VSYSCALL_VIRT_ADDR + PAGE_SIZE; . = VSYSCALL_VIRT_ADDR + PAGE_SIZE;
#undef VSYSCALL_ADDR #undef VSYSCALL_ADDR
#undef VSYSCALL_PHYS_ADDR #undef VSYSCALL_PHYS_ADDR
...@@ -125,156 +151,168 @@ SECTIONS ...@@ -125,156 +151,168 @@ SECTIONS
#undef VVIRT_OFFSET #undef VVIRT_OFFSET
#undef VVIRT #undef VVIRT
.data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) { /* init_task */
. = ALIGN(THREAD_SIZE); /* init_task */ .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
*(.data.init_task) . = ALIGN(THREAD_SIZE);
}:data.init *(.data.init_task)
} :data.init
.data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) { .data.page_aligned : AT(ADDR(.data.page_aligned) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
*(.data.page_aligned) *(.data.page_aligned)
} }
.smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) {
/* might get freed after init */ /* might get freed after init */
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__smp_alt_begin = .; __smp_alt_begin = .;
__smp_locks = .; __smp_locks = .;
*(.smp_locks) *(.smp_locks)
__smp_locks_end = .; __smp_locks_end = .;
. = ALIGN(PAGE_SIZE);
__smp_alt_end = .;
}
/* Init code and data */
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__smp_alt_end = .; __init_begin = .; /* paired with __init_end */
} .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
_sinittext = .;
. = ALIGN(PAGE_SIZE); /* Init code and data */ INIT_TEXT
__init_begin = .; /* paired with __init_end */ _einittext = .;
.init.text : AT(ADDR(.init.text) - LOAD_OFFSET) { }
_sinittext = .;
INIT_TEXT .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
_einittext = .; __initdata_begin = .;
} INIT_DATA
.init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { __initdata_end = .;
__initdata_begin = .; }
INIT_DATA
__initdata_end = .; .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
} . = ALIGN(16);
__setup_start = .;
.init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { *(.init.setup)
. = ALIGN(16); __setup_end = .;
__setup_start = .; }
*(.init.setup)
__setup_end = .; .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
} __initcall_start = .;
.initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) { INITCALLS
__initcall_start = .; __initcall_end = .;
INITCALLS }
__initcall_end = .;
} .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
.con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { __con_initcall_start = .;
__con_initcall_start = .; *(.con_initcall.init)
*(.con_initcall.init) __con_initcall_end = .;
__con_initcall_end = .; }
}
.x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) { .x86_cpu_dev.init : AT(ADDR(.x86_cpu_dev.init) - LOAD_OFFSET) {
__x86_cpu_dev_start = .; __x86_cpu_dev_start = .;
*(.x86_cpu_dev.init) *(.x86_cpu_dev.init)
__x86_cpu_dev_end = .; __x86_cpu_dev_end = .;
} }
SECURITY_INIT
SECURITY_INIT
. = ALIGN(8);
.parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) {
__parainstructions = .;
*(.parainstructions)
__parainstructions_end = .;
}
.altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) {
. = ALIGN(8); . = ALIGN(8);
__alt_instructions = .; .parainstructions : AT(ADDR(.parainstructions) - LOAD_OFFSET) {
*(.altinstructions) __parainstructions = .;
__alt_instructions_end = .; *(.parainstructions)
} __parainstructions_end = .;
.altinstr_replacement : AT(ADDR(.altinstr_replacement) - LOAD_OFFSET) { }
*(.altinstr_replacement)
} .altinstructions : AT(ADDR(.altinstructions) - LOAD_OFFSET) {
/* .exit.text is discard at runtime, not link time, to deal with references . = ALIGN(8);
from .altinstructions and .eh_frame */ __alt_instructions = .;
.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) { *(.altinstructions)
EXIT_TEXT __alt_instructions_end = .;
} }
.exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
EXIT_DATA .altinstr_replacement : AT(ADDR(.altinstr_replacement) - LOAD_OFFSET) {
} *(.altinstr_replacement)
}
/*
* .exit.text is discard at runtime, not link time, to deal with
* references from .altinstructions and .eh_frame
*/
.exit.text : AT(ADDR(.exit.text) - LOAD_OFFSET) {
EXIT_TEXT
}
.exit.data : AT(ADDR(.exit.data) - LOAD_OFFSET) {
EXIT_DATA
}
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
.init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
__initramfs_start = .; __initramfs_start = .;
*(.init.ramfs) *(.init.ramfs)
__initramfs_end = .; __initramfs_end = .;
} }
#endif #endif
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
/* /*
* percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the * percpu offsets are zero-based on SMP. PERCPU_VADDR() changes the
* output PHDR, so the next output section - __data_nosave - should * output PHDR, so the next output section - __data_nosave - should
* start another section data.init2. Also, pda should be at the head of * start another section data.init2. Also, pda should be at the head of
* percpu area. Preallocate it and define the percpu offset symbol * percpu area. Preallocate it and define the percpu offset symbol
* so that it can be accessed as a percpu variable. * so that it can be accessed as a percpu variable.
*/ */
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
PERCPU_VADDR(0, :percpu) PERCPU_VADDR(0, :percpu)
#else #else
PERCPU(PAGE_SIZE) PERCPU(PAGE_SIZE)
#endif #endif
. = ALIGN(PAGE_SIZE);
__init_end = .;
.data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE);
__nosave_begin = .;
*(.data.nosave)
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
} :data.init2 /* use another section data.init2, see PERCPU_VADDR() above */
.bss : AT(ADDR(.bss) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__bss_start = .; /* BSS */ __init_end = .;
*(.bss.page_aligned)
*(.bss) .data_nosave : AT(ADDR(.data_nosave) - LOAD_OFFSET) {
__bss_stop = .; . = ALIGN(PAGE_SIZE);
} __nosave_begin = .;
*(.data.nosave)
. = ALIGN(PAGE_SIZE);
__nosave_end = .;
} :data.init2
/* use another section data.init2, see PERCPU_VADDR() above */
.bss : AT(ADDR(.bss) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE);
__bss_start = .; /* BSS */
*(.bss.page_aligned)
*(.bss)
__bss_stop = .;
}
.brk : AT(ADDR(.brk) - LOAD_OFFSET) { .brk : AT(ADDR(.brk) - LOAD_OFFSET) {
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__brk_base = . ; __brk_base = .;
. += 64 * 1024 ; /* 64k alignment slop space */ . += 64 * 1024; /* 64k alignment slop space */
*(.brk_reservation) /* areas brk users have reserved */ *(.brk_reservation) /* areas brk users have reserved */
__brk_limit = . ; __brk_limit = .;
}
_end = . ;
/* Sections to be discarded */
/DISCARD/ : {
*(.exitcall.exit)
*(.eh_frame)
*(.discard)
} }
STABS_DEBUG _end = . ;
DWARF_DEBUG /* Sections to be discarded */
/DISCARD/ : {
*(.exitcall.exit)
*(.eh_frame)
*(.discard)
}
STABS_DEBUG
DWARF_DEBUG
} }
/* /*
* Per-cpu symbols which need to be offset from __per_cpu_load * Per-cpu symbols which need to be offset from __per_cpu_load
* for the boot processor. * for the boot processor.
*/ */
#define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load #define INIT_PER_CPU(x) init_per_cpu__##x = per_cpu__##x + __per_cpu_load
INIT_PER_CPU(gdt_page); INIT_PER_CPU(gdt_page);
INIT_PER_CPU(irq_stack_union); INIT_PER_CPU(irq_stack_union);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册