|
@@ -23,7 +23,19 @@
|
|
|
|
|
|
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
|
|
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
|
|
pgd_t swapper_pg_dir[PTRS_PER_PGD];
|
|
pgd_t swapper_pg_dir[PTRS_PER_PGD];
|
|
-unsigned long cached_to_uncached = 0;
|
|
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_SUPERH32
|
|
|
|
+/*
|
|
|
|
+ * Handle trivial transitions between cached and uncached
|
|
|
|
+ * segments, making use of the 1:1 mapping relationship in
|
|
|
|
+ * 512MB lowmem.
|
|
|
|
+ *
|
|
|
|
+ * This is the offset of the uncached section from its cached alias.
|
|
|
|
+ * Default value only valid in 29 bit mode, in 32bit mode will be
|
|
|
|
+ * overridden in pmb_init.
|
|
|
|
+ */
|
|
|
|
+unsigned long cached_to_uncached = P2SEG - P1SEG;
|
|
|
|
+#endif
|
|
|
|
|
|
#ifdef CONFIG_MMU
|
|
#ifdef CONFIG_MMU
|
|
static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
|
|
static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
|
|
@@ -58,9 +70,7 @@ static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
|
|
}
|
|
}
|
|
|
|
|
|
set_pte(pte, pfn_pte(phys >> PAGE_SHIFT, prot));
|
|
set_pte(pte, pfn_pte(phys >> PAGE_SHIFT, prot));
|
|
-
|
|
|
|
- if (cached_to_uncached)
|
|
|
|
- flush_tlb_one(get_asid(), addr);
|
|
|
|
|
|
+ flush_tlb_one(get_asid(), addr);
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
/*
|
|
@@ -165,15 +175,6 @@ void __init paging_init(void)
|
|
#ifdef CONFIG_SUPERH32
|
|
#ifdef CONFIG_SUPERH32
|
|
/* Set up the uncached fixmap */
|
|
/* Set up the uncached fixmap */
|
|
set_fixmap_nocache(FIX_UNCACHED, __pa(&__uncached_start));
|
|
set_fixmap_nocache(FIX_UNCACHED, __pa(&__uncached_start));
|
|
-
|
|
|
|
-#ifdef CONFIG_29BIT
|
|
|
|
- /*
|
|
|
|
- * Handle trivial transitions between cached and uncached
|
|
|
|
- * segments, making use of the 1:1 mapping relationship in
|
|
|
|
- * 512MB lowmem.
|
|
|
|
- */
|
|
|
|
- cached_to_uncached = P2SEG - P1SEG;
|
|
|
|
-#endif
|
|
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|