powerpc: Reduce the 32/64-bit diffs in vmlinux.lds.S

Also adds the definition of the _sdata symbol to the ppc64 vmlinux.lds.S.

Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
Paul Mackerras 2005-10-10 22:38:46 +10:00
parent 8641778049
commit 4a2885630b
2 changed files with 10 additions and 65 deletions

View File

@ -1,6 +1,8 @@
#include <linux/config.h> #include <linux/config.h>
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
#include <asm/page.h> #include <asm/page.h>
#else
#define PAGE_SIZE 4096
#endif #endif
#include <asm-generic/vmlinux.lds.h> #include <asm-generic/vmlinux.lds.h>
@ -16,9 +18,7 @@ SECTIONS
/* Sections to be discarded. */ /* Sections to be discarded. */
/DISCARD/ : { /DISCARD/ : {
*(.exitcall.exit) *(.exitcall.exit)
#ifdef CONFIG_PPC32
*(.exit.data) *(.exit.data)
#endif
} }
@ -49,16 +49,10 @@ SECTIONS
.plt : { *(.plt) } .plt : { *(.plt) }
#endif #endif
.text : { .text : {
#ifdef CONFIG_PPC64
*(.text .text.*) *(.text .text.*)
#else
*(.text)
#endif
SCHED_TEXT SCHED_TEXT
LOCK_TEXT LOCK_TEXT
#ifdef CONFIG_PPC64
KPROBES_TEXT KPROBES_TEXT
#endif
*(.fixup) *(.fixup)
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
*(.got1) *(.got1)
@ -106,7 +100,7 @@ SECTIONS
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
/* Read-write section, merged into data segment: */ /* Read-write section, merged into data segment: */
. = ALIGN(4096); . = ALIGN(PAGE_SIZE);
_sdata = .; _sdata = .;
.data : .data :
{ {
@ -119,10 +113,10 @@ SECTIONS
CONSTRUCTORS CONSTRUCTORS
} }
. = ALIGN(4096); . = ALIGN(PAGE_SIZE);
__nosave_begin = .; __nosave_begin = .;
.data_nosave : { *(.data.nosave) } .data_nosave : { *(.data.nosave) }
. = ALIGN(4096); . = ALIGN(PAGE_SIZE);
__nosave_end = .; __nosave_end = .;
. = ALIGN(32); . = ALIGN(32);
@ -133,12 +127,10 @@ SECTIONS
. = ALIGN(8192); . = ALIGN(8192);
.data.init_task : { *(.data.init_task) } .data.init_task : { *(.data.init_task) }
#endif
. = ALIGN(4096);
#else
/* will be freed after init */ /* will be freed after init */
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
#endif
__init_begin = .; __init_begin = .;
.init.text : { .init.text : {
_sinittext = .; _sinittext = .;
@ -151,9 +143,6 @@ SECTIONS
.exit.text : { *(.exit.text) } .exit.text : { *(.exit.text) }
#endif #endif
.init.data : { .init.data : {
#ifdef CONFIG_PPC64
*(.init.data)
#else
*(.init.data); *(.init.data);
__vtop_table_begin = .; __vtop_table_begin = .;
*(.vtop_fixup); *(.vtop_fixup);
@ -161,31 +150,17 @@ SECTIONS
__ptov_table_begin = .; __ptov_table_begin = .;
*(.ptov_fixup); *(.ptov_fixup);
__ptov_table_end = .; __ptov_table_end = .;
#endif
} }
. = ALIGN(16); . = ALIGN(16);
#ifdef CONFIG_PPC32
__setup_start = .;
#endif
.init.setup : { .init.setup : {
#ifdef CONFIG_PPC64
__setup_start = .; __setup_start = .;
#endif
*(.init.setup) *(.init.setup)
#ifdef CONFIG_PPC64
__setup_end = .; __setup_end = .;
#endif
} }
#ifdef CONFIG_PPC32
__setup_end = .;
__initcall_start = .;
#endif
.initcall.init : { .initcall.init : {
#ifdef CONFIG_PPC64
__initcall_start = .; __initcall_start = .;
#endif
*(.initcall1.init) *(.initcall1.init)
*(.initcall2.init) *(.initcall2.init)
*(.initcall3.init) *(.initcall3.init)
@ -193,27 +168,14 @@ SECTIONS
*(.initcall5.init) *(.initcall5.init)
*(.initcall6.init) *(.initcall6.init)
*(.initcall7.init) *(.initcall7.init)
#ifdef CONFIG_PPC64
__initcall_end = .; __initcall_end = .;
#endif
} }
#ifdef CONFIG_PPC32
__initcall_end = .;
__con_initcall_start = .;
#endif
.con_initcall.init : { .con_initcall.init : {
#ifdef CONFIG_PPC64
__con_initcall_start = .; __con_initcall_start = .;
#endif
*(.con_initcall.init) *(.con_initcall.init)
#ifdef CONFIG_PPC64
__con_initcall_end = .; __con_initcall_end = .;
#endif
} }
#ifdef CONFIG_PPC32
__con_initcall_end = .;
#endif
SECURITY_INIT SECURITY_INIT
@ -232,31 +194,23 @@ SECTIONS
#ifdef CONFIG_PPC32 #ifdef CONFIG_PPC32
. = ALIGN(32); . = ALIGN(32);
__per_cpu_start = .;
#endif #endif
.data.percpu : { .data.percpu : {
#ifdef CONFIG_PPC64
__per_cpu_start = .; __per_cpu_start = .;
#endif
*(.data.percpu) *(.data.percpu)
#ifdef CONFIG_PPC64
__per_cpu_end = .; __per_cpu_end = .;
#endif
} }
#ifdef CONFIG_PPC32
__per_cpu_end = .;
#endif
#ifdef CONFIG_PPC64
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
#ifdef CONFIG_PPC64
. = ALIGN(16384); . = ALIGN(16384);
__init_end = .; __init_end = .;
/* freed after init ends here */ /* freed after init ends here */
/* Read/write sections */ /* Read/write sections */
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
. = ALIGN(16384); . = ALIGN(16384);
_sdata = .;
/* The initial task and kernel stack */ /* The initial task and kernel stack */
.data.init_task : { .data.init_task : {
*(.data.init_task) *(.data.init_task)
@ -288,10 +242,8 @@ SECTIONS
_edata = .; _edata = .;
} }
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
#else #else
. = ALIGN(4096);
__initramfs_start = .; __initramfs_start = .;
.init.ramfs : { .init.ramfs : {
*(.init.ramfs) *(.init.ramfs)
@ -307,23 +259,15 @@ SECTIONS
__bss_start = .; __bss_start = .;
#endif #endif
.bss : { .bss : {
#ifdef CONFIG_PPC64
__bss_start = .; __bss_start = .;
#else
*(.sbss) *(.scommon) *(.sbss) *(.scommon)
*(.dynbss) *(.dynbss)
#endif
*(.bss) *(.bss)
#ifdef CONFIG_PPC32
*(COMMON) *(COMMON)
#else
__bss_stop = .; __bss_stop = .;
#endif
} }
#ifdef CONFIG_PPC32
__bss_stop = .;
#endif
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);

View File

@ -106,6 +106,7 @@ SECTIONS
/* Read/write sections */ /* Read/write sections */
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
. = ALIGN(16384); . = ALIGN(16384);
_sdata = .;
/* The initial task and kernel stack */ /* The initial task and kernel stack */
.data.init_task : { .data.init_task : {
*(.data.init_task) *(.data.init_task)