xref: /openbmc/linux/arch/alpha/include/asm/pgalloc.h (revision 762f99f4f3cb41a775b5157dd761217beba65873)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2024b246eSLinus Torvalds #ifndef _ALPHA_PGALLOC_H
3024b246eSLinus Torvalds #define _ALPHA_PGALLOC_H
4024b246eSLinus Torvalds 
5024b246eSLinus Torvalds #include <linux/mm.h>
6024b246eSLinus Torvalds #include <linux/mmzone.h>
7024b246eSLinus Torvalds 
8*1355c31eSMike Rapoport #include <asm-generic/pgalloc.h>
9bc3ace9bSMike Rapoport 
10024b246eSLinus Torvalds /*
11024b246eSLinus Torvalds  * Allocate and free page tables. The xxx_kernel() versions are
12024b246eSLinus Torvalds  * used to allocate a kernel page table - this turns on ASN bits
13024b246eSLinus Torvalds  * if any.
14024b246eSLinus Torvalds  */
15024b246eSLinus Torvalds 
16024b246eSLinus Torvalds static inline void
pmd_populate(struct mm_struct * mm,pmd_t * pmd,pgtable_t pte)17024b246eSLinus Torvalds pmd_populate(struct mm_struct *mm, pmd_t *pmd, pgtable_t pte)
18024b246eSLinus Torvalds {
19024b246eSLinus Torvalds 	pmd_set(pmd, (pte_t *)(page_to_pa(pte) + PAGE_OFFSET));
20024b246eSLinus Torvalds }
21024b246eSLinus Torvalds 
22024b246eSLinus Torvalds static inline void
pmd_populate_kernel(struct mm_struct * mm,pmd_t * pmd,pte_t * pte)23024b246eSLinus Torvalds pmd_populate_kernel(struct mm_struct *mm, pmd_t *pmd, pte_t *pte)
24024b246eSLinus Torvalds {
25024b246eSLinus Torvalds 	pmd_set(pmd, pte);
26024b246eSLinus Torvalds }
27024b246eSLinus Torvalds 
28024b246eSLinus Torvalds static inline void
pud_populate(struct mm_struct * mm,pud_t * pud,pmd_t * pmd)29a73c9489SMike Rapoport pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
30024b246eSLinus Torvalds {
31a73c9489SMike Rapoport 	pud_set(pud, pmd);
32024b246eSLinus Torvalds }
33024b246eSLinus Torvalds 
34024b246eSLinus Torvalds extern pgd_t *pgd_alloc(struct mm_struct *mm);
35024b246eSLinus Torvalds 
36024b246eSLinus Torvalds #endif /* _ALPHA_PGALLOC_H */
37