1// SPDX-License-Identifier: GPL-2.0
2/*
3 * From split of dump_linuxpagetables.c
4 * Copyright 2016, Rashmica Gupta, IBM Corp.
5 *
6 */
7#include <linux/kernel.h>
8#include <linux/pgtable.h>
9
10#include "ptdump.h"
11
12static const struct flag_info flag_array[] = {
13	{
14		.mask	= _PAGE_READ,
15		.val	= 0,
16		.set	= " ",
17		.clear	= "r",
18	}, {
19		.mask	= _PAGE_WRITE,
20		.val	= 0,
21		.set	= " ",
22		.clear	= "w",
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_COHERENT,
35		.val	= _PAGE_COHERENT,
36		.set	= "coherent",
37		.clear	= "        ",
38	}, {
39		.mask	= _PAGE_GUARDED,
40		.val	= _PAGE_GUARDED,
41		.set	= "guarded",
42		.clear	= "       ",
43	}, {
44		.mask	= _PAGE_DIRTY,
45		.val	= _PAGE_DIRTY,
46		.set	= "dirty",
47		.clear	= "     ",
48	}, {
49		.mask	= _PAGE_ACCESSED,
50		.val	= _PAGE_ACCESSED,
51		.set	= "accessed",
52		.clear	= "        ",
53	}, {
54		.mask	= _PAGE_WRITETHRU,
55		.val	= _PAGE_WRITETHRU,
56		.set	= "write through",
57		.clear	= "             ",
58	}, {
59		.mask	= _PAGE_NO_CACHE,
60		.val	= _PAGE_NO_CACHE,
61		.set	= "no cache",
62		.clear	= "        ",
63	}, {
64		.mask	= _PAGE_SPECIAL,
65		.val	= _PAGE_SPECIAL,
66		.set	= "special",
67	}
68};
69
70struct pgtable_level pg_level[5] = {
71	{ /* pgd */
72		.flag	= flag_array,
73		.num	= ARRAY_SIZE(flag_array),
74	}, { /* p4d */
75		.flag	= flag_array,
76		.num	= ARRAY_SIZE(flag_array),
77	}, { /* pud */
78		.flag	= flag_array,
79		.num	= ARRAY_SIZE(flag_array),
80	}, { /* pmd */
81		.flag	= flag_array,
82		.num	= ARRAY_SIZE(flag_array),
83	}, { /* pte */
84		.flag	= flag_array,
85		.num	= ARRAY_SIZE(flag_array),
86	},
87};
88