diff options
author | Paul Mackerras <paulus@samba.org> | 2007-11-07 22:28:14 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-11-07 22:28:14 -0500 |
commit | 688016f4e2028e3c2c27e959ad001536e10ee2c5 (patch) | |
tree | f45baa7b2c115f1297b4ad8d30b306204ef5e537 /arch/powerpc/mm | |
parent | 2c84b4076c0cbbc44ffea2ae1da2a801fb23f081 (diff) | |
parent | 29273158f82020241d9a6539d6cef9cf926654c9 (diff) |
Merge branch 'for-2.6.24' of master.kernel.org:/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx into merge
Diffstat (limited to 'arch/powerpc/mm')
-rw-r--r-- | arch/powerpc/mm/40x_mmu.c | 17 | ||||
-rw-r--r-- | arch/powerpc/mm/44x_mmu.c | 1 | ||||
-rw-r--r-- | arch/powerpc/mm/fault.c | 2 | ||||
-rw-r--r-- | arch/powerpc/mm/mmu_decl.h | 4 |
4 files changed, 12 insertions, 12 deletions
diff --git a/arch/powerpc/mm/40x_mmu.c b/arch/powerpc/mm/40x_mmu.c index e067df836be2..3899ea97fbdf 100644 --- a/arch/powerpc/mm/40x_mmu.c +++ b/arch/powerpc/mm/40x_mmu.c | |||
@@ -98,13 +98,12 @@ unsigned long __init mmu_mapin_ram(void) | |||
98 | 98 | ||
99 | v = KERNELBASE; | 99 | v = KERNELBASE; |
100 | p = PPC_MEMSTART; | 100 | p = PPC_MEMSTART; |
101 | s = 0; | 101 | s = total_lowmem; |
102 | 102 | ||
103 | if (__map_without_ltlbs) { | 103 | if (__map_without_ltlbs) |
104 | return s; | 104 | return 0; |
105 | } | ||
106 | 105 | ||
107 | while (s <= (total_lowmem - LARGE_PAGE_SIZE_16M)) { | 106 | while (s >= LARGE_PAGE_SIZE_16M) { |
108 | pmd_t *pmdp; | 107 | pmd_t *pmdp; |
109 | unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE; | 108 | unsigned long val = p | _PMD_SIZE_16M | _PAGE_HWEXEC | _PAGE_HWWRITE; |
110 | 109 | ||
@@ -116,10 +115,10 @@ unsigned long __init mmu_mapin_ram(void) | |||
116 | 115 | ||
117 | v += LARGE_PAGE_SIZE_16M; | 116 | v += LARGE_PAGE_SIZE_16M; |
118 | p += LARGE_PAGE_SIZE_16M; | 117 | p += LARGE_PAGE_SIZE_16M; |
119 | s += LARGE_PAGE_SIZE_16M; | 118 | s -= LARGE_PAGE_SIZE_16M; |
120 | } | 119 | } |
121 | 120 | ||
122 | while (s <= (total_lowmem - LARGE_PAGE_SIZE_4M)) { | 121 | while (s >= LARGE_PAGE_SIZE_4M) { |
123 | pmd_t *pmdp; | 122 | pmd_t *pmdp; |
124 | unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE; | 123 | unsigned long val = p | _PMD_SIZE_4M | _PAGE_HWEXEC | _PAGE_HWWRITE; |
125 | 124 | ||
@@ -128,8 +127,8 @@ unsigned long __init mmu_mapin_ram(void) | |||
128 | 127 | ||
129 | v += LARGE_PAGE_SIZE_4M; | 128 | v += LARGE_PAGE_SIZE_4M; |
130 | p += LARGE_PAGE_SIZE_4M; | 129 | p += LARGE_PAGE_SIZE_4M; |
131 | s += LARGE_PAGE_SIZE_4M; | 130 | s -= LARGE_PAGE_SIZE_4M; |
132 | } | 131 | } |
133 | 132 | ||
134 | return s; | 133 | return total_lowmem - s; |
135 | } | 134 | } |
diff --git a/arch/powerpc/mm/44x_mmu.c b/arch/powerpc/mm/44x_mmu.c index c3df50476539..04dc08798d3d 100644 --- a/arch/powerpc/mm/44x_mmu.c +++ b/arch/powerpc/mm/44x_mmu.c | |||
@@ -35,6 +35,7 @@ | |||
35 | */ | 35 | */ |
36 | unsigned int tlb_44x_index; /* = 0 */ | 36 | unsigned int tlb_44x_index; /* = 0 */ |
37 | unsigned int tlb_44x_hwater = PPC44x_TLB_SIZE - 1 - PPC44x_EARLY_TLBS; | 37 | unsigned int tlb_44x_hwater = PPC44x_TLB_SIZE - 1 - PPC44x_EARLY_TLBS; |
38 | int icache_44x_need_flush; | ||
38 | 39 | ||
39 | /* | 40 | /* |
40 | * "Pins" a 256MB TLB entry in AS0 for kernel lowmem | 41 | * "Pins" a 256MB TLB entry in AS0 for kernel lowmem |
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index a18fda361cc0..8135da06e0a4 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -309,7 +309,7 @@ good_area: | |||
309 | set_bit(PG_arch_1, &page->flags); | 309 | set_bit(PG_arch_1, &page->flags); |
310 | } | 310 | } |
311 | pte_update(ptep, 0, _PAGE_HWEXEC); | 311 | pte_update(ptep, 0, _PAGE_HWEXEC); |
312 | _tlbie(address); | 312 | _tlbie(address, mm->context.id); |
313 | pte_unmap_unlock(ptep, ptl); | 313 | pte_unmap_unlock(ptep, ptl); |
314 | up_read(&mm->mmap_sem); | 314 | up_read(&mm->mmap_sem); |
315 | return 0; | 315 | return 0; |
diff --git a/arch/powerpc/mm/mmu_decl.h b/arch/powerpc/mm/mmu_decl.h index c94a64fd3c01..eb3a732e91db 100644 --- a/arch/powerpc/mm/mmu_decl.h +++ b/arch/powerpc/mm/mmu_decl.h | |||
@@ -61,12 +61,12 @@ extern unsigned long total_lowmem; | |||
61 | #define mmu_mapin_ram() (0UL) | 61 | #define mmu_mapin_ram() (0UL) |
62 | 62 | ||
63 | #elif defined(CONFIG_4xx) | 63 | #elif defined(CONFIG_4xx) |
64 | #define flush_HPTE(X, va, pg) _tlbie(va) | 64 | #define flush_HPTE(pid, va, pg) _tlbie(va, pid) |
65 | extern void MMU_init_hw(void); | 65 | extern void MMU_init_hw(void); |
66 | extern unsigned long mmu_mapin_ram(void); | 66 | extern unsigned long mmu_mapin_ram(void); |
67 | 67 | ||
68 | #elif defined(CONFIG_FSL_BOOKE) | 68 | #elif defined(CONFIG_FSL_BOOKE) |
69 | #define flush_HPTE(X, va, pg) _tlbie(va) | 69 | #define flush_HPTE(pid, va, pg) _tlbie(va, pid) |
70 | extern void MMU_init_hw(void); | 70 | extern void MMU_init_hw(void); |
71 | extern unsigned long mmu_mapin_ram(void); | 71 | extern unsigned long mmu_mapin_ram(void); |
72 | extern void adjust_total_lowmem(void); | 72 | extern void adjust_total_lowmem(void); |