diff options
-rw-r--r-- | arch/arm/include/asm/pgalloc.h | 4 | ||||
-rw-r--r-- | arch/arm/mm/pgd.c | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/arch/arm/include/asm/pgalloc.h b/arch/arm/include/asm/pgalloc.h index 22de005f159c..9a8099ed3ade 100644 --- a/arch/arm/include/asm/pgalloc.h +++ b/arch/arm/include/asm/pgalloc.h @@ -64,8 +64,10 @@ pte_alloc_one_kernel(struct mm_struct *mm, unsigned long addr) pte_t *pte; pte = (pte_t *)__get_free_page(PGALLOC_GFP); +#if !defined(CONFIG_CPU_CACHE_V7) || !defined(CONFIG_SMP) if (pte) clean_pte_table(pte); +#endif return pte; } @@ -81,8 +83,10 @@ pte_alloc_one(struct mm_struct *mm, unsigned long addr) pte = alloc_pages(PGALLOC_GFP, 0); #endif if (pte) { +#if !defined(CONFIG_CPU_CACHE_V7) || !defined(CONFIG_SMP) if (!PageHighMem(pte)) clean_pte_table(page_address(pte)); +#endif pgtable_page_ctor(pte); } diff --git a/arch/arm/mm/pgd.c b/arch/arm/mm/pgd.c index b2027c154b2a..ad249e98a942 100644 --- a/arch/arm/mm/pgd.c +++ b/arch/arm/mm/pgd.c @@ -40,8 +40,9 @@ pgd_t *pgd_alloc(struct mm_struct *mm) memcpy(new_pgd + USER_PTRS_PER_PGD, init_pgd + USER_PTRS_PER_PGD, (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); +#if !defined(CONFIG_CPU_CACHE_V7) || !defined(CONFIG_SMP) clean_dcache_area(new_pgd, PTRS_PER_PGD * sizeof(pgd_t)); - +#endif if (!vectors_high()) { /* * On ARM, first page must always be allocated since it |