diff options
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/fsl_booke_mmu.c | 9 | ||||
-rw-r--r-- | arch/powerpc/mm/mmu_decl.h | 11 | ||||
-rw-r--r-- | arch/powerpc/mm/slice.c | 11 | ||||
-rw-r--r-- | arch/powerpc/mm/stab.c | 4 |
4 files changed, 22 insertions, 13 deletions
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c index 23cee39534fd..1971e4ee3d6e 100644 --- a/arch/powerpc/mm/fsl_booke_mmu.c +++ b/arch/powerpc/mm/fsl_booke_mmu.c | |||
@@ -56,18 +56,11 @@ | |||
56 | 56 | ||
57 | extern void loadcam_entry(unsigned int index); | 57 | extern void loadcam_entry(unsigned int index); |
58 | unsigned int tlbcam_index; | 58 | unsigned int tlbcam_index; |
59 | unsigned int num_tlbcam_entries; | ||
60 | static unsigned long __cam0, __cam1, __cam2; | 59 | static unsigned long __cam0, __cam1, __cam2; |
61 | 60 | ||
62 | #define NUM_TLBCAMS (16) | 61 | #define NUM_TLBCAMS (16) |
63 | 62 | ||
64 | struct tlbcam { | 63 | struct tlbcam TLBCAM[NUM_TLBCAMS]; |
65 | u32 MAS0; | ||
66 | u32 MAS1; | ||
67 | u32 MAS2; | ||
68 | u32 MAS3; | ||
69 | u32 MAS7; | ||
70 | } TLBCAM[NUM_TLBCAMS]; | ||
71 | 64 | ||
72 | struct tlbcamrange { | 65 | struct tlbcamrange { |
73 | unsigned long start; | 66 | unsigned long start; |
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h index ad123bced404..d1f9c62dc177 100644 --- a/arch/powerpc/mm/mmu_decl.h +++ b/arch/powerpc/mm/mmu_decl.h | |||
@@ -75,6 +75,15 @@ extern void _tlbia(void); | |||
75 | #endif /* CONFIG_PPC_MMU_NOHASH */ | 75 | #endif /* CONFIG_PPC_MMU_NOHASH */ |
76 | 76 | ||
77 | #ifdef CONFIG_PPC32 | 77 | #ifdef CONFIG_PPC32 |
78 | |||
79 | struct tlbcam { | ||
80 | u32 MAS0; | ||
81 | u32 MAS1; | ||
82 | u32 MAS2; | ||
83 | u32 MAS3; | ||
84 | u32 MAS7; | ||
85 | }; | ||
86 | |||
78 | extern void mapin_ram(void); | 87 | extern void mapin_ram(void); |
79 | extern int map_page(unsigned long va, phys_addr_t pa, int flags); | 88 | extern int map_page(unsigned long va, phys_addr_t pa, int flags); |
80 | extern void setbat(int index, unsigned long virt, phys_addr_t phys, | 89 | extern void setbat(int index, unsigned long virt, phys_addr_t phys, |
@@ -90,8 +99,6 @@ extern unsigned int rtas_data, rtas_size; | |||
90 | struct hash_pte; | 99 | struct hash_pte; |
91 | extern struct hash_pte *Hash, *Hash_end; | 100 | extern struct hash_pte *Hash, *Hash_end; |
92 | extern unsigned long Hash_size, Hash_mask; | 101 | extern unsigned long Hash_size, Hash_mask; |
93 | |||
94 | extern unsigned int num_tlbcam_entries; | ||
95 | #endif | 102 | #endif |
96 | 103 | ||
97 | extern unsigned long ioremap_bot; | 104 | extern unsigned long ioremap_bot; |
diff --git a/arch/powerpc/mm/slice.c b/arch/powerpc/mm/slice.c index db44e02e045b..ba5194817f8a 100644 --- a/arch/powerpc/mm/slice.c +++ b/arch/powerpc/mm/slice.c | |||
@@ -710,9 +710,18 @@ int is_hugepage_only_range(struct mm_struct *mm, unsigned long addr, | |||
710 | unsigned long len) | 710 | unsigned long len) |
711 | { | 711 | { |
712 | struct slice_mask mask, available; | 712 | struct slice_mask mask, available; |
713 | unsigned int psize = mm->context.user_psize; | ||
713 | 714 | ||
714 | mask = slice_range_to_mask(addr, len); | 715 | mask = slice_range_to_mask(addr, len); |
715 | available = slice_mask_for_size(mm, mm->context.user_psize); | 716 | available = slice_mask_for_size(mm, psize); |
717 | #ifdef CONFIG_PPC_64K_PAGES | ||
718 | /* We need to account for 4k slices too */ | ||
719 | if (psize == MMU_PAGE_64K) { | ||
720 | struct slice_mask compat_mask; | ||
721 | compat_mask = slice_mask_for_size(mm, MMU_PAGE_4K); | ||
722 | or_mask(available, compat_mask); | ||
723 | } | ||
724 | #endif | ||
716 | 725 | ||
717 | #if 0 /* too verbose */ | 726 | #if 0 /* too verbose */ |
718 | slice_dbg("is_hugepage_only_range(mm=%p, addr=%lx, len=%lx)\n", | 727 | slice_dbg("is_hugepage_only_range(mm=%p, addr=%lx, len=%lx)\n", |
diff --git a/arch/powerpc/mm/stab.c b/arch/powerpc/mm/stab.c index 60e6032a8088..98cd1dc2ae75 100644 --- a/arch/powerpc/mm/stab.c +++ b/arch/powerpc/mm/stab.c | |||
@@ -251,8 +251,8 @@ void __init stabs_alloc(void) | |||
251 | 251 | ||
252 | paca[cpu].stab_addr = newstab; | 252 | paca[cpu].stab_addr = newstab; |
253 | paca[cpu].stab_real = virt_to_abs(newstab); | 253 | paca[cpu].stab_real = virt_to_abs(newstab); |
254 | printk(KERN_INFO "Segment table for CPU %d at 0x%lx " | 254 | printk(KERN_INFO "Segment table for CPU %d at 0x%llx " |
255 | "virtual, 0x%lx absolute\n", | 255 | "virtual, 0x%llx absolute\n", |
256 | cpu, paca[cpu].stab_addr, paca[cpu].stab_real); | 256 | cpu, paca[cpu].stab_addr, paca[cpu].stab_real); |
257 | } | 257 | } |
258 | } | 258 | } |