xref: /kernel/linux/linux-6.6/arch/powerpc/mm/ptdump/8xx.c (revision 62306a36)
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#ifdef CONFIG_PPC_16K_PAGES
15		.mask	= _PAGE_HUGE,
16		.val	= _PAGE_HUGE,
17#else
18		.mask	= _PAGE_SPS,
19		.val	= _PAGE_SPS,
20#endif
21		.set	= "huge",
22		.clear	= "    ",
23	}, {
24		.mask	= _PAGE_SH,
25		.val	= 0,
26		.set	= "user",
27		.clear	= "    ",
28	}, {
29		.mask	= _PAGE_RO | _PAGE_NA,
30		.val	= 0,
31		.set	= "rw",
32	}, {
33		.mask	= _PAGE_RO | _PAGE_NA,
34		.val	= _PAGE_RO,
35		.set	= "r ",
36	}, {
37		.mask	= _PAGE_RO | _PAGE_NA,
38		.val	= _PAGE_NA,
39		.set	= "  ",
40	}, {
41		.mask	= _PAGE_EXEC,
42		.val	= _PAGE_EXEC,
43		.set	= " X ",
44		.clear	= "   ",
45	}, {
46		.mask	= _PAGE_PRESENT,
47		.val	= _PAGE_PRESENT,
48		.set	= "present",
49		.clear	= "       ",
50	}, {
51		.mask	= _PAGE_GUARDED,
52		.val	= _PAGE_GUARDED,
53		.set	= "guarded",
54		.clear	= "       ",
55	}, {
56		.mask	= _PAGE_DIRTY,
57		.val	= _PAGE_DIRTY,
58		.set	= "dirty",
59		.clear	= "     ",
60	}, {
61		.mask	= _PAGE_ACCESSED,
62		.val	= _PAGE_ACCESSED,
63		.set	= "accessed",
64		.clear	= "        ",
65	}, {
66		.mask	= _PAGE_NO_CACHE,
67		.val	= _PAGE_NO_CACHE,
68		.set	= "no cache",
69		.clear	= "        ",
70	}, {
71		.mask	= _PAGE_SPECIAL,
72		.val	= _PAGE_SPECIAL,
73		.set	= "special",
74	}
75};
76
77struct pgtable_level pg_level[5] = {
78	{ /* pgd */
79		.flag	= flag_array,
80		.num	= ARRAY_SIZE(flag_array),
81	}, { /* p4d */
82		.flag	= flag_array,
83		.num	= ARRAY_SIZE(flag_array),
84	}, { /* pud */
85		.flag	= flag_array,
86		.num	= ARRAY_SIZE(flag_array),
87	}, { /* pmd */
88		.flag	= flag_array,
89		.num	= ARRAY_SIZE(flag_array),
90	}, { /* pte */
91		.flag	= flag_array,
92		.num	= ARRAY_SIZE(flag_array),
93	},
94};
95