xref: /linux-6.15/arch/nios2/include/asm/pgalloc.h (revision f9cb654c)
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*f9cb654cSMike Rapoport #include <asm-generic/pgalloc.h>
16fc7835c2SMike 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 #define __pte_free_tlb(tlb, pte, addr)				\
38cbd15b3fSLey Foon Tan 	do {							\
39b4ed71f5SMark Rutland 		pgtable_pte_page_dtor(pte);			\
40cbd15b3fSLey Foon Tan 		tlb_remove_page((tlb), (pte));			\
41cbd15b3fSLey Foon Tan 	} while (0)
42cbd15b3fSLey Foon Tan 
43cbd15b3fSLey Foon Tan #endif /* _ASM_NIOS2_PGALLOC_H */
44