From ec03ced5fa6eb25eee164839268b538abb965e99 Mon Sep 17 00:00:00 2001 From: Imre Kaloz Date: Tue, 23 Jun 2009 21:04:37 +0000 Subject: use broken-out patches for the coldfire to make it easier to follow differences against the bsp git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16547 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../patches/018-mcfv4e_linker_script_update.patch | 187 +++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 target/linux/coldfire/patches/018-mcfv4e_linker_script_update.patch (limited to '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 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 +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 +--- + 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 ++ */ ++ ++#define LOAD_OFFSET 0x00000000 + + #include ++#include ++ ++#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 -- cgit v1.2.3