summaryrefslogtreecommitdiffstats
path: root/kernel/arch/frv/kernel/vmlinux.lds.S
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/arch/frv/kernel/vmlinux.lds.S')
-rw-r--r--kernel/arch/frv/kernel/vmlinux.lds.S132
1 files changed, 132 insertions, 0 deletions
diff --git a/kernel/arch/frv/kernel/vmlinux.lds.S b/kernel/arch/frv/kernel/vmlinux.lds.S
new file mode 100644
index 000000000..7e958d829
--- /dev/null
+++ b/kernel/arch/frv/kernel/vmlinux.lds.S
@@ -0,0 +1,132 @@
+/* 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_SECTION(8)
+ PERCPU_SECTION(L1_CACHE_BYTES)
+
+ . = ALIGN(PAGE_SIZE);
+ __init_end = .;
+
+ .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)
+
+ }
+
+ EXCEPTION_TABLE(8)
+
+ _sdata = .;
+ .data : { /* Data */
+ INIT_TASK_DATA(THREAD_SIZE)
+ CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
+ 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_DEBUG
+ DWARF_DEBUG
+
+ .comment 0 : { *(.comment) }
+
+ DISCARDS
+}
+
+__kernel_image_size_no_bss = __bss_start - __kernel_image_start;