diff options
author | Mike Frysinger <vapier.adi@gmail.com> | 2008-02-02 02:53:17 -0500 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2008-02-02 02:53:17 -0500 |
commit | b7627acc432a36072253bb1288f56e78c7d9423e (patch) | |
tree | 1d79f1c3a68c21ec1b51428a88d8f5149dbbbbf4 /arch/blackfin/kernel/setup.c | |
parent | 80f31c8a03d2f0644d0ceaf14e7e0108a007c962 (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.c | 14 |
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) | |||
427 | static __init void memory_setup(void) | 427 | static __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 |