OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [sh64/] [mm/] [hugetlbpage.c] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 * arch/sh64/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 (davem@redhat.com)
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/slab.h>
17
#include <linux/sysctl.h>
18
 
19
#include <asm/mman.h>
20
#include <asm/pgalloc.h>
21
#include <asm/tlb.h>
22
#include <asm/tlbflush.h>
23
#include <asm/cacheflush.h>
24
 
25
pte_t *huge_pte_alloc(struct mm_struct *mm, unsigned long addr)
26
{
27
        pgd_t *pgd;
28
        pmd_t *pmd;
29
        pte_t *pte = NULL;
30
 
31
        pgd = pgd_offset(mm, addr);
32
        if (pgd) {
33
                pmd = pmd_alloc(mm, pgd, addr);
34
                if (pmd)
35
                        pte = pte_alloc_map(mm, pmd, addr);
36
        }
37
        return pte;
38
}
39
 
40
pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr)
41
{
42
        pgd_t *pgd;
43
        pmd_t *pmd;
44
        pte_t *pte = NULL;
45
 
46
        pgd = pgd_offset(mm, addr);
47
        if (pgd) {
48
                pmd = pmd_offset(pgd, addr);
49
                if (pmd)
50
                        pte = pte_offset_map(pmd, addr);
51
        }
52
        return pte;
53
}
54
 
55
int huge_pmd_unshare(struct mm_struct *mm, unsigned long *addr, pte_t *ptep)
56
{
57
        return 0;
58
}
59
 
60
void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
61
                     pte_t *ptep, pte_t entry)
62
{
63
        int i;
64
 
65
        for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
66
                set_pte_at(mm, addr, ptep, entry);
67
                ptep++;
68
                addr += PAGE_SIZE;
69
                pte_val(entry) += PAGE_SIZE;
70
        }
71
}
72
 
73
pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
74
                              pte_t *ptep)
75
{
76
        pte_t entry;
77
        int i;
78
 
79
        entry = *ptep;
80
 
81
        for (i = 0; i < (1 << HUGETLB_PAGE_ORDER); i++) {
82
                pte_clear(mm, addr, ptep);
83
                addr += PAGE_SIZE;
84
                ptep++;
85
        }
86
 
87
        return entry;
88
}
89
 
90
struct page *follow_huge_addr(struct mm_struct *mm,
91
                              unsigned long address, int write)
92
{
93
        return ERR_PTR(-EINVAL);
94
}
95
 
96
int pmd_huge(pmd_t pmd)
97
{
98
        return 0;
99
}
100
 
101
struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address,
102
                             pmd_t *pmd, int write)
103
{
104
        return NULL;
105
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.