Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/um/include/asm/pgalloc.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/*
3
* Copyright (C) 2000, 2001, 2002 Jeff Dike ([email protected])
4
* Copyright 2003 PathScale, Inc.
5
* Derived from include/asm-i386/pgalloc.h and include/asm-i386/pgtable.h
6
*/
7
8
#ifndef __UM_PGALLOC_H
9
#define __UM_PGALLOC_H
10
11
#include <linux/mm.h>
12
13
#include <asm-generic/pgalloc.h>
14
15
#define pmd_populate_kernel(mm, pmd, pte) \
16
set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))
17
18
#define pmd_populate(mm, pmd, pte) \
19
set_pmd(pmd, __pmd(_PAGE_TABLE + \
20
((unsigned long long)page_to_pfn(pte) << \
21
(unsigned long long) PAGE_SHIFT)))
22
23
/*
24
* Allocate and free page tables.
25
*/
26
extern pgd_t *pgd_alloc(struct mm_struct *);
27
28
#define __pte_free_tlb(tlb, pte, address) \
29
tlb_remove_ptdesc((tlb), page_ptdesc(pte))
30
31
#if CONFIG_PGTABLE_LEVELS > 2
32
33
#define __pmd_free_tlb(tlb, pmd, address) \
34
tlb_remove_ptdesc((tlb), virt_to_ptdesc(pmd))
35
36
#if CONFIG_PGTABLE_LEVELS > 3
37
38
#define __pud_free_tlb(tlb, pud, address) \
39
tlb_remove_ptdesc((tlb), virt_to_ptdesc(pud))
40
41
#endif
42
#endif
43
44
#endif
45
46
47