summaryrefslogtreecommitdiffstats
path: root/arch/arm/mm
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@stericsson.com>2010-07-12 22:53:28 +0200
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-07-27 11:42:38 +0200
commit1dbd30e9890fd69e50b17edd70ca583546b0fe4e (patch)
tree5b5ab74c1792a81340478f7bbccd053e60a23a5e /arch/arm/mm
parentARM: 6224/1: print TCM whereabouts in init message (diff)
downloadlinux-1dbd30e9890fd69e50b17edd70ca583546b0fe4e.tar.xz
linux-1dbd30e9890fd69e50b17edd70ca583546b0fe4e.zip
ARM: 6225/1: make TCM allocation static and common for all archs
This changes the TCM handling so that a fixed area is reserved at 0xfffe0000-0xfffeffff for TCM. This areas is used by XScale but XScale does not have TCM so the mechanisms are mutually exclusive. This change is needed to make TCM detection more dynamic while still being able to compile code into it, and is a must for the unified ARM goals: the current TCM allocation at different places in memory for each machine would be a nightmare if you want to compile a single image for more than one machine with TCM so it has to be nailed down in one place. Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r--arch/arm/mm/init.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 526af48b1271..e00404e6f45b 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -529,6 +529,11 @@ void __init mem_init(void)
{
unsigned long reserved_pages, free_pages;
int i, node;
+#ifdef CONFIG_HAVE_TCM
+ /* These pointers are filled in on TCM detection */
+ extern u32 dtcm_end;
+ extern u32 itcm_end;
+#endif
#ifndef CONFIG_DISCONTIGMEM
max_mapnr = pfn_to_page(max_pfn + PHYS_PFN_OFFSET) - mem_map;
@@ -612,13 +617,9 @@ void __init mem_init(void)
printk(KERN_NOTICE "Virtual kernel memory layout:\n"
" vector : 0x%08lx - 0x%08lx (%4ld kB)\n"
#ifdef CONFIG_HAVE_TCM
-#ifdef DTCM_OFFSET
" DTCM : 0x%08lx - 0x%08lx (%4ld kB)\n"
-#endif
-#ifdef ITCM_OFFSET
" ITCM : 0x%08lx - 0x%08lx (%4ld kB)\n"
#endif
-#endif
" fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n"
#ifdef CONFIG_MMU
" DMA : 0x%08lx - 0x%08lx (%4ld MB)\n"
@@ -636,12 +637,8 @@ void __init mem_init(void)
MLK(UL(CONFIG_VECTORS_BASE), UL(CONFIG_VECTORS_BASE) +
(PAGE_SIZE)),
#ifdef CONFIG_HAVE_TCM
-#ifdef DTCM_OFFSET
- MLK(UL(DTCM_OFFSET), UL(DTCM_END + 1)),
-#endif
-#ifdef ITCM_OFFSET
- MLK(UL(ITCM_OFFSET), UL(ITCM_END + 1)),
-#endif
+ MLK(DTCM_OFFSET, (unsigned long) dtcm_end),
+ MLK(ITCM_OFFSET, (unsigned long) itcm_end),
#endif
MLK(FIXADDR_START, FIXADDR_TOP),
#ifdef CONFIG_MMU