Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /*
0003  * From split of dump_linuxpagetables.c
0004  * Copyright 2016, Rashmica Gupta, IBM Corp.
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     { /* pgd */
0079         .flag   = flag_array,
0080         .num    = ARRAY_SIZE(flag_array),
0081     }, { /* p4d */
0082         .flag   = flag_array,
0083         .num    = ARRAY_SIZE(flag_array),
0084     }, { /* pud */
0085         .flag   = flag_array,
0086         .num    = ARRAY_SIZE(flag_array),
0087     }, { /* pmd */
0088         .flag   = flag_array,
0089         .num    = ARRAY_SIZE(flag_array),
0090     }, { /* pte */
0091         .flag   = flag_array,
0092         .num    = ARRAY_SIZE(flag_array),
0093     },
0094 };