use broken-out patches for the coldfire to make it easier to follow differences again...
[openwrt/svn-archive/archive.git] / target / linux / coldfire / patches / 018-mcfv4e_linker_script_update.patch
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 (file)
index 0000000..3c7da56
--- /dev/null
@@ -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