aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/kernel/setup.c
diff options
context:
space:
mode:
authorMike Frysinger <vapier.adi@gmail.com>2008-02-02 02:53:17 -0500
committerBryan Wu <bryan.wu@analog.com>2008-02-02 02:53:17 -0500
commitb7627acc432a36072253bb1288f56e78c7d9423e (patch)
tree1d79f1c3a68c21ec1b51428a88d8f5149dbbbbf4 /arch/blackfin/kernel/setup.c
parent80f31c8a03d2f0644d0ceaf14e7e0108a007c962 (diff)
[Blackfin] arch: move the init sections to the end of memory
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. Signed-off-by: Mike Frysinger <vapier.adi@gmail.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.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index aca5e6e5bbdd..060080789495 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -427,7 +427,7 @@ static __init void parse_cmdline_early(char *cmdline_p)
427static __init void memory_setup(void) 427static __init void memory_setup(void)
428{ 428{
429 _rambase = (unsigned long)_stext; 429 _rambase = (unsigned long)_stext;
430 _ramstart = (unsigned long)__bss_stop; 430 _ramstart = (unsigned long)_end;
431 431
432 if (DMA_UNCACHED_REGION > (_ramend - _ramstart)) { 432 if (DMA_UNCACHED_REGION > (_ramend - _ramstart)) {
433 console_init(); 433 console_init();
@@ -489,7 +489,7 @@ static __init void memory_setup(void)
489 } 489 }
490 490
491 /* Relocate MTD image to the top of memory after the uncached memory area */ 491 /* Relocate MTD image to the top of memory after the uncached memory area */
492 dma_memcpy((char *)memory_end, __bss_stop, mtd_size); 492 dma_memcpy((char *)memory_end, _end, mtd_size);
493 493
494 memory_mtd_start = memory_end; 494 memory_mtd_start = memory_end;
495 _ebss = memory_mtd_start; /* define _ebss for compatible */ 495 _ebss = memory_mtd_start; /* define _ebss for compatible */
@@ -528,13 +528,13 @@ static __init void memory_setup(void)
528 printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20); 528 printk(KERN_INFO "Board Memory: %ldMB\n", physical_mem_end >> 20);
529 printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20); 529 printk(KERN_INFO "Kernel Managed Memory: %ldMB\n", _ramend >> 20);
530 530
531 printk( KERN_INFO "Memory map:\n" 531 printk(KERN_INFO "Memory map:\n"
532 KERN_INFO " text = 0x%p-0x%p\n" 532 KERN_INFO " text = 0x%p-0x%p\n"
533 KERN_INFO " rodata = 0x%p-0x%p\n" 533 KERN_INFO " rodata = 0x%p-0x%p\n"
534 KERN_INFO " bss = 0x%p-0x%p\n"
534 KERN_INFO " data = 0x%p-0x%p\n" 535 KERN_INFO " data = 0x%p-0x%p\n"
535 KERN_INFO " stack = 0x%p-0x%p\n" 536 KERN_INFO " stack = 0x%p-0x%p\n"
536 KERN_INFO " init = 0x%p-0x%p\n" 537 KERN_INFO " init = 0x%p-0x%p\n"
537 KERN_INFO " bss = 0x%p-0x%p\n"
538 KERN_INFO " available = 0x%p-0x%p\n" 538 KERN_INFO " available = 0x%p-0x%p\n"
539#ifdef CONFIG_MTD_UCLINUX 539#ifdef CONFIG_MTD_UCLINUX
540 KERN_INFO " rootfs = 0x%p-0x%p\n" 540 KERN_INFO " rootfs = 0x%p-0x%p\n"
@@ -544,12 +544,12 @@ static __init void memory_setup(void)
544#endif 544#endif
545 , _stext, _etext, 545 , _stext, _etext,
546 __start_rodata, __end_rodata, 546 __start_rodata, __end_rodata,
547 __bss_start, __bss_stop,
547 _sdata, _edata, 548 _sdata, _edata,
548 (void *)&init_thread_union, 549 (void *)&init_thread_union,
549 (void *)((int)(&init_thread_union) + 0x2000), 550 (void *)((int)(&init_thread_union) + 0x2000),
550 __init_begin, __init_end, 551 __init_begin, __init_end,
551 __bss_start, __bss_stop, 552 (void *)_ramstart, (void *)memory_end
552 (void *)_ramstart, (void *)memory_end
553#ifdef CONFIG_MTD_UCLINUX 553#ifdef CONFIG_MTD_UCLINUX
554 , (void *)memory_mtd_start, (void *)(memory_mtd_start + mtd_size) 554 , (void *)memory_mtd_start, (void *)(memory_mtd_start + mtd_size)
555#endif 555#endif