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 #ifdef CONFIG_PPC_16K_PAGES
0015 .mask = _PAGE_HUGE,
0016 .val = _PAGE_HUGE,
0017 #else
0018 .mask = _PAGE_SPS,
0019 .val = _PAGE_SPS,
0020 #endif
0021 .set = "huge",
0022 .clear = " ",
0023 }, {
0024 .mask = _PAGE_SH,
0025 .val = 0,
0026 .set = "user",
0027 .clear = " ",
0028 }, {
0029 .mask = _PAGE_RO | _PAGE_NA,
0030 .val = 0,
0031 .set = "rw",
0032 }, {
0033 .mask = _PAGE_RO | _PAGE_NA,
0034 .val = _PAGE_RO,
0035 .set = "r ",
0036 }, {
0037 .mask = _PAGE_RO | _PAGE_NA,
0038 .val = _PAGE_NA,
0039 .set = " ",
0040 }, {
0041 .mask = _PAGE_EXEC,
0042 .val = _PAGE_EXEC,
0043 .set = " X ",
0044 .clear = " ",
0045 }, {
0046 .mask = _PAGE_PRESENT,
0047 .val = _PAGE_PRESENT,
0048 .set = "present",
0049 .clear = " ",
0050 }, {
0051 .mask = _PAGE_GUARDED,
0052 .val = _PAGE_GUARDED,
0053 .set = "guarded",
0054 .clear = " ",
0055 }, {
0056 .mask = _PAGE_DIRTY,
0057 .val = _PAGE_DIRTY,
0058 .set = "dirty",
0059 .clear = " ",
0060 }, {
0061 .mask = _PAGE_ACCESSED,
0062 .val = _PAGE_ACCESSED,
0063 .set = "accessed",
0064 .clear = " ",
0065 }, {
0066 .mask = _PAGE_NO_CACHE,
0067 .val = _PAGE_NO_CACHE,
0068 .set = "no cache",
0069 .clear = " ",
0070 }, {
0071 .mask = _PAGE_SPECIAL,
0072 .val = _PAGE_SPECIAL,
0073 .set = "special",
0074 }
0075 };
0076
0077 struct pgtable_level pg_level[5] = {
0078 {
0079 .flag = flag_array,
0080 .num = ARRAY_SIZE(flag_array),
0081 }, {
0082 .flag = flag_array,
0083 .num = ARRAY_SIZE(flag_array),
0084 }, {
0085 .flag = flag_array,
0086 .num = ARRAY_SIZE(flag_array),
0087 }, {
0088 .flag = flag_array,
0089 .num = ARRAY_SIZE(flag_array),
0090 }, {
0091 .flag = flag_array,
0092 .num = ARRAY_SIZE(flag_array),
0093 },
0094 };