提交 b2b5d37d 编写于 作者: S Sam Ravnborg 提交者: Linus Torvalds

alpha: beautify vmlinux.lds

Introduced a consistent style in vmlinux.lds and it now matches the
soon-to-be common style for all arch's vmlinux.lds files.

In addition:
- Replaced hardcoded constant with PAGE_SIZE
- Fix page.h so PAGE_SIZE can be used from assembler and in lds files
- Move a few labels inside brackets so linker alignment will not
  make label point ot a too low address
- Replaced DWARF and STABS sections with definitions from asm-generic
Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 a5f833f3
#include <asm-generic/vmlinux.lds.h> #include <asm-generic/vmlinux.lds.h>
#include <asm/page.h>
OUTPUT_FORMAT("elf64-alpha") OUTPUT_FORMAT("elf64-alpha")
OUTPUT_ARCH(alpha) OUTPUT_ARCH(alpha)
...@@ -24,43 +25,55 @@ SECTIONS ...@@ -24,43 +25,55 @@ SECTIONS
} :kernel } :kernel
_etext = .; /* End of text section */ _etext = .; /* End of text section */
/* Exception table */
. = ALIGN(16); . = ALIGN(16);
__start___ex_table = .; /* Exception table */ __ex_table : {
__ex_table : { *(__ex_table) } __start___ex_table = .;
*(__ex_table)
__stop___ex_table = .; __stop___ex_table = .;
}
NOTES :kernel :note NOTES :kernel :note
.dummy : { *(.dummy) } :kernel .dummy : {
*(.dummy)
} :kernel
RODATA RODATA
/* Will be freed after init */ /* Will be freed after init */
. = ALIGN(8192); /* Init code and data */ . = ALIGN(PAGE_SIZE);
/* Init code and data */
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
*(.init.text) *(.init.text)
_einittext = .; _einittext = .;
} }
.init.data : { *(.init.data) } .init.data : {
*(.init.data)
}
. = ALIGN(16); . = ALIGN(16);
.init.setup : {
__setup_start = .; __setup_start = .;
.init.setup : { *(.init.setup) } *(.init.setup)
__setup_end = .; __setup_end = .;
}
. = ALIGN(8); . = ALIGN(8);
__initcall_start = .;
.initcall.init : { .initcall.init : {
__initcall_start = .;
INITCALLS INITCALLS
}
__initcall_end = .; __initcall_end = .;
}
#ifdef CONFIG_BLK_DEV_INITRD #ifdef CONFIG_BLK_DEV_INITRD
. = ALIGN(8192); . = ALIGN(PAGE_SIZE);
.init.ramfs : {
__initramfs_start = .; __initramfs_start = .;
.init.ramfs : { *(.init.ramfs) } *(.init.ramfs)
__initramfs_end = .; __initramfs_end = .;
}
#endif #endif
. = ALIGN(8); . = ALIGN(8);
...@@ -73,73 +86,68 @@ SECTIONS ...@@ -73,73 +86,68 @@ SECTIONS
. = ALIGN(8); . = ALIGN(8);
SECURITY_INIT SECURITY_INIT
PERCPU(8192) PERCPU(PAGE_SIZE)
. = ALIGN(2*8192); . = ALIGN(2 * PAGE_SIZE);
__init_end = .; __init_end = .;
/* Freed after init ends here */ /* Freed after init ends here */
/* Note 2 page alignment above. */ /* Note 2 page alignment above. */
.data.init_thread : { *(.data.init_thread) } .data.init_thread : {
*(.data.init_thread)
}
. = ALIGN(8192); . = ALIGN(PAGE_SIZE);
.data.page_aligned : { *(.data.page_aligned) } .data.page_aligned : {
*(.data.page_aligned)
}
. = ALIGN(64); . = ALIGN(64);
.data.cacheline_aligned : { *(.data.cacheline_aligned) } .data.cacheline_aligned : {
*(.data.cacheline_aligned)
}
_data = .; _data = .;
.data : { /* Data */ /* Data */
.data : {
DATA_DATA DATA_DATA
CONSTRUCTORS CONSTRUCTORS
} }
.got : { *(.got) } .got : {
.sdata : { *(.sdata) } *(.got)
}
.sdata : {
*(.sdata)
}
_edata = .; /* End of data section */ _edata = .; /* End of data section */
__bss_start = .; __bss_start = .;
.sbss : { *(.sbss) *(.scommon) } .sbss : {
.bss : { *(.bss) *(COMMON) } *(.sbss)
*(.scommon)
}
.bss : {
*(.bss)
*(COMMON)
}
__bss_stop = .; __bss_stop = .;
_end = .; _end = .;
/* Sections to be discarded */ /* Sections to be discarded */
/DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) } /DISCARD/ : {
*(.exit.text)
.mdebug 0 : { *(.mdebug) } *(.exit.data)
.note 0 : { *(.note) } *(.exitcall.exit)
.comment 0 : { *(.comment) } }
/* Stabs debugging sections */ .mdebug 0 : {
.stab 0 : { *(.stab) } *(.mdebug)
.stabstr 0 : { *(.stabstr) } }
.stab.excl 0 : { *(.stab.excl) } .note 0 : {
.stab.exclstr 0 : { *(.stab.exclstr) } *(.note)
.stab.index 0 : { *(.stab.index) } }
.stab.indexstr 0 : { *(.stab.indexstr) }
/* DWARF 1 */ STABS_DEBUG
.debug 0 : { *(.debug) } DWARF_DEBUG
.line 0 : { *(.line) }
/* GNU DWARF 1 extensions */
.debug_srcinfo 0 : { *(.debug_srcinfo) }
.debug_sfnames 0 : { *(.debug_sfnames) }
/* DWARF 1.1 and DWARF 2 */
.debug_aranges 0 : { *(.debug_aranges) }
.debug_pubnames 0 : { *(.debug_pubnames) }
/* DWARF 2 */
.debug_info 0 : { *(.debug_info) }
.debug_abbrev 0 : { *(.debug_abbrev) }
.debug_line 0 : { *(.debug_line) }
.debug_frame 0 : { *(.debug_frame) }
.debug_str 0 : { *(.debug_str) }
.debug_loc 0 : { *(.debug_loc) }
.debug_macinfo 0 : { *(.debug_macinfo) }
/* SGI/MIPS DWARF 2 extensions */
.debug_weaknames 0 : { *(.debug_weaknames) }
.debug_funcnames 0 : { *(.debug_funcnames) }
.debug_typenames 0 : { *(.debug_typenames) }
.debug_varnames 0 : { *(.debug_varnames) }
} }
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
#ifdef __KERNEL__ #ifdef __KERNEL__
#include <linux/const.h>
#include <asm/pal.h> #include <asm/pal.h>
/* PAGE_SHIFT determines the page size */ /* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT 13 #define PAGE_SHIFT 13
#define PAGE_SIZE (1UL << PAGE_SHIFT) #define PAGE_SIZE (_AC(1,UL) << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1)) #define PAGE_MASK (~(PAGE_SIZE-1))
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册