aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/coldfire/patches/018-mcfv4e_linker_script_update.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/coldfire/patches/018-mcfv4e_linker_script_update.patch')
-rw-r--r--target/linux/coldfire/patches/018-mcfv4e_linker_script_update.patch187
1 files changed, 187 insertions, 0 deletions
diff --git a/target/linux/coldfire/patches/018-mcfv4e_linker_script_update.patch b/target/linux/coldfire/patches/018-mcfv4e_linker_script_update.patch
new file mode 100644
index 0000000000..3c7da56934
--- /dev/null
+++ b/target/linux/coldfire/patches/018-mcfv4e_linker_script_update.patch
@@ -0,0 +1,187 @@
+From 3aa2c28ff4271e9232b6c98ba000804de3ed3f33 Mon Sep 17 00:00:00 2001
+From: Kurt Mahan <kmahan@freescale.com>
+Date: Mon, 26 Nov 2007 23:41:23 -0700
+Subject: [PATCH] Rewrite coldfire linker script.
+
+LTIBName: mcfv4e-linker-script-update
+Signed-off-by: Kurt Mahan <kmahan@freescale.com>
+---
+ arch/m68k/coldfire/vmlinux-cf.lds | 107 ++++++++++++++++++++++++-------------
+ arch/m68k/kernel/vmlinux.lds.S | 3 +-
+ 2 files changed, 72 insertions(+), 38 deletions(-)
+
+--- a/arch/m68k/coldfire/vmlinux-cf.lds
++++ b/arch/m68k/coldfire/vmlinux-cf.lds
+@@ -1,76 +1,115 @@
+-/* ld script to make m68k Coldfire Linux kernel */
++/* ld script to make m68k Coldfire Linux kernel
++ *
++ * Derived from arch/m68k/kernel/vmlinux-std.lds
++ *
++ * Updated 11/26/2007 for new CodeSourcery toolset
++ * by Kurt Mahan <kmahan@freescale.com>
++ */
++
++#define LOAD_OFFSET 0x00000000
+
+ #include <asm-generic/vmlinux.lds.h>
++#include <asm/page_offset.h>
++
++#define START_OFFSET 0x00020000
++#define IMAGE_START PAGE_OFFSET_RAW + START_OFFSET
+
+ OUTPUT_FORMAT("elf32-m68k", "elf32-m68k", "elf32-m68k")
+ OUTPUT_ARCH(m68k)
+ ENTRY(_stext)
+ jiffies = jiffies_64 + 4;
++
+ SECTIONS
+ {
+- . = 0xC0020000;
+- _text = .; /* Text and read-only data */
+- .text : {
++ . = IMAGE_START;
++ .text.head : AT(ADDR(.text.head) - LOAD_OFFSET) {
++ _text = .; /* Text and read-only data */
+ *(.text.head)
++ } :text = 0x4e75
++
++ .text : AT(ADDR(.text) - LOAD_OFFSET) {
+ TEXT_TEXT
+ SCHED_TEXT
+ LOCK_TEXT
+ *(.fixup)
+ *(.gnu.warning)
+- } :text = 0x4e75
+-
++ } :text = 0x4e75
+ _etext = .; /* End of text section */
+
+ . = ALIGN(16);
+- __start___ex_table = .;
+- __ex_table : { *(__ex_table) }
+- __stop___ex_table = .;
++ __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
++ __start___ex_table = .;
++ *(__ex_table)
++ __stop___ex_table = .;
++ }
+
+ RODATA
+
+- .data : { /* Data */
++ . = ALIGN(8192);
++ .data : AT(ADDR(.data) - LOAD_OFFSET) { /* Data */
+ DATA_DATA
+ CONSTRUCTORS
+- }
++ } :data
+
+- .bss : { *(.bss) } /* BSS */
++ .bss : AT(ADDR(.bss) - LOAD_OFFSET) { /* BSS */
++ *(.bss)
++ }
+
+ . = ALIGN(16);
+- .data.cacheline_aligned : { *(.data.cacheline_aligned) } :data
++ .data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET ) {
++ *(.data.cacheline_aligned)
++ } :data
+
+ _edata = .; /* End of data section */
+
+ . = ALIGN(8192); /* Initrd */
+- __init_begin = .;
+- .init.text : {
++ .init.text : AT(ADDR(.init.text) - LOAD_OFFSET) {
++ __init_begin = .;
+ _sinittext = .;
+ *(.init.text)
+ _einittext = .;
+ }
+- .init.data : { *(.init.data) }
++
++ .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) {
++ *(.init.data)
++ }
++
+ . = ALIGN(16);
+- __setup_start = .;
+- .init.setup : { *(.init.setup) }
+- __setup_end = .;
+- __initcall_start = .;
+- .initcall.init : {
++ .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) {
++ __setup_start = .;
++ *(.init.setup)
++ __setup_end = .;
++ }
++
++ .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET) {
++ __initcall_start = .;
+ INITCALLS
++ __initcall_end = .;
+ }
+- __initcall_end = .;
+- __con_initcall_start = .;
+- .con_initcall.init : { *(.con_initcall.init) }
+- __con_initcall_end = .;
++
++ .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) {
++ __con_initcall_start = .;
++ *(.con_initcall.init)
++ __con_initcall_end = .;
++ }
++
+ SECURITY_INIT
++
+ #ifdef CONFIG_BLK_DEV_INITRD
+ . = ALIGN(8192);
+- __initramfs_start = .;
+- .init.ramfs : { *(.init.ramfs) }
+- __initramfs_end = .;
++ .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) {
++ __initramfs_start = .;
++ *(.init.ramfs)
++ __initramfs_end = .;
++ }
+ #endif
++
+ . = ALIGN(8192);
+ __init_end = .;
+
+- .data.init_task : { *(.data.init_task) } /* The initial task and kernel stack */
++ .data.init_task : AT(ADDR(.data.init_task) - LOAD_OFFSET) {
++ *(.data.init_task) /* The initial task and kernel stack */
++ }
+
+ _end = . ;
+
+@@ -79,14 +118,8 @@ SECTIONS
+ *(.exit.text)
+ *(.exit.data)
+ *(.exitcall.exit)
+- }
++ }
+
+ /* 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) }
+- .comment 0 : { *(.comment) }
++ STABS_DEBUG
+ }
+--- a/arch/m68k/kernel/vmlinux.lds.S
++++ b/arch/m68k/kernel/vmlinux.lds.S
+@@ -1,6 +1,7 @@
+ PHDRS
+ {
+- text PT_LOAD FILEHDR PHDRS FLAGS (7);
++ headers PT_PHDR PHDRS ;
++ text PT_LOAD FILEHDR PHDRS FLAGS (5);
+ data PT_LOAD FLAGS (7);
+ }
+ #ifdef CONFIG_SUN3