diff options
author | Michal Simek <monstr@monstr.eu> | 2010-01-20 09:17:08 -0500 |
---|---|---|
committer | Michal Simek <monstr@monstr.eu> | 2010-03-11 08:16:17 -0500 |
commit | 79bf3a137617e6deeac411c39f1660b7e91d6348 (patch) | |
tree | d4f7789d79e17af51774264c9e65b26875144f84 /arch | |
parent | 1be53e084a5bd8f59850348e1066d25aa0200031 (diff) |
microblaze: PCI early support for noMMU system
Signed-off-by: Michal Simek <monstr@monstr.eu>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/microblaze/include/asm/pgalloc.h | 2 | ||||
-rw-r--r-- | arch/microblaze/include/asm/pgtable.h | 6 | ||||
-rw-r--r-- | arch/microblaze/mm/init.c | 14 | ||||
-rw-r--r-- | arch/microblaze/pci/pci-common.c | 2 |
4 files changed, 18 insertions, 6 deletions
diff --git a/arch/microblaze/include/asm/pgalloc.h b/arch/microblaze/include/asm/pgalloc.h index 7547f5064560..f44b0d696fe2 100644 --- a/arch/microblaze/include/asm/pgalloc.h +++ b/arch/microblaze/include/asm/pgalloc.h | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
20 | #include <asm/page.h> | 20 | #include <asm/page.h> |
21 | #include <asm/cache.h> | 21 | #include <asm/cache.h> |
22 | #include <asm/pgtable.h> | ||
22 | 23 | ||
23 | #define PGDIR_ORDER 0 | 24 | #define PGDIR_ORDER 0 |
24 | 25 | ||
@@ -111,7 +112,6 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, | |||
111 | unsigned long address) | 112 | unsigned long address) |
112 | { | 113 | { |
113 | pte_t *pte; | 114 | pte_t *pte; |
114 | extern int mem_init_done; | ||
115 | extern void *early_get_page(void); | 115 | extern void *early_get_page(void); |
116 | if (mem_init_done) { | 116 | if (mem_init_done) { |
117 | pte = (pte_t *)__get_free_page(GFP_KERNEL | | 117 | pte = (pte_t *)__get_free_page(GFP_KERNEL | |
diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h index adcc3320e52a..dd2bb60651c7 100644 --- a/arch/microblaze/include/asm/pgtable.h +++ b/arch/microblaze/include/asm/pgtable.h | |||
@@ -16,6 +16,10 @@ | |||
16 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ | 16 | #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ |
17 | remap_pfn_range(vma, vaddr, pfn, size, prot) | 17 | remap_pfn_range(vma, vaddr, pfn, size, prot) |
18 | 18 | ||
19 | #ifndef __ASSEMBLY__ | ||
20 | extern int mem_init_done; | ||
21 | #endif | ||
22 | |||
19 | #ifndef CONFIG_MMU | 23 | #ifndef CONFIG_MMU |
20 | 24 | ||
21 | #define pgd_present(pgd) (1) /* pages are always present on non MMU */ | 25 | #define pgd_present(pgd) (1) /* pages are always present on non MMU */ |
@@ -51,6 +55,8 @@ static inline int pte_file(pte_t pte) { return 0; } | |||
51 | 55 | ||
52 | #define arch_enter_lazy_cpu_mode() do {} while (0) | 56 | #define arch_enter_lazy_cpu_mode() do {} while (0) |
53 | 57 | ||
58 | #define pgprot_noncached_wc(prot) prot | ||
59 | |||
54 | #else /* CONFIG_MMU */ | 60 | #else /* CONFIG_MMU */ |
55 | 61 | ||
56 | #include <asm-generic/4level-fixup.h> | 62 | #include <asm-generic/4level-fixup.h> |
diff --git a/arch/microblaze/mm/init.c b/arch/microblaze/mm/init.c index aa6e163411b5..1608e2e1a44a 100644 --- a/arch/microblaze/mm/init.c +++ b/arch/microblaze/mm/init.c | |||
@@ -23,6 +23,9 @@ | |||
23 | #include <asm/sections.h> | 23 | #include <asm/sections.h> |
24 | #include <asm/tlb.h> | 24 | #include <asm/tlb.h> |
25 | 25 | ||
26 | /* Use for MMU and noMMU because of PCI generic code */ | ||
27 | int mem_init_done; | ||
28 | |||
26 | #ifndef CONFIG_MMU | 29 | #ifndef CONFIG_MMU |
27 | unsigned int __page_offset; | 30 | unsigned int __page_offset; |
28 | EXPORT_SYMBOL(__page_offset); | 31 | EXPORT_SYMBOL(__page_offset); |
@@ -30,7 +33,6 @@ EXPORT_SYMBOL(__page_offset); | |||
30 | #else | 33 | #else |
31 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | 34 | DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); |
32 | 35 | ||
33 | int mem_init_done; | ||
34 | static int init_bootmem_done; | 36 | static int init_bootmem_done; |
35 | #endif /* CONFIG_MMU */ | 37 | #endif /* CONFIG_MMU */ |
36 | 38 | ||
@@ -202,9 +204,7 @@ void __init mem_init(void) | |||
202 | printk(KERN_INFO "Memory: %luk/%luk available\n", | 204 | printk(KERN_INFO "Memory: %luk/%luk available\n", |
203 | nr_free_pages() << (PAGE_SHIFT-10), | 205 | nr_free_pages() << (PAGE_SHIFT-10), |
204 | num_physpages << (PAGE_SHIFT-10)); | 206 | num_physpages << (PAGE_SHIFT-10)); |
205 | #ifdef CONFIG_MMU | ||
206 | mem_init_done = 1; | 207 | mem_init_done = 1; |
207 | #endif | ||
208 | } | 208 | } |
209 | 209 | ||
210 | #ifndef CONFIG_MMU | 210 | #ifndef CONFIG_MMU |
@@ -216,6 +216,10 @@ int ___range_ok(unsigned long addr, unsigned long size) | |||
216 | } | 216 | } |
217 | EXPORT_SYMBOL(___range_ok); | 217 | EXPORT_SYMBOL(___range_ok); |
218 | 218 | ||
219 | int page_is_ram(unsigned long pfn) | ||
220 | { | ||
221 | return __range_ok(pfn, 0); | ||
222 | } | ||
219 | #else | 223 | #else |
220 | int page_is_ram(unsigned long pfn) | 224 | int page_is_ram(unsigned long pfn) |
221 | { | 225 | { |
@@ -344,6 +348,8 @@ void __init *early_get_page(void) | |||
344 | return p; | 348 | return p; |
345 | } | 349 | } |
346 | 350 | ||
351 | #endif /* CONFIG_MMU */ | ||
352 | |||
347 | void * __init_refok alloc_maybe_bootmem(size_t size, gfp_t mask) | 353 | void * __init_refok alloc_maybe_bootmem(size_t size, gfp_t mask) |
348 | { | 354 | { |
349 | if (mem_init_done) | 355 | if (mem_init_done) |
@@ -365,5 +371,3 @@ void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask) | |||
365 | } | 371 | } |
366 | return p; | 372 | return p; |
367 | } | 373 | } |
368 | |||
369 | #endif /* CONFIG_MMU */ | ||
diff --git a/arch/microblaze/pci/pci-common.c b/arch/microblaze/pci/pci-common.c index f03f8be2740a..0be34350d733 100644 --- a/arch/microblaze/pci/pci-common.c +++ b/arch/microblaze/pci/pci-common.c | |||
@@ -561,11 +561,13 @@ int pci_mmap_legacy_page_range(struct pci_bus *bus, | |||
561 | * memory, effectively behaving just like /dev/zero | 561 | * memory, effectively behaving just like /dev/zero |
562 | */ | 562 | */ |
563 | if ((offset + size) > hose->isa_mem_size) { | 563 | if ((offset + size) > hose->isa_mem_size) { |
564 | #ifdef CONFIG_MMU | ||
564 | printk(KERN_DEBUG | 565 | printk(KERN_DEBUG |
565 | "Process %s (pid:%d) mapped non-existing PCI" | 566 | "Process %s (pid:%d) mapped non-existing PCI" |
566 | "legacy memory for 0%04x:%02x\n", | 567 | "legacy memory for 0%04x:%02x\n", |
567 | current->comm, current->pid, pci_domain_nr(bus), | 568 | current->comm, current->pid, pci_domain_nr(bus), |
568 | bus->number); | 569 | bus->number); |
570 | #endif | ||
569 | if (vma->vm_flags & VM_SHARED) | 571 | if (vma->vm_flags & VM_SHARED) |
570 | return shmem_zero_setup(vma); | 572 | return shmem_zero_setup(vma); |
571 | return 0; | 573 | return 0; |