aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-03-25 14:56:05 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-05-15 10:03:49 -0400
commita2227120eead4ea7d2ea04d8ce0947f1dd23dedf (patch)
tree42b8ef27585c8f4cac294594659f52833037a577 /arch/arm
parentceb683d3bc36f213aeef0c5d79e6fbb1e16bd459 (diff)
ARM: Move memory mapping into mmu.c
Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mm/init.c24
-rw-r--r--arch/arm/mm/mm.h3
-rw-r--r--arch/arm/mm/mmu.c29
3 files changed, 28 insertions, 28 deletions
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 8bbb9a972e71..105d1d4f420b 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -225,20 +225,6 @@ static int __init check_initrd(struct meminfo *mi)
225 return initrd_node; 225 return initrd_node;
226} 226}
227 227
228static inline void map_memory_bank(struct membank *bank)
229{
230#ifdef CONFIG_MMU
231 struct map_desc map;
232
233 map.pfn = bank_pfn_start(bank);
234 map.virtual = __phys_to_virt(bank_phys_start(bank));
235 map.length = bank_phys_size(bank);
236 map.type = MT_MEMORY;
237
238 create_mapping(&map);
239#endif
240}
241
242static void __init bootmem_init_node(int node, struct meminfo *mi, 228static void __init bootmem_init_node(int node, struct meminfo *mi,
243 unsigned long start_pfn, unsigned long end_pfn) 229 unsigned long start_pfn, unsigned long end_pfn)
244{ 230{
@@ -248,16 +234,6 @@ static void __init bootmem_init_node(int node, struct meminfo *mi,
248 int i; 234 int i;
249 235
250 /* 236 /*
251 * Map the memory banks for this node.
252 */
253 for_each_nodebank(i, mi, node) {
254 struct membank *bank = &mi->bank[i];
255
256 if (!bank->highmem)
257 map_memory_bank(bank);
258 }
259
260 /*
261 * Allocate the bootmem bitmap page. 237 * Allocate the bootmem bitmap page.
262 */ 238 */
263 boot_pages = bootmem_bootmap_pages(end_pfn - start_pfn); 239 boot_pages = bootmem_bootmap_pages(end_pfn - start_pfn);
diff --git a/arch/arm/mm/mm.h b/arch/arm/mm/mm.h
index a888363398f8..815d08eecbb0 100644
--- a/arch/arm/mm/mm.h
+++ b/arch/arm/mm/mm.h
@@ -28,10 +28,7 @@ extern void __flush_dcache_page(struct address_space *mapping, struct page *page
28 28
29#endif 29#endif
30 30
31struct map_desc;
32struct meminfo;
33struct pglist_data; 31struct pglist_data;
34 32
35void __init create_mapping(struct map_desc *md);
36void __init bootmem_init(void); 33void __init bootmem_init(void);
37void reserve_node_zero(struct pglist_data *pgdat); 34void reserve_node_zero(struct pglist_data *pgdat);
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index 91547196915c..69852003675f 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -600,7 +600,7 @@ static void __init create_36bit_mapping(struct map_desc *md,
600 * offsets, and we take full advantage of sections and 600 * offsets, and we take full advantage of sections and
601 * supersections. 601 * supersections.
602 */ 602 */
603void __init create_mapping(struct map_desc *md) 603static void __init create_mapping(struct map_desc *md)
604{ 604{
605 unsigned long phys, addr, length, end; 605 unsigned long phys, addr, length, end;
606 const struct mem_type *type; 606 const struct mem_type *type;
@@ -1014,6 +1014,32 @@ static void __init kmap_init(void)
1014#endif 1014#endif
1015} 1015}
1016 1016
1017static inline void map_memory_bank(struct membank *bank)
1018{
1019 struct map_desc map;
1020
1021 map.pfn = bank_pfn_start(bank);
1022 map.virtual = __phys_to_virt(bank_phys_start(bank));
1023 map.length = bank_phys_size(bank);
1024 map.type = MT_MEMORY;
1025
1026 create_mapping(&map);
1027}
1028
1029static void __init map_lowmem(void)
1030{
1031 struct meminfo *mi = &meminfo;
1032 int i;
1033
1034 /* Map all the lowmem memory banks. */
1035 for (i = 0; i < mi->nr_banks; i++) {
1036 struct membank *bank = &mi->bank[i];
1037
1038 if (!bank->highmem)
1039 map_memory_bank(bank);
1040 }
1041}
1042
1017static int __init meminfo_cmp(const void *_a, const void *_b) 1043static int __init meminfo_cmp(const void *_a, const void *_b)
1018{ 1044{
1019 const struct membank *a = _a, *b = _b; 1045 const struct membank *a = _a, *b = _b;
@@ -1034,6 +1060,7 @@ void __init paging_init(struct machine_desc *mdesc)
1034 build_mem_type_table(); 1060 build_mem_type_table();
1035 sanity_check_meminfo(); 1061 sanity_check_meminfo();
1036 prepare_page_table(); 1062 prepare_page_table();
1063 map_lowmem();
1037 bootmem_init(); 1064 bootmem_init();
1038 devicemaps_init(mdesc); 1065 devicemaps_init(mdesc);
1039 kmap_init(); 1066 kmap_init();