Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
powerpc
include
asm
pgalloc.h
Go to the documentation of this file.
1
#ifndef _ASM_POWERPC_PGALLOC_H
2
#define _ASM_POWERPC_PGALLOC_H
3
#ifdef __KERNEL__
4
5
#include <
linux/mm.h
>
6
7
#ifdef CONFIG_PPC_BOOK3E
8
extern
void
tlb_flush_pgtable(
struct
mmu_gather
*tlb,
unsigned
long
address
);
9
#else
/* CONFIG_PPC_BOOK3E */
10
static
inline
void
tlb_flush_pgtable(
struct
mmu_gather
*tlb,
11
unsigned
long
address
)
12
{
13
}
14
#endif
/* !CONFIG_PPC_BOOK3E */
15
16
static
inline
void
pte_free_kernel
(
struct
mm_struct
*mm,
pte_t
*
pte
)
17
{
18
free_page
((
unsigned
long
)pte);
19
}
20
21
static
inline
void
pte_free
(
struct
mm_struct
*mm,
pgtable_t
ptepage)
22
{
23
pgtable_page_dtor(ptepage);
24
__free_page
(ptepage);
25
}
26
27
#ifdef CONFIG_PPC64
28
#include <
asm/pgalloc-64.h
>
29
#else
30
#include <
asm/pgalloc-32.h
>
31
#endif
32
33
#ifdef CONFIG_SMP
34
struct
mmu_gather
;
35
extern
void
tlb_remove_table
(
struct
mmu_gather
*,
void
*);
36
37
static
inline
void
pgtable_free_tlb(
struct
mmu_gather
*tlb,
void
*
table
,
int
shift)
38
{
39
unsigned
long
pgf = (
unsigned
long
)table;
40
BUG_ON
(shift >
MAX_PGTABLE_INDEX_SIZE
);
41
pgf |= shift;
42
tlb_remove_table
(tlb, (
void
*)pgf);
43
}
44
45
static
inline
void
__tlb_remove_table
(
void
*_table)
46
{
47
void
*table = (
void
*)((
unsigned
long
)_table & ~
MAX_PGTABLE_INDEX_SIZE
);
48
unsigned
shift = (
unsigned
long
)_table &
MAX_PGTABLE_INDEX_SIZE
;
49
50
pgtable_free
(table, shift);
51
}
52
#else
/* CONFIG_SMP */
53
static
inline
void
pgtable_free_tlb(
struct
mmu_gather
*tlb,
void
*table,
unsigned
shift)
54
{
55
pgtable_free
(table, shift);
56
}
57
#endif
/* !CONFIG_SMP */
58
59
static
inline
void
__pte_free_tlb
(
struct
mmu_gather
*tlb,
struct
page
*ptepage,
60
unsigned
long
address
)
61
{
62
tlb_flush_pgtable(tlb, address);
63
pgtable_page_dtor(ptepage);
64
pgtable_free_tlb(tlb,
page_address
(ptepage), 0);
65
}
66
67
#endif
/* __KERNEL__ */
68
#endif
/* _ASM_POWERPC_PGALLOC_H */
Generated on Thu Jan 10 2013 12:50:12 for Linux Kernel by
1.8.2