Blackfin arch: vmlinux.lds.S, break up our .init into separate sections

Break up our .init into separate section like all other ports do and
so that we dont mix text and data (causes disassembly headaches as
pointed out by Robin)

Cc: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
This commit is contained in:
Mike Frysinger 2007-08-27 16:08:53 +08:00 committed by Bryan Wu
parent d8350e704e
commit 27d875f2c1

View File

@ -46,11 +46,11 @@ SECTIONS
__text = .; __text = .;
_text = .; _text = .;
__stext = .; __stext = .;
*(.text.*)
TEXT_TEXT TEXT_TEXT
SCHED_TEXT SCHED_TEXT
LOCK_TEXT LOCK_TEXT
*(.text.lock) KPROBES_TEXT
*(.text.*)
*(.fixup) *(.fixup)
. = ALIGN(16); . = ALIGN(16);
@ -62,7 +62,7 @@ SECTIONS
__etext = .; __etext = .;
} }
RODATA RO_DATA(PAGE_SIZE)
.data : .data :
{ {
@ -73,51 +73,63 @@ SECTIONS
__sdata = .; __sdata = .;
. = ALIGN(THREAD_SIZE); . = ALIGN(THREAD_SIZE);
*(.data.init_task) *(.data.init_task)
DATA_DATA
*(.data.*)
CONSTRUCTORS
. = ALIGN(32); . = ALIGN(32);
*(.data.cacheline_aligned) *(.data.cacheline_aligned)
DATA_DATA
*(.data.*)
CONSTRUCTORS
. = ALIGN(THREAD_SIZE); . = ALIGN(THREAD_SIZE);
__edata = .; __edata = .;
} }
___init_begin = .; ___init_begin = .;
.init :
.init.text :
{ {
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__sinittext = .; __sinittext = .;
*(.init.text) *(.init.text)
__einittext = .; __einittext = .;
}
.init.data :
{
. = ALIGN(16);
*(.init.data) *(.init.data)
}
.init.setup :
{
. = ALIGN(16); . = ALIGN(16);
___setup_start = .; ___setup_start = .;
*(.init.setup) *(.init.setup)
___setup_end = .; ___setup_end = .;
___start___param = .; }
*(__param) .initcall.init :
___stop___param = .; {
___initcall_start = .; ___initcall_start = .;
INITCALLS INITCALLS
___initcall_end = .; ___initcall_end = .;
}
.con_initcall.init :
{
___con_initcall_start = .; ___con_initcall_start = .;
*(.con_initcall.init) *(.con_initcall.init)
___con_initcall_end = .; ___con_initcall_end = .;
___security_initcall_start = .; }
*(.security_initcall.init) SECURITY_INIT
___security_initcall_end = .; .init.ramfs :
{
. = ALIGN(4); . = ALIGN(4);
___initramfs_start = .; ___initramfs_start = .;
*(.init.ramfs) *(.init.ramfs)
___initramfs_end = .; ___initramfs_end = .;
. = ALIGN(4);
} }
__l1_lma_start = .; __l1_lma_start = .;
.text_l1 L1_CODE_START : AT(LOADADDR(.init) + SIZEOF(.init)) .text_l1 L1_CODE_START : AT(LOADADDR(.init.ramfs) + SIZEOF(.init.ramfs))
{ {
. = ALIGN(4); . = ALIGN(4);
__stext_l1 = .; __stext_l1 = .;