aboutsummaryrefslogtreecommitdiffstats
path: root/arch/microblaze/mm/init.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/microblaze/mm/init.c')
-rw-r--r--arch/microblaze/mm/init.c47
1 files changed, 31 insertions, 16 deletions
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c
index a44892e7cd5b..cca3579d4268 100644
--- a/arch/microblaze/mm/init.c
+++ b/arch/microblaze/mm/init.c
@@ -15,6 +15,7 @@
15#include <linux/initrd.h> 15#include <linux/initrd.h>
16#include <linux/pagemap.h> 16#include <linux/pagemap.h>
17#include <linux/pfn.h> 17#include <linux/pfn.h>
18#include <linux/slab.h>
18#include <linux/swap.h> 19#include <linux/swap.h>
19 20
20#include <asm/page.h> 21#include <asm/page.h>
@@ -23,6 +24,9 @@
23#include <asm/sections.h> 24#include <asm/sections.h>
24#include <asm/tlb.h> 25#include <asm/tlb.h>
25 26
27/* Use for MMU and noMMU because of PCI generic code */
28int mem_init_done;
29
26#ifndef CONFIG_MMU 30#ifndef CONFIG_MMU
27unsigned int __page_offset; 31unsigned int __page_offset;
28EXPORT_SYMBOL(__page_offset); 32EXPORT_SYMBOL(__page_offset);
@@ -30,7 +34,6 @@ EXPORT_SYMBOL(__page_offset);
30#else 34#else
31DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); 35DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
32 36
33int mem_init_done;
34static int init_bootmem_done; 37static int init_bootmem_done;
35#endif /* CONFIG_MMU */ 38#endif /* CONFIG_MMU */
36 39
@@ -41,8 +44,10 @@ char *klimit = _end;
41 * have available. 44 * have available.
42 */ 45 */
43unsigned long memory_start; 46unsigned long memory_start;
47EXPORT_SYMBOL(memory_start);
44unsigned long memory_end; /* due to mm/nommu.c */ 48unsigned long memory_end; /* due to mm/nommu.c */
45unsigned long memory_size; 49unsigned long memory_size;
50EXPORT_SYMBOL(memory_size);
46 51
47/* 52/*
48 * paging_init() sets up the page tables - in fact we've already done this. 53 * paging_init() sets up the page tables - in fact we've already done this.
@@ -162,7 +167,6 @@ void free_init_pages(char *what, unsigned long begin, unsigned long end)
162 for (addr = begin; addr < end; addr += PAGE_SIZE) { 167 for (addr = begin; addr < end; addr += PAGE_SIZE) {
163 ClearPageReserved(virt_to_page(addr)); 168 ClearPageReserved(virt_to_page(addr));
164 init_page_count(virt_to_page(addr)); 169 init_page_count(virt_to_page(addr));
165 memset((void *)addr, 0xcc, PAGE_SIZE);
166 free_page(addr); 170 free_page(addr);
167 totalram_pages++; 171 totalram_pages++;
168 } 172 }
@@ -192,12 +196,6 @@ void free_initmem(void)
192 (unsigned long)(&__init_end)); 196 (unsigned long)(&__init_end));
193} 197}
194 198
195/* FIXME from arch/powerpc/mm/mem.c*/
196void show_mem(void)
197{
198 printk(KERN_NOTICE "%s\n", __func__);
199}
200
201void __init mem_init(void) 199void __init mem_init(void)
202{ 200{
203 high_memory = (void *)__va(memory_end); 201 high_memory = (void *)__va(memory_end);
@@ -207,20 +205,14 @@ void __init mem_init(void)
207 printk(KERN_INFO "Memory: %luk/%luk available\n", 205 printk(KERN_INFO "Memory: %luk/%luk available\n",
208 nr_free_pages() << (PAGE_SHIFT-10), 206 nr_free_pages() << (PAGE_SHIFT-10),
209 num_physpages << (PAGE_SHIFT-10)); 207 num_physpages << (PAGE_SHIFT-10));
210#ifdef CONFIG_MMU
211 mem_init_done = 1; 208 mem_init_done = 1;
212#endif
213} 209}
214 210
215#ifndef CONFIG_MMU 211#ifndef CONFIG_MMU
216/* Check against bounds of physical memory */ 212int page_is_ram(unsigned long pfn)
217int ___range_ok(unsigned long addr, unsigned long size)
218{ 213{
219 return ((addr < memory_start) || 214 return __range_ok(pfn, 0);
220 ((addr + size) > memory_end));
221} 215}
222EXPORT_SYMBOL(___range_ok);
223
224#else 216#else
225int page_is_ram(unsigned long pfn) 217int page_is_ram(unsigned long pfn)
226{ 218{
@@ -348,4 +340,27 @@ void __init *early_get_page(void)
348 } 340 }
349 return p; 341 return p;
350} 342}
343
351#endif /* CONFIG_MMU */ 344#endif /* CONFIG_MMU */
345
346void * __init_refok alloc_maybe_bootmem(size_t size, gfp_t mask)
347{
348 if (mem_init_done)
349 return kmalloc(size, mask);
350 else
351 return alloc_bootmem(size);
352}
353
354void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask)
355{
356 void *p;
357
358 if (mem_init_done)
359 p = kzalloc(size, mask);
360 else {
361 p = alloc_bootmem(size);
362 if (p)
363 memset(p, 0, size);
364 }
365 return p;
366}