blob: 5ad92d9dc5d10b3bed0b78647f4ee42a7cc6ad1d [file] [log] [blame]
Christophe Leroy97026b52018-10-09 13:51:58 +00001// 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>
Mike Rapoportca5999f2020-06-08 21:32:38 -07008#include <linux/pgtable.h>
Christophe Leroy97026b52018-10-09 13:51:58 +00009
Christophe Leroye66c3202019-02-18 12:28:36 +000010#include "ptdump.h"
Christophe Leroy97026b52018-10-09 13:51:58 +000011
12static const struct flag_info flag_array[] = {
13 {
14 .mask = _PAGE_PRIVILEGED,
15 .val = 0,
16 .set = "user",
17 .clear = " ",
18 }, {
19 .mask = _PAGE_READ,
20 .val = _PAGE_READ,
21 .set = "r",
22 .clear = " ",
23 }, {
24 .mask = _PAGE_WRITE,
25 .val = _PAGE_WRITE,
26 .set = "w",
27 .clear = " ",
28 }, {
29 .mask = _PAGE_EXEC,
30 .val = _PAGE_EXEC,
31 .set = " X ",
32 .clear = " ",
33 }, {
34 .mask = _PAGE_PTE,
35 .val = _PAGE_PTE,
36 .set = "pte",
37 .clear = " ",
38 }, {
39 .mask = _PAGE_PRESENT,
40 .val = _PAGE_PRESENT,
Christophe Leroy3ff38e12018-10-15 06:37:41 +000041 .set = "valid",
42 .clear = " ",
43 }, {
44 .mask = _PAGE_PRESENT | _PAGE_INVALID,
45 .val = 0,
46 .set = " ",
47 .clear = "present",
Christophe Leroy97026b52018-10-09 13:51:58 +000048 }, {
49 .mask = H_PAGE_HASHPTE,
50 .val = H_PAGE_HASHPTE,
51 .set = "hpte",
52 .clear = " ",
53 }, {
54 .mask = _PAGE_DIRTY,
55 .val = _PAGE_DIRTY,
56 .set = "dirty",
57 .clear = " ",
58 }, {
59 .mask = _PAGE_ACCESSED,
60 .val = _PAGE_ACCESSED,
61 .set = "accessed",
62 .clear = " ",
63 }, {
64 .mask = _PAGE_NON_IDEMPOTENT,
65 .val = _PAGE_NON_IDEMPOTENT,
66 .set = "non-idempotent",
67 .clear = " ",
68 }, {
69 .mask = _PAGE_TOLERANT,
70 .val = _PAGE_TOLERANT,
71 .set = "tolerant",
72 .clear = " ",
73 }, {
74 .mask = H_PAGE_BUSY,
75 .val = H_PAGE_BUSY,
76 .set = "busy",
77 }, {
78#ifdef CONFIG_PPC_64K_PAGES
79 .mask = H_PAGE_COMBO,
80 .val = H_PAGE_COMBO,
81 .set = "combo",
82 }, {
83 .mask = H_PAGE_4K_PFN,
84 .val = H_PAGE_4K_PFN,
85 .set = "4K_pfn",
86 }, {
87#else /* CONFIG_PPC_64K_PAGES */
88 .mask = H_PAGE_F_GIX,
89 .val = H_PAGE_F_GIX,
90 .set = "f_gix",
91 .is_val = true,
92 .shift = H_PAGE_F_GIX_SHIFT,
93 }, {
94 .mask = H_PAGE_F_SECOND,
95 .val = H_PAGE_F_SECOND,
96 .set = "f_second",
97 }, {
98#endif /* CONFIG_PPC_64K_PAGES */
99 .mask = _PAGE_SPECIAL,
100 .val = _PAGE_SPECIAL,
101 .set = "special",
102 }
103};
104
105struct pgtable_level pg_level[5] = {
Christophe Leroycf98d2b2021-07-08 16:49:42 +0000106 { /* pgd */
107 .flag = flag_array,
108 .num = ARRAY_SIZE(flag_array),
109 }, { /* p4d */
Christophe Leroy97026b52018-10-09 13:51:58 +0000110 .flag = flag_array,
111 .num = ARRAY_SIZE(flag_array),
112 }, { /* pud */
113 .flag = flag_array,
114 .num = ARRAY_SIZE(flag_array),
115 }, { /* pmd */
116 .flag = flag_array,
117 .num = ARRAY_SIZE(flag_array),
118 }, { /* pte */
119 .flag = flag_array,
120 .num = ARRAY_SIZE(flag_array),
121 },
122};