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

pgtable-2level.h (1299B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
      4 * Copyright 2003 PathScale, Inc.
      5 * Derived from include/asm-i386/pgtable.h
      6 */
      7
      8#ifndef __UM_PGTABLE_2LEVEL_H
      9#define __UM_PGTABLE_2LEVEL_H
     10
     11#include <asm-generic/pgtable-nopmd.h>
     12
     13/* PGDIR_SHIFT determines what a third-level page table entry can map */
     14
     15#define PGDIR_SHIFT	22
     16#define PGDIR_SIZE	(1UL << PGDIR_SHIFT)
     17#define PGDIR_MASK	(~(PGDIR_SIZE-1))
     18
     19/*
     20 * entries per page directory level: the i386 is two-level, so
     21 * we don't really have any PMD directory physically.
     22 */
     23#define PTRS_PER_PTE	1024
     24#define USER_PTRS_PER_PGD ((TASK_SIZE + (PGDIR_SIZE - 1)) / PGDIR_SIZE)
     25#define PTRS_PER_PGD	1024
     26
     27#define pte_ERROR(e) \
     28        printk("%s:%d: bad pte %p(%08lx).\n", __FILE__, __LINE__, &(e), \
     29	       pte_val(e))
     30#define pgd_ERROR(e) \
     31        printk("%s:%d: bad pgd %p(%08lx).\n", __FILE__, __LINE__, &(e), \
     32	       pgd_val(e))
     33
     34static inline int pgd_newpage(pgd_t pgd)	{ return 0; }
     35static inline void pgd_mkuptodate(pgd_t pgd)	{ }
     36
     37#define set_pmd(pmdptr, pmdval) (*(pmdptr) = (pmdval))
     38
     39#define pte_pfn(x) phys_to_pfn(pte_val(x))
     40#define pfn_pte(pfn, prot) __pte(pfn_to_phys(pfn) | pgprot_val(prot))
     41#define pfn_pmd(pfn, prot) __pmd(pfn_to_phys(pfn) | pgprot_val(prot))
     42
     43#endif