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 <asm/pgtable.h> 9 10 #include "ptdump.h" 11 12 static const struct flag_info flag_array[] = { 13 { 14 .mask = _PAGE_USER, 15 .val = _PAGE_USER, 16 .set = "user", 17 .clear = " ", 18 }, { 19 .mask = _PAGE_RW, 20 .val = _PAGE_RW, 21 .set = "rw", 22 .clear = "r ", 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_GUARDED, 35 .val = _PAGE_GUARDED, 36 .set = "guarded", 37 .clear = " ", 38 }, { 39 .mask = _PAGE_DIRTY, 40 .val = _PAGE_DIRTY, 41 .set = "dirty", 42 .clear = " ", 43 }, { 44 .mask = _PAGE_ACCESSED, 45 .val = _PAGE_ACCESSED, 46 .set = "accessed", 47 .clear = " ", 48 }, { 49 .mask = _PAGE_WRITETHRU, 50 .val = _PAGE_WRITETHRU, 51 .set = "write through", 52 .clear = " ", 53 }, { 54 .mask = _PAGE_NO_CACHE, 55 .val = _PAGE_NO_CACHE, 56 .set = "no cache", 57 .clear = " ", 58 }, { 59 .mask = _PAGE_SPECIAL, 60 .val = _PAGE_SPECIAL, 61 .set = "special", 62 } 63 }; 64 65 struct pgtable_level pg_level[5] = { 66 { 67 }, { /* pgd */ 68 .flag = flag_array, 69 .num = ARRAY_SIZE(flag_array), 70 }, { /* pud */ 71 .flag = flag_array, 72 .num = ARRAY_SIZE(flag_array), 73 }, { /* pmd */ 74 .flag = flag_array, 75 .num = ARRAY_SIZE(flag_array), 76 }, { /* pte */ 77 .flag = flag_array, 78 .num = ARRAY_SIZE(flag_array), 79 }, 80 }; 81