linux/arch/powerpc/mm/ptdump/book3s64.c
<<
>>
Prefs
   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                .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
 105struct pgtable_level pg_level[5] = {
 106        { /* pgd */
 107                .flag   = flag_array,
 108                .num    = ARRAY_SIZE(flag_array),
 109        }, { /* p4d */
 110                .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};
 123