diff options
-rw-r--r-- | arch/blackfin/kernel/setup.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c index 6e150d9b8862..e4d2da7c1c9d 100644 --- a/arch/blackfin/kernel/setup.c +++ b/arch/blackfin/kernel/setup.c | |||
@@ -568,17 +568,23 @@ static __init void memory_setup(void) | |||
568 | # endif /* ANOMALY_05000263 */ | 568 | # endif /* ANOMALY_05000263 */ |
569 | # endif /* CONFIG_ROMFS_FS */ | 569 | # endif /* CONFIG_ROMFS_FS */ |
570 | 570 | ||
571 | memory_end -= mtd_size; | 571 | /* Since the default MTD_UCLINUX has no magic number, we just blindly |
572 | 572 | * read 8 past the end of the kernel's image, and look at it. | |
573 | if (mtd_size == 0) { | 573 | * When no image is attached, mtd_size is set to a random number |
574 | console_init(); | 574 | * Do some basic sanity checks before operating on things |
575 | panic("Don't boot kernel without rootfs attached."); | 575 | */ |
576 | if (mtd_size == 0 || memory_end <= mtd_size) { | ||
577 | pr_emerg("Could not find valid ram mtd attached.\n"); | ||
578 | } else { | ||
579 | memory_end -= mtd_size; | ||
580 | |||
581 | /* Relocate MTD image to the top of memory after the uncached memory area */ | ||
582 | uclinux_ram_map.phys = memory_mtd_start = memory_end; | ||
583 | uclinux_ram_map.size = mtd_size; | ||
584 | pr_info("Found mtd parition at 0x%p, (len=0x%lx), moving to 0x%p\n", | ||
585 | _end, mtd_size, (void *)memory_mtd_start); | ||
586 | dma_memcpy((void *)uclinux_ram_map.phys, _end, uclinux_ram_map.size); | ||
576 | } | 587 | } |
577 | |||
578 | /* Relocate MTD image to the top of memory after the uncached memory area */ | ||
579 | uclinux_ram_map.phys = memory_mtd_start = memory_end; | ||
580 | uclinux_ram_map.size = mtd_size; | ||
581 | dma_memcpy((void *)uclinux_ram_map.phys, _end, uclinux_ram_map.size); | ||
582 | #endif /* CONFIG_MTD_UCLINUX */ | 588 | #endif /* CONFIG_MTD_UCLINUX */ |
583 | 589 | ||
584 | #if (defined(CONFIG_BFIN_EXTMEM_ICACHEABLE) && ANOMALY_05000263) | 590 | #if (defined(CONFIG_BFIN_EXTMEM_ICACHEABLE) && ANOMALY_05000263) |