18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) 48c2ecf20Sopenharmony_ci * Copyright 2003 PathScale, Inc. 58c2ecf20Sopenharmony_ci * Derived from include/asm-i386/pgalloc.h and include/asm-i386/pgtable.h 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef __UM_PGALLOC_H 98c2ecf20Sopenharmony_ci#define __UM_PGALLOC_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/mm.h> 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci#include <asm-generic/pgalloc.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#define pmd_populate_kernel(mm, pmd, pte) \ 168c2ecf20Sopenharmony_ci set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte))) 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#define pmd_populate(mm, pmd, pte) \ 198c2ecf20Sopenharmony_ci set_pmd(pmd, __pmd(_PAGE_TABLE + \ 208c2ecf20Sopenharmony_ci ((unsigned long long)page_to_pfn(pte) << \ 218c2ecf20Sopenharmony_ci (unsigned long long) PAGE_SHIFT))) 228c2ecf20Sopenharmony_ci#define pmd_pgtable(pmd) pmd_page(pmd) 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci/* 258c2ecf20Sopenharmony_ci * Allocate and free page tables. 268c2ecf20Sopenharmony_ci */ 278c2ecf20Sopenharmony_ciextern pgd_t *pgd_alloc(struct mm_struct *); 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci#define __pte_free_tlb(tlb,pte, address) \ 308c2ecf20Sopenharmony_cido { \ 318c2ecf20Sopenharmony_ci pgtable_pte_page_dtor(pte); \ 328c2ecf20Sopenharmony_ci tlb_remove_page((tlb),(pte)); \ 338c2ecf20Sopenharmony_ci} while (0) 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci#ifdef CONFIG_3_LEVEL_PGTABLES 368c2ecf20Sopenharmony_ci 378c2ecf20Sopenharmony_ci#define __pmd_free_tlb(tlb, pmd, address) \ 388c2ecf20Sopenharmony_cido { \ 398c2ecf20Sopenharmony_ci pgtable_pmd_page_dtor(virt_to_page(pmd)); \ 408c2ecf20Sopenharmony_ci tlb_remove_page((tlb),virt_to_page(pmd)); \ 418c2ecf20Sopenharmony_ci} while (0) \ 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci#endif 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci#endif 468c2ecf20Sopenharmony_ci 47