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

shared.c (1672B)


      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_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_COHERENT,
     35		.val	= _PAGE_COHERENT,
     36		.set	= "coherent",
     37		.clear	= "        ",
     38	}, {
     39		.mask	= _PAGE_GUARDED,
     40		.val	= _PAGE_GUARDED,
     41		.set	= "guarded",
     42		.clear	= "       ",
     43	}, {
     44		.mask	= _PAGE_DIRTY,
     45		.val	= _PAGE_DIRTY,
     46		.set	= "dirty",
     47		.clear	= "     ",
     48	}, {
     49		.mask	= _PAGE_ACCESSED,
     50		.val	= _PAGE_ACCESSED,
     51		.set	= "accessed",
     52		.clear	= "        ",
     53	}, {
     54		.mask	= _PAGE_WRITETHRU,
     55		.val	= _PAGE_WRITETHRU,
     56		.set	= "write through",
     57		.clear	= "             ",
     58	}, {
     59		.mask	= _PAGE_NO_CACHE,
     60		.val	= _PAGE_NO_CACHE,
     61		.set	= "no cache",
     62		.clear	= "        ",
     63	}, {
     64		.mask	= _PAGE_SPECIAL,
     65		.val	= _PAGE_SPECIAL,
     66		.set	= "special",
     67	}
     68};
     69
     70struct pgtable_level pg_level[5] = {
     71	{ /* pgd */
     72		.flag	= flag_array,
     73		.num	= ARRAY_SIZE(flag_array),
     74	}, { /* p4d */
     75		.flag	= flag_array,
     76		.num	= ARRAY_SIZE(flag_array),
     77	}, { /* pud */
     78		.flag	= flag_array,
     79		.num	= ARRAY_SIZE(flag_array),
     80	}, { /* pmd */
     81		.flag	= flag_array,
     82		.num	= ARRAY_SIZE(flag_array),
     83	}, { /* pte */
     84		.flag	= flag_array,
     85		.num	= ARRAY_SIZE(flag_array),
     86	},
     87};