Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sh/mm/hugetlbpage.c
10817 views
1
/*
2
* arch/sh/mm/hugetlbpage.c
3
*
4
* SuperH HugeTLB page support.
5
*
6
* Cloned from sparc64 by Paul Mundt.
7
*
8
* Copyright (C) 2002, 2003 David S. Miller ([email protected])
9
*/
10
11
#include <linux/init.h>
12
#include <linux/fs.h>
13
#include <linux/mm.h>
14
#include <linux/hugetlb.h>
15
#include <linux/pagemap.h>
16
#include <linux/sysctl.h>
17
18
#include <asm/mman.h>
19
#include <asm/pgalloc.h>
20
#include <asm/tlb.h>
21
#include <asm/tlbflush.h>
22
#include <asm/cacheflush.h>
23
24
pte_t *huge_pte_alloc(struct mm_struct *mm,
25
unsigned long addr, unsigned long sz)
26
{
27
pgd_t *pgd;
28
pud_t *pud;
29
pmd_t *pmd;
30
pte_t *pte = NULL;
31
32
pgd = pgd_offset(mm, addr);
33
if (pgd) {
34
pud = pud_alloc(mm, pgd, addr);
35
if (pud) {
36
pmd = pmd_alloc(mm, pud, addr);
37
if (pmd)
38
pte = pte_alloc_map(mm, NULL, pmd, addr);
39
}
40
}
41
42
return pte;
43
}
44
45
pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
46
{
47
pgd_t *pgd;
48
pud_t *pud;
49
pmd_t *pmd;
50
pte_t *pte = NULL;
51
52
pgd = pgd_offset(mm, addr);
53
if (pgd) {
54
pud = pud_offset(pgd, addr);
55
if (pud) {
56
pmd = pmd_offset(pud, addr);
57
if (pmd)
58
pte = pte_offset_map(pmd, addr);
59
}
60
}
61
62
return pte;
63
}
64
65
int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
66
{
67
return 0;
68
}
69
70
struct page *follow_huge_addr(struct mm_struct *mm,
71
unsigned long address, int write)
72
{
73
return ERR_PTR(-EINVAL);
74
}
75
76
int pmd_huge(pmd_t pmd)
77
{
78
return 0;
79
}
80
81
int pud_huge(pud_t pud)
82
{
83
return 0;
84
}
85
86
struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address,
87
pmd_t *pmd, int write)
88
{
89
return NULL;
90
}
91
92