forked from Minki/linux
b6a8d95c95
This has the consequence of changing the section name use for head code from ".text.head" to ".head.text". Since this commit changes all users in the architecture, this change should be harmless. Signed-off-by: Tim Abbott <tabbott@mit.edu> Cc: David Howells <dhowells@redhat.com> Acked-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
183 lines
3.7 KiB
ArmAsm
183 lines
3.7 KiB
ArmAsm
/* ld script to make FRV Linux kernel
|
|
* Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
|
|
*/
|
|
OUTPUT_FORMAT("elf32-frv", "elf32-frv", "elf32-frv")
|
|
OUTPUT_ARCH(frv)
|
|
ENTRY(_start)
|
|
|
|
#include <asm-generic/vmlinux.lds.h>
|
|
#include <asm/processor.h>
|
|
#include <asm/page.h>
|
|
#include <asm/cache.h>
|
|
#include <asm/thread_info.h>
|
|
|
|
jiffies = jiffies_64 + 4;
|
|
|
|
__page_offset = CONFIG_PAGE_OFFSET; /* start of area covered by struct pages */
|
|
__kernel_image_start = __page_offset; /* address at which kernel image resides */
|
|
|
|
SECTIONS
|
|
{
|
|
. = __kernel_image_start;
|
|
|
|
/* discardable initialisation code and data */
|
|
. = ALIGN(PAGE_SIZE); /* Init code and data */
|
|
__init_begin = .;
|
|
|
|
_sinittext = .;
|
|
.init.text : {
|
|
HEAD_TEXT
|
|
#ifndef CONFIG_DEBUG_INFO
|
|
INIT_TEXT
|
|
EXIT_TEXT
|
|
EXIT_DATA
|
|
*(.exitcall.exit)
|
|
#endif
|
|
}
|
|
_einittext = .;
|
|
.init.data : { INIT_DATA }
|
|
|
|
. = ALIGN(8);
|
|
__setup_start = .;
|
|
.setup.init : { KEEP(*(.init.setup)) }
|
|
__setup_end = .;
|
|
|
|
__initcall_start = .;
|
|
.initcall.init : {
|
|
INITCALLS
|
|
}
|
|
__initcall_end = .;
|
|
__con_initcall_start = .;
|
|
.con_initcall.init : { *(.con_initcall.init) }
|
|
__con_initcall_end = .;
|
|
SECURITY_INIT
|
|
. = ALIGN(4);
|
|
__alt_instructions = .;
|
|
.altinstructions : { *(.altinstructions) }
|
|
__alt_instructions_end = .;
|
|
.altinstr_replacement : { *(.altinstr_replacement) }
|
|
|
|
PERCPU(4096)
|
|
|
|
#ifdef CONFIG_BLK_DEV_INITRD
|
|
. = ALIGN(4096);
|
|
__initramfs_start = .;
|
|
.init.ramfs : { *(.init.ramfs) }
|
|
__initramfs_end = .;
|
|
#endif
|
|
|
|
. = ALIGN(THREAD_SIZE);
|
|
__init_end = .;
|
|
|
|
/* put sections together that have massive alignment issues */
|
|
. = ALIGN(THREAD_SIZE);
|
|
.data.init_task : {
|
|
/* init task record & stack */
|
|
*(.data.init_task)
|
|
}
|
|
|
|
. = ALIGN(L1_CACHE_BYTES);
|
|
.data.cacheline_aligned : { *(.data.cacheline_aligned) }
|
|
|
|
.trap : {
|
|
/* trap table management - read entry-table.S before modifying */
|
|
. = ALIGN(8192);
|
|
__trap_tables = .;
|
|
*(.trap.user)
|
|
*(.trap.kernel)
|
|
. = ALIGN(4096);
|
|
*(.trap.break)
|
|
}
|
|
|
|
/* Text and read-only data */
|
|
. = ALIGN(4);
|
|
_text = .;
|
|
_stext = .;
|
|
.text : {
|
|
*(.text.start)
|
|
*(.text.entry)
|
|
*(.text.break)
|
|
*(.text.tlbmiss)
|
|
TEXT_TEXT
|
|
SCHED_TEXT
|
|
LOCK_TEXT
|
|
#ifdef CONFIG_DEBUG_INFO
|
|
INIT_TEXT
|
|
EXIT_TEXT
|
|
*(.exitcall.exit)
|
|
#endif
|
|
*(.fixup)
|
|
*(.gnu.warning)
|
|
*(.exitcall.exit)
|
|
} = 0x9090
|
|
|
|
_etext = .; /* End of text section */
|
|
|
|
RODATA
|
|
|
|
.rodata : {
|
|
*(.trap.vector)
|
|
|
|
/* this clause must not be modified - the ordering and adjacency are imperative */
|
|
__trap_fixup_tables = .;
|
|
*(.trap.fixup.user .trap.fixup.kernel)
|
|
|
|
}
|
|
|
|
. = ALIGN(8); /* Exception table */
|
|
__start___ex_table = .;
|
|
__ex_table : { KEEP(*(__ex_table)) }
|
|
__stop___ex_table = .;
|
|
|
|
_sdata = .;
|
|
.data : { /* Data */
|
|
DATA_DATA
|
|
*(.data.*)
|
|
EXIT_DATA
|
|
CONSTRUCTORS
|
|
}
|
|
|
|
_edata = .; /* End of data section */
|
|
|
|
/* GP section */
|
|
. = ALIGN(L1_CACHE_BYTES);
|
|
_gp = . + 2048;
|
|
PROVIDE (gp = _gp);
|
|
|
|
.sdata : { *(.sdata .sdata.*) }
|
|
|
|
/* BSS */
|
|
. = ALIGN(L1_CACHE_BYTES);
|
|
__bss_start = .;
|
|
|
|
.sbss : { *(.sbss .sbss.*) }
|
|
.bss : { *(.bss .bss.*) }
|
|
.bss.stack : { *(.bss) }
|
|
|
|
__bss_stop = .;
|
|
_end = . ;
|
|
. = ALIGN(PAGE_SIZE);
|
|
__kernel_image_end = .;
|
|
|
|
/* Stabs debugging sections. */
|
|
.stab 0 : { *(.stab) }
|
|
.stabstr 0 : { *(.stabstr) }
|
|
.stab.excl 0 : { *(.stab.excl) }
|
|
.stab.exclstr 0 : { *(.stab.exclstr) }
|
|
.stab.index 0 : { *(.stab.index) }
|
|
.stab.indexstr 0 : { *(.stab.indexstr) }
|
|
|
|
.debug_line 0 : { *(.debug_line) }
|
|
.debug_info 0 : { *(.debug_info) }
|
|
.debug_abbrev 0 : { *(.debug_abbrev) }
|
|
.debug_aranges 0 : { *(.debug_aranges) }
|
|
.debug_frame 0 : { *(.debug_frame) }
|
|
.debug_pubnames 0 : { *(.debug_pubnames) }
|
|
.debug_str 0 : { *(.debug_str) }
|
|
.debug_ranges 0 : { *(.debug_ranges) }
|
|
|
|
.comment 0 : { *(.comment) }
|
|
}
|
|
|
|
__kernel_image_size_no_bss = __bss_start - __kernel_image_start;
|