1
2
3
4
5
6
7 #include <linux/kernel.h>
8 #include <asm/pgtable.h>
9
10 #include "ptdump.h"
11
12 static const struct flag_info flag_array[] = {
13 {
14 .mask = _PAGE_USER,
15 .val = _PAGE_USER,
16 .set = "user",
17 .clear = " ",
18 }, {
19 .mask = _PAGE_RW,
20 .val = _PAGE_RW,
21 .set = "rw",
22 .clear = "r ",
23 }, {
24 .mask = _PAGE_EXEC,
25 .val = _PAGE_EXEC,
26 .set = " X ",
27 .clear = " ",
28 }, {
29 .mask = _PAGE_PRESENT,
30 .val = _PAGE_PRESENT,
31 .set = "present",
32 .clear = " ",
33 }, {
34 .mask = _PAGE_GUARDED,
35 .val = _PAGE_GUARDED,
36 .set = "guarded",
37 .clear = " ",
38 }, {
39 .mask = _PAGE_DIRTY,
40 .val = _PAGE_DIRTY,
41 .set = "dirty",
42 .clear = " ",
43 }, {
44 .mask = _PAGE_ACCESSED,
45 .val = _PAGE_ACCESSED,
46 .set = "accessed",
47 .clear = " ",
48 }, {
49 .mask = _PAGE_WRITETHRU,
50 .val = _PAGE_WRITETHRU,
51 .set = "write through",
52 .clear = " ",
53 }, {
54 .mask = _PAGE_NO_CACHE,
55 .val = _PAGE_NO_CACHE,
56 .set = "no cache",
57 .clear = " ",
58 }, {
59 .mask = _PAGE_SPECIAL,
60 .val = _PAGE_SPECIAL,
61 .set = "special",
62 }
63 };
64
65 struct pgtable_level pg_level[5] = {
66 {
67 }, {
68 .flag = flag_array,
69 .num = ARRAY_SIZE(flag_array),
70 }, {
71 .flag = flag_array,
72 .num = ARRAY_SIZE(flag_array),
73 }, {
74 .flag = flag_array,
75 .num = ARRAY_SIZE(flag_array),
76 }, {
77 .flag = flag_array,
78 .num = ARRAY_SIZE(flag_array),
79 },
80 };