1cbd15b3fSLey Foon Tan /* 2cbd15b3fSLey Foon Tan * This file is subject to the terms and conditions of the GNU General Public 3cbd15b3fSLey Foon Tan * License. See the file "COPYING" in the main directory of this archive 4cbd15b3fSLey Foon Tan * for more details. 5cbd15b3fSLey Foon Tan * 6cbd15b3fSLey Foon Tan * Copyright (C) 1994 - 2001, 2003 by Ralf Baechle 7cbd15b3fSLey Foon Tan * Copyright (C) 1999, 2000, 2001 Silicon Graphics, Inc. 8cbd15b3fSLey Foon Tan */ 9cbd15b3fSLey Foon Tan 10cbd15b3fSLey Foon Tan #ifndef _ASM_NIOS2_PGALLOC_H 11cbd15b3fSLey Foon Tan #define _ASM_NIOS2_PGALLOC_H 12cbd15b3fSLey Foon Tan 13cbd15b3fSLey Foon Tan #include <linux/mm.h> 14cbd15b3fSLey Foon Tan 15*fc7835c2SMike Rapoport #include <asm-generic/pgalloc.h> /* for pte_{alloc,free}_one */ 16*fc7835c2SMike Rapoport 17cbd15b3fSLey Foon Tan static inline void pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, 18cbd15b3fSLey Foon Tan pte_t *pte) 19cbd15b3fSLey Foon Tan { 20cbd15b3fSLey Foon Tan set_pmd(pmd, __pmd((unsigned long)pte)); 21cbd15b3fSLey Foon Tan } 22cbd15b3fSLey Foon Tan 23cbd15b3fSLey Foon Tan static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, 24cbd15b3fSLey Foon Tan pgtable_t pte) 25cbd15b3fSLey Foon Tan { 26cbd15b3fSLey Foon Tan set_pmd(pmd, __pmd((unsigned long)page_address(pte))); 27cbd15b3fSLey Foon Tan } 28cbd15b3fSLey Foon Tan #define pmd_pgtable(pmd) pmd_page(pmd) 29cbd15b3fSLey Foon Tan 30cbd15b3fSLey Foon Tan /* 31cbd15b3fSLey Foon Tan * Initialize a new pmd table with invalid pointers. 32cbd15b3fSLey Foon Tan */ 33cbd15b3fSLey Foon Tan extern void pmd_init(unsigned long page, unsigned long pagetable); 34cbd15b3fSLey Foon Tan 35cbd15b3fSLey Foon Tan extern pgd_t *pgd_alloc(struct mm_struct *mm); 36cbd15b3fSLey Foon Tan 37cbd15b3fSLey Foon Tan static inline void pgd_free(struct mm_struct *mm, pgd_t *pgd) 38cbd15b3fSLey Foon Tan { 39cbd15b3fSLey Foon Tan free_pages((unsigned long)pgd, PGD_ORDER); 40cbd15b3fSLey Foon Tan } 41cbd15b3fSLey Foon Tan 42cbd15b3fSLey Foon Tan #define __pte_free_tlb(tlb, pte, addr) \ 43cbd15b3fSLey Foon Tan do { \ 44cbd15b3fSLey Foon Tan pgtable_page_dtor(pte); \ 45cbd15b3fSLey Foon Tan tlb_remove_page((tlb), (pte)); \ 46cbd15b3fSLey Foon Tan } while (0) 47cbd15b3fSLey Foon Tan 48cbd15b3fSLey Foon Tan #define check_pgt_cache() do { } while (0) 49cbd15b3fSLey Foon Tan 50cbd15b3fSLey Foon Tan #endif /* _ASM_NIOS2_PGALLOC_H */ 51