0001
0002
0003
0004
0005
0006
0007 #include <linux/kernel.h>
0008 #include <linux/pgtable.h>
0009
0010 #include "ptdump.h"
0011
0012 static const struct flag_info flag_array[] = {
0013 {
0014 .mask = _PAGE_USER,
0015 .val = _PAGE_USER,
0016 .set = "user",
0017 .clear = " ",
0018 }, {
0019 .mask = _PAGE_RW,
0020 .val = 0,
0021 .set = "r ",
0022 .clear = "rw",
0023 }, {
0024 .mask = _PAGE_EXEC,
0025 .val = _PAGE_EXEC,
0026 .set = " X ",
0027 .clear = " ",
0028 }, {
0029 .mask = _PAGE_PRESENT,
0030 .val = _PAGE_PRESENT,
0031 .set = "present",
0032 .clear = " ",
0033 }, {
0034 .mask = _PAGE_COHERENT,
0035 .val = _PAGE_COHERENT,
0036 .set = "coherent",
0037 .clear = " ",
0038 }, {
0039 .mask = _PAGE_GUARDED,
0040 .val = _PAGE_GUARDED,
0041 .set = "guarded",
0042 .clear = " ",
0043 }, {
0044 .mask = _PAGE_DIRTY,
0045 .val = _PAGE_DIRTY,
0046 .set = "dirty",
0047 .clear = " ",
0048 }, {
0049 .mask = _PAGE_ACCESSED,
0050 .val = _PAGE_ACCESSED,
0051 .set = "accessed",
0052 .clear = " ",
0053 }, {
0054 .mask = _PAGE_WRITETHRU,
0055 .val = _PAGE_WRITETHRU,
0056 .set = "write through",
0057 .clear = " ",
0058 }, {
0059 .mask = _PAGE_NO_CACHE,
0060 .val = _PAGE_NO_CACHE,
0061 .set = "no cache",
0062 .clear = " ",
0063 }, {
0064 .mask = _PAGE_SPECIAL,
0065 .val = _PAGE_SPECIAL,
0066 .set = "special",
0067 }
0068 };
0069
0070 struct pgtable_level pg_level[5] = {
0071 {
0072 .flag = flag_array,
0073 .num = ARRAY_SIZE(flag_array),
0074 }, {
0075 .flag = flag_array,
0076 .num = ARRAY_SIZE(flag_array),
0077 }, {
0078 .flag = flag_array,
0079 .num = ARRAY_SIZE(flag_array),
0080 }, {
0081 .flag = flag_array,
0082 .num = ARRAY_SIZE(flag_array),
0083 }, {
0084 .flag = flag_array,
0085 .num = ARRAY_SIZE(flag_array),
0086 },
0087 };