diff options
author | Bernd Schmidt <bernd.schmidt@analog.com> | 2007-11-18 00:09:49 +0800 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-11-18 00:09:49 +0800 |
commit | af8a5af3ff73055f7554a3a66307ad58792f09d5 (patch) | |
tree | eb9d60acd20667fbf4e552d7e7417a1c520b6a60 /arch/blackfin/kernel/setup.c | |
parent | a961d659637b7d77c916597017e2e3730859c333 (diff) | |
download | blackbird-op-linux-af8a5af3ff73055f7554a3a66307ad58792f09d5.tar.gz blackbird-op-linux-af8a5af3ff73055f7554a3a66307ad58792f09d5.zip |
Blackfin arch: fix bug kernel not to boot up with mtd filesystems
Revert this patch:
move the init sections to the end of memory, so that after they
are free, run time memory is all continugous - this should help decrease
memory fragementation. When doing this, we also pack some of the other
sections a little closer together, to make sure we don't waste memory.
To make this happen, we need to rename the .data.init_task section to
.init_task.data, so it doesn't get picked up by the linker script glob.
Since it causes the kernel not to boot up with mtd filesystems.
Signed-off-by: Bernd Schmidt <bernd.schmidt@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch/blackfin/kernel/setup.c')
-rw-r--r-- | arch/blackfin/kernel/setup.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index eee5a1fcb64c..d2822010b7ce 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c @@ -237,7 +237,7 @@ void __init setup_arch(char **cmdline_p) /* by now the stack is part of the init task */ memory_end = _ramend - DMA_UNCACHED_REGION; - _ramstart = (unsigned long)_end; + _ramstart = (unsigned long)__bss_stop; memory_start = PAGE_ALIGN(_ramstart); #if defined(CONFIG_MTD_UCLINUX) @@ -286,7 +286,7 @@ void __init setup_arch(char **cmdline_p) } /* Relocate MTD image to the top of memory after the uncached memory area */ - dma_memcpy((char *)memory_end, _end, mtd_size); + dma_memcpy((char *)memory_end, __bss_stop, mtd_size); memory_mtd_start = memory_end; _ebss = memory_mtd_start; /* define _ebss for compatible */ @@ -358,10 +358,10 @@ void __init setup_arch(char **cmdline_p) printk(KERN_INFO "Memory map:\n" KERN_INFO " text = 0x%p-0x%p\n" KERN_INFO " rodata = 0x%p-0x%p\n" - KERN_INFO " bss = 0x%p-0x%p\n" KERN_INFO " data = 0x%p-0x%p\n" KERN_INFO " stack = 0x%p-0x%p\n" KERN_INFO " init = 0x%p-0x%p\n" + KERN_INFO " bss = 0x%p-0x%p\n" KERN_INFO " available = 0x%p-0x%p\n" #ifdef CONFIG_MTD_UCLINUX KERN_INFO " rootfs = 0x%p-0x%p\n" @@ -371,10 +371,10 @@ void __init setup_arch(char **cmdline_p) #endif , _stext, _etext, __start_rodata, __end_rodata, - __bss_start, __bss_stop, _sdata, _edata, (void *)&init_thread_union, (void *)((int)(&init_thread_union) + 0x2000), __init_begin, __init_end, + __bss_start, __bss_stop, (void *)_ramstart, (void *)memory_end #ifdef CONFIG_MTD_UCLINUX , (void *)memory_mtd_start, (void *)(memory_mtd_start + mtd_size) |