aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/mm/srmmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/mm/srmmu.c')
-rw-r--r--arch/sparc/mm/srmmu.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index dc98e3844a0a..23d3291a3e81 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -489,14 +489,17 @@ srmmu_pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address)
489 return (pte_t *)srmmu_get_nocache(PTE_SIZE, PTE_SIZE); 489 return (pte_t *)srmmu_get_nocache(PTE_SIZE, PTE_SIZE);
490} 490}
491 491
492static struct page * 492static pgtable_t
493srmmu_pte_alloc_one(struct mm_struct *mm, unsigned long address) 493srmmu_pte_alloc_one(struct mm_struct *mm, unsigned long address)
494{ 494{
495 unsigned long pte; 495 unsigned long pte;
496 struct page *page;
496 497
497 if ((pte = (unsigned long)srmmu_pte_alloc_one_kernel(mm, address)) == 0) 498 if ((pte = (unsigned long)srmmu_pte_alloc_one_kernel(mm, address)) == 0)
498 return NULL; 499 return NULL;
499 return pfn_to_page( __nocache_pa(pte) >> PAGE_SHIFT ); 500 page = pfn_to_page( __nocache_pa(pte) >> PAGE_SHIFT );
501 pgtable_page_ctor(page);
502 return page;
500} 503}
501 504
502static void srmmu_free_pte_fast(pte_t *pte) 505static void srmmu_free_pte_fast(pte_t *pte)
@@ -504,10 +507,11 @@ static void srmmu_free_pte_fast(pte_t *pte)
504 srmmu_free_nocache((unsigned long)pte, PTE_SIZE); 507 srmmu_free_nocache((unsigned long)pte, PTE_SIZE);
505} 508}
506 509
507static void srmmu_pte_free(struct page *pte) 510static void srmmu_pte_free(pgtable_t pte)
508{ 511{
509 unsigned long p; 512 unsigned long p;
510 513
514 pgtable_page_dtor(pte);
511 p = (unsigned long)page_address(pte); /* Cached address (for test) */ 515 p = (unsigned long)page_address(pte); /* Cached address (for test) */
512 if (p == 0) 516 if (p == 0)
513 BUG(); 517 BUG();