Root/
1 | #ifndef _PGTABLE_NOPUD_H |
2 | #define _PGTABLE_NOPUD_H |
3 | |
4 | #ifndef __ASSEMBLY__ |
5 | |
6 | #define __PAGETABLE_PUD_FOLDED |
7 | |
8 | /* |
9 | * Having the pud type consist of a pgd gets the size right, and allows |
10 | * us to conceptually access the pgd entry that this pud is folded into |
11 | * without casting. |
12 | */ |
13 | typedef struct { pgd_t pgd; } pud_t; |
14 | |
15 | #define PUD_SHIFT PGDIR_SHIFT |
16 | #define PTRS_PER_PUD 1 |
17 | #define PUD_SIZE (1UL << PUD_SHIFT) |
18 | #define PUD_MASK (~(PUD_SIZE-1)) |
19 | |
20 | /* |
21 | * The "pgd_xxx()" functions here are trivial for a folded two-level |
22 | * setup: the pud is never bad, and a pud always exists (as it's folded |
23 | * into the pgd entry) |
24 | */ |
25 | static inline int pgd_none(pgd_t pgd) { return 0; } |
26 | static inline int pgd_bad(pgd_t pgd) { return 0; } |
27 | static inline int pgd_present(pgd_t pgd) { return 1; } |
28 | static inline void pgd_clear(pgd_t *pgd) { } |
29 | #define pud_ERROR(pud) (pgd_ERROR((pud).pgd)) |
30 | |
31 | #define pgd_populate(mm, pgd, pud) do { } while (0) |
32 | /* |
33 | * (puds are folded into pgds so this doesn't get actually called, |
34 | * but the define is needed for a generic inline function.) |
35 | */ |
36 | #define set_pgd(pgdptr, pgdval) set_pud((pud_t *)(pgdptr), (pud_t) { pgdval }) |
37 | |
38 | static inline pud_t * pud_offset(pgd_t * pgd, unsigned long address) |
39 | { |
40 | return (pud_t *)pgd; |
41 | } |
42 | |
43 | #define pud_val(x) (pgd_val((x).pgd)) |
44 | #define __pud(x) ((pud_t) { __pgd(x) } ) |
45 | |
46 | #define pgd_page(pgd) (pud_page((pud_t){ pgd })) |
47 | #define pgd_page_vaddr(pgd) (pud_page_vaddr((pud_t){ pgd })) |
48 | |
49 | /* |
50 | * allocating and freeing a pud is trivial: the 1-entry pud is |
51 | * inside the pgd, so has no extra memory associated with it. |
52 | */ |
53 | #define pud_alloc_one(mm, address) NULL |
54 | #define pud_free(mm, x) do { } while (0) |
55 | #define __pud_free_tlb(tlb, x, a) do { } while (0) |
56 | |
57 | #undef pud_addr_end |
58 | #define pud_addr_end(addr, end) (end) |
59 | |
60 | #endif /* __ASSEMBLY__ */ |
61 | #endif /* _PGTABLE_NOPUD_H */ |
62 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9