root/arch/powerpc/mm/ptdump/book3s64.c

/* [<][>][^][v][top][bottom][index][help] */
   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_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,
  41                 .set    = "valid",
  42                 .clear  = "     ",
  43         }, {
  44                 .mask   = _PAGE_PRESENT | _PAGE_INVALID,
  45                 .val    = 0,
  46                 .set    = "       ",
  47                 .clear  = "present",
  48         }, {
  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 
 105 struct pgtable_level pg_level[5] = {
 106         {
 107         }, { /* pgd */
 108                 .flag   = flag_array,
 109                 .num    = ARRAY_SIZE(flag_array),
 110         }, { /* pud */
 111                 .flag   = flag_array,
 112                 .num    = ARRAY_SIZE(flag_array),
 113         }, { /* pmd */
 114                 .flag   = flag_array,
 115                 .num    = ARRAY_SIZE(flag_array),
 116         }, { /* pte */
 117                 .flag   = flag_array,
 118                 .num    = ARRAY_SIZE(flag_array),
 119         },
 120 };

/* [<][>][^][v][top][bottom][index][help] */