aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/mm/mem.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/mm/mem.c')
-rw-r--r--arch/powerpc/mm/mem.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index e8122447f019..93a5c53e3423 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -220,12 +220,13 @@ void __init do_init_bootmem(void)
220 lmb_size_bytes(&lmb.reserved, i) - 1; 220 lmb_size_bytes(&lmb.reserved, i) - 1;
221 if (addr < total_lowmem) 221 if (addr < total_lowmem)
222 reserve_bootmem(lmb.reserved.region[i].base, 222 reserve_bootmem(lmb.reserved.region[i].base,
223 lmb_size_bytes(&lmb.reserved, i)); 223 lmb_size_bytes(&lmb.reserved, i),
224 BOOTMEM_DEFAULT);
224 else if (lmb.reserved.region[i].base < total_lowmem) { 225 else if (lmb.reserved.region[i].base < total_lowmem) {
225 unsigned long adjusted_size = total_lowmem - 226 unsigned long adjusted_size = total_lowmem -
226 lmb.reserved.region[i].base; 227 lmb.reserved.region[i].base;
227 reserve_bootmem(lmb.reserved.region[i].base, 228 reserve_bootmem(lmb.reserved.region[i].base,
228 adjusted_size); 229 adjusted_size, BOOTMEM_DEFAULT);
229 } 230 }
230 } 231 }
231#else 232#else
@@ -234,7 +235,8 @@ void __init do_init_bootmem(void)
234 /* reserve the sections we're already using */ 235 /* reserve the sections we're already using */
235 for (i = 0; i < lmb.reserved.cnt; i++) 236 for (i = 0; i < lmb.reserved.cnt; i++)
236 reserve_bootmem(lmb.reserved.region[i].base, 237 reserve_bootmem(lmb.reserved.region[i].base,
237 lmb_size_bytes(&lmb.reserved, i)); 238 lmb_size_bytes(&lmb.reserved, i),
239 BOOTMEM_DEFAULT);
238 240
239#endif 241#endif
240 /* XXX need to clip this if using highmem? */ 242 /* XXX need to clip this if using highmem? */
@@ -483,7 +485,12 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long address,
483 */ 485 */
484 _tlbie(address, 0 /* 8xx doesn't care about PID */); 486 _tlbie(address, 0 /* 8xx doesn't care about PID */);
485#endif 487#endif
486 if (!PageReserved(page) 488 /* The _PAGE_USER test should really be _PAGE_EXEC, but
489 * older glibc versions execute some code from no-exec
490 * pages, which for now we are supporting. If exec-only
491 * pages are ever implemented, this will have to change.
492 */
493 if (!PageReserved(page) && (pte_val(pte) & _PAGE_USER)
487 && !test_bit(PG_arch_1, &page->flags)) { 494 && !test_bit(PG_arch_1, &page->flags)) {
488 if (vma->vm_mm == current->active_mm) { 495 if (vma->vm_mm == current->active_mm) {
489 __flush_dcache_icache((void *) address); 496 __flush_dcache_icache((void *) address);