diff options
-rw-r--r-- | arch/powerpc/kernel/asm-offsets.c | 4 | ||||
-rw-r--r-- | arch/powerpc/mm/Makefile | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/fsl_booke_mmu.c | 12 | ||||
-rw-r--r-- | arch/powerpc/mm/mmu_decl.h | 5 | ||||
-rw-r--r-- | arch/powerpc/mm/tlb_nohash.c | 14 | ||||
-rw-r--r-- | arch/powerpc/mm/tlb_nohash_low.S | 2 |
6 files changed, 29 insertions, 10 deletions
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index c63494090854..c3e01945ad4f 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -61,7 +61,7 @@ | |||
61 | #endif | 61 | #endif |
62 | #endif | 62 | #endif |
63 | 63 | ||
64 | #if defined(CONFIG_FSL_BOOKE) | 64 | #if defined(CONFIG_PPC_FSL_BOOK3E) |
65 | #include "../mm/mmu_decl.h" | 65 | #include "../mm/mmu_decl.h" |
66 | #endif | 66 | #endif |
67 | 67 | ||
@@ -470,7 +470,7 @@ int main(void) | |||
470 | DEFINE(PGD_T_LOG2, PGD_T_LOG2); | 470 | DEFINE(PGD_T_LOG2, PGD_T_LOG2); |
471 | DEFINE(PTE_T_LOG2, PTE_T_LOG2); | 471 | DEFINE(PTE_T_LOG2, PTE_T_LOG2); |
472 | #endif | 472 | #endif |
473 | #ifdef CONFIG_FSL_BOOKE | 473 | #ifdef CONFIG_PPC_FSL_BOOK3E |
474 | DEFINE(TLBCAM_SIZE, sizeof(struct tlbcam)); | 474 | DEFINE(TLBCAM_SIZE, sizeof(struct tlbcam)); |
475 | DEFINE(TLBCAM_MAS0, offsetof(struct tlbcam, MAS0)); | 475 | DEFINE(TLBCAM_MAS0, offsetof(struct tlbcam, MAS0)); |
476 | DEFINE(TLBCAM_MAS1, offsetof(struct tlbcam, MAS1)); | 476 | DEFINE(TLBCAM_MAS1, offsetof(struct tlbcam, MAS1)); |
diff --git a/arch/powerpc/mm/Makefile b/arch/powerpc/mm/Makefile index 53102f306880..bdca46e08382 100644 --- a/arch/powerpc/mm/Makefile +++ b/arch/powerpc/mm/Makefile | |||
@@ -23,7 +23,7 @@ obj-$(CONFIG_PPC_STD_MMU) += hash_low_$(CONFIG_WORD_SIZE).o \ | |||
23 | mmu_context_hash$(CONFIG_WORD_SIZE).o | 23 | mmu_context_hash$(CONFIG_WORD_SIZE).o |
24 | obj-$(CONFIG_40x) += 40x_mmu.o | 24 | obj-$(CONFIG_40x) += 40x_mmu.o |
25 | obj-$(CONFIG_44x) += 44x_mmu.o | 25 | obj-$(CONFIG_44x) += 44x_mmu.o |
26 | obj-$(CONFIG_FSL_BOOKE) += fsl_booke_mmu.o | 26 | obj-$(CONFIG_PPC_FSL_BOOK3E) += fsl_booke_mmu.o |
27 | obj-$(CONFIG_NEED_MULTIPLE_NODES) += numa.o | 27 | obj-$(CONFIG_NEED_MULTIPLE_NODES) += numa.o |
28 | obj-$(CONFIG_PPC_MM_SLICES) += slice.o | 28 | obj-$(CONFIG_PPC_MM_SLICES) += slice.o |
29 | ifeq ($(CONFIG_HUGETLB_PAGE),y) | 29 | ifeq ($(CONFIG_HUGETLB_PAGE),y) |
diff --git a/arch/powerpc/mm/fsl_booke_mmu.c b/arch/powerpc/mm/fsl_booke_mmu.c index 1b4354db51bb..67bc8a7c7e0b 100644 --- a/arch/powerpc/mm/fsl_booke_mmu.c +++ b/arch/powerpc/mm/fsl_booke_mmu.c | |||
@@ -56,11 +56,6 @@ | |||
56 | 56 | ||
57 | unsigned int tlbcam_index; | 57 | unsigned int tlbcam_index; |
58 | 58 | ||
59 | |||
60 | #if defined(CONFIG_LOWMEM_CAM_NUM_BOOL) && (CONFIG_LOWMEM_CAM_NUM >= NUM_TLBCAMS) | ||
61 | #error "LOWMEM_CAM_NUM must be less than NUM_TLBCAMS" | ||
62 | #endif | ||
63 | |||
64 | #define NUM_TLBCAMS (64) | 59 | #define NUM_TLBCAMS (64) |
65 | struct tlbcam TLBCAM[NUM_TLBCAMS]; | 60 | struct tlbcam TLBCAM[NUM_TLBCAMS]; |
66 | 61 | ||
@@ -185,6 +180,12 @@ unsigned long map_mem_in_cams(unsigned long ram, int max_cam_idx) | |||
185 | return amount_mapped; | 180 | return amount_mapped; |
186 | } | 181 | } |
187 | 182 | ||
183 | #ifdef CONFIG_PPC32 | ||
184 | |||
185 | #if defined(CONFIG_LOWMEM_CAM_NUM_BOOL) && (CONFIG_LOWMEM_CAM_NUM >= NUM_TLBCAMS) | ||
186 | #error "LOWMEM_CAM_NUM must be less than NUM_TLBCAMS" | ||
187 | #endif | ||
188 | |||
188 | unsigned long __init mmu_mapin_ram(unsigned long top) | 189 | unsigned long __init mmu_mapin_ram(unsigned long top) |
189 | { | 190 | { |
190 | return tlbcam_addrs[tlbcam_index - 1].limit - PAGE_OFFSET + 1; | 191 | return tlbcam_addrs[tlbcam_index - 1].limit - PAGE_OFFSET + 1; |
@@ -216,3 +217,4 @@ void __init adjust_total_lowmem(void) | |||
216 | 217 | ||
217 | __initial_memory_limit_addr = memstart_addr + __max_low_memory; | 218 | __initial_memory_limit_addr = memstart_addr + __max_low_memory; |
218 | } | 219 | } |
220 | #endif | ||
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h index 63b84a0d3b10..dd0a2589591d 100644 --- a/arch/powerpc/mm/mmu_decl.h +++ b/arch/powerpc/mm/mmu_decl.h | |||
@@ -140,10 +140,13 @@ extern void wii_memory_fixups(void); | |||
140 | extern void MMU_init_hw(void); | 140 | extern void MMU_init_hw(void); |
141 | extern unsigned long mmu_mapin_ram(unsigned long top); | 141 | extern unsigned long mmu_mapin_ram(unsigned long top); |
142 | 142 | ||
143 | #elif defined(CONFIG_FSL_BOOKE) | 143 | #elif defined(CONFIG_PPC_FSL_BOOK3E) |
144 | extern unsigned long map_mem_in_cams(unsigned long ram, int max_cam_idx); | ||
145 | #ifdef CONFIG_PPC32 | ||
144 | extern void MMU_init_hw(void); | 146 | extern void MMU_init_hw(void); |
145 | extern unsigned long mmu_mapin_ram(unsigned long top); | 147 | extern unsigned long mmu_mapin_ram(unsigned long top); |
146 | extern void adjust_total_lowmem(void); | 148 | extern void adjust_total_lowmem(void); |
149 | #endif | ||
147 | extern void loadcam_entry(unsigned int index); | 150 | extern void loadcam_entry(unsigned int index); |
148 | 151 | ||
149 | struct tlbcam { | 152 | struct tlbcam { |
diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c index 665189920762..61fe32a256da 100644 --- a/arch/powerpc/mm/tlb_nohash.c +++ b/arch/powerpc/mm/tlb_nohash.c | |||
@@ -541,6 +541,20 @@ static void __early_init_mmu(int boot_cpu) | |||
541 | */ | 541 | */ |
542 | linear_map_top = memblock_end_of_DRAM(); | 542 | linear_map_top = memblock_end_of_DRAM(); |
543 | 543 | ||
544 | #ifdef CONFIG_PPC_FSL_BOOK3E | ||
545 | if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) { | ||
546 | unsigned int num_cams; | ||
547 | |||
548 | /* use a quarter of the TLBCAM for bolted linear map */ | ||
549 | num_cams = (mfspr(SPRN_TLB1CFG) & TLBnCFG_N_ENTRY) / 4; | ||
550 | linear_map_top = map_mem_in_cams(linear_map_top, num_cams); | ||
551 | |||
552 | /* limit memory so we dont have linear faults */ | ||
553 | memblock_enforce_memory_limit(linear_map_top); | ||
554 | memblock_analyze(); | ||
555 | } | ||
556 | #endif | ||
557 | |||
544 | /* A sync won't hurt us after mucking around with | 558 | /* A sync won't hurt us after mucking around with |
545 | * the MMU configuration | 559 | * the MMU configuration |
546 | */ | 560 | */ |
diff --git a/arch/powerpc/mm/tlb_nohash_low.S b/arch/powerpc/mm/tlb_nohash_low.S index b9d9fed8f36e..af405eefe48d 100644 --- a/arch/powerpc/mm/tlb_nohash_low.S +++ b/arch/powerpc/mm/tlb_nohash_low.S | |||
@@ -367,7 +367,7 @@ _GLOBAL(set_context) | |||
367 | #error Unsupported processor type ! | 367 | #error Unsupported processor type ! |
368 | #endif | 368 | #endif |
369 | 369 | ||
370 | #if defined(CONFIG_FSL_BOOKE) | 370 | #if defined(CONFIG_PPC_FSL_BOOK3E) |
371 | /* | 371 | /* |
372 | * extern void loadcam_entry(unsigned int index) | 372 | * extern void loadcam_entry(unsigned int index) |
373 | * | 373 | * |