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_SH,
15 .val = 0,
16 .set = "user",
17 .clear = " ",
18 }, {
19 .mask = _PAGE_RO | _PAGE_NA,
20 .val = 0,
21 .set = "rw",
22 }, {
23 .mask = _PAGE_RO | _PAGE_NA,
24 .val = _PAGE_RO,
25 .set = "r ",
26 }, {
27 .mask = _PAGE_RO | _PAGE_NA,
28 .val = _PAGE_NA,
29 .set = " ",
30 }, {
31 .mask = _PAGE_EXEC,
32 .val = _PAGE_EXEC,
33 .set = " X ",
34 .clear = " ",
35 }, {
36 .mask = _PAGE_PRESENT,
37 .val = _PAGE_PRESENT,
38 .set = "present",
39 .clear = " ",
40 }, {
41 .mask = _PAGE_GUARDED,
42 .val = _PAGE_GUARDED,
43 .set = "guarded",
44 .clear = " ",
45 }, {
46 .mask = _PAGE_DIRTY,
47 .val = _PAGE_DIRTY,
48 .set = "dirty",
49 .clear = " ",
50 }, {
51 .mask = _PAGE_ACCESSED,
52 .val = _PAGE_ACCESSED,
53 .set = "accessed",
54 .clear = " ",
55 }, {
56 .mask = _PAGE_NO_CACHE,
57 .val = _PAGE_NO_CACHE,
58 .set = "no cache",
59 .clear = " ",
60 }, {
61 .mask = _PAGE_SPECIAL,
62 .val = _PAGE_SPECIAL,
63 .set = "special",
64 }
65 };
66
67 struct pgtable_level pg_level[5] = {
68 {
69 }, {
70 .flag = flag_array,
71 .num = ARRAY_SIZE(flag_array),
72 }, {
73 .flag = flag_array,
74 .num = ARRAY_SIZE(flag_array),
75 }, {
76 .flag = flag_array,
77 .num = ARRAY_SIZE(flag_array),
78 }, {
79 .flag = flag_array,
80 .num = ARRAY_SIZE(flag_array),
81 },
82 };