cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

8xx.c (1743B)


      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#ifdef CONFIG_PPC_16K_PAGES
     15		.mask	= _PAGE_HUGE,
     16		.val	= _PAGE_HUGE,
     17#else
     18		.mask	= _PAGE_SPS,
     19		.val	= _PAGE_SPS,
     20#endif
     21		.set	= "huge",
     22		.clear	= "    ",
     23	}, {
     24		.mask	= _PAGE_SH,
     25		.val	= 0,
     26		.set	= "user",
     27		.clear	= "    ",
     28	}, {
     29		.mask	= _PAGE_RO | _PAGE_NA,
     30		.val	= 0,
     31		.set	= "rw",
     32	}, {
     33		.mask	= _PAGE_RO | _PAGE_NA,
     34		.val	= _PAGE_RO,
     35		.set	= "r ",
     36	}, {
     37		.mask	= _PAGE_RO | _PAGE_NA,
     38		.val	= _PAGE_NA,
     39		.set	= "  ",
     40	}, {
     41		.mask	= _PAGE_EXEC,
     42		.val	= _PAGE_EXEC,
     43		.set	= " X ",
     44		.clear	= "   ",
     45	}, {
     46		.mask	= _PAGE_PRESENT,
     47		.val	= _PAGE_PRESENT,
     48		.set	= "present",
     49		.clear	= "       ",
     50	}, {
     51		.mask	= _PAGE_GUARDED,
     52		.val	= _PAGE_GUARDED,
     53		.set	= "guarded",
     54		.clear	= "       ",
     55	}, {
     56		.mask	= _PAGE_DIRTY,
     57		.val	= _PAGE_DIRTY,
     58		.set	= "dirty",
     59		.clear	= "     ",
     60	}, {
     61		.mask	= _PAGE_ACCESSED,
     62		.val	= _PAGE_ACCESSED,
     63		.set	= "accessed",
     64		.clear	= "        ",
     65	}, {
     66		.mask	= _PAGE_NO_CACHE,
     67		.val	= _PAGE_NO_CACHE,
     68		.set	= "no cache",
     69		.clear	= "        ",
     70	}, {
     71		.mask	= _PAGE_SPECIAL,
     72		.val	= _PAGE_SPECIAL,
     73		.set	= "special",
     74	}
     75};
     76
     77struct pgtable_level pg_level[5] = {
     78	{ /* pgd */
     79		.flag	= flag_array,
     80		.num	= ARRAY_SIZE(flag_array),
     81	}, { /* p4d */
     82		.flag	= flag_array,
     83		.num	= ARRAY_SIZE(flag_array),
     84	}, { /* pud */
     85		.flag	= flag_array,
     86		.num	= ARRAY_SIZE(flag_array),
     87	}, { /* pmd */
     88		.flag	= flag_array,
     89		.num	= ARRAY_SIZE(flag_array),
     90	}, { /* pte */
     91		.flag	= flag_array,
     92		.num	= ARRAY_SIZE(flag_array),
     93	},
     94};