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

pgalloc.h (1034B)


      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/pgalloc.h and include/asm-i386/pgtable.h
      6 */
      7
      8#ifndef __UM_PGALLOC_H
      9#define __UM_PGALLOC_H
     10
     11#include <linux/mm.h>
     12
     13#include <asm-generic/pgalloc.h>
     14
     15#define pmd_populate_kernel(mm, pmd, pte) \
     16	set_pmd(pmd, __pmd(_PAGE_TABLE + (unsigned long) __pa(pte)))
     17
     18#define pmd_populate(mm, pmd, pte) 				\
     19	set_pmd(pmd, __pmd(_PAGE_TABLE +			\
     20		((unsigned long long)page_to_pfn(pte) <<	\
     21			(unsigned long long) PAGE_SHIFT)))
     22
     23/*
     24 * Allocate and free page tables.
     25 */
     26extern pgd_t *pgd_alloc(struct mm_struct *);
     27
     28#define __pte_free_tlb(tlb,pte, address)		\
     29do {							\
     30	pgtable_pte_page_dtor(pte);			\
     31	tlb_remove_page((tlb),(pte));			\
     32} while (0)
     33
     34#ifdef CONFIG_3_LEVEL_PGTABLES
     35
     36#define __pmd_free_tlb(tlb, pmd, address)		\
     37do {							\
     38	pgtable_pmd_page_dtor(virt_to_page(pmd));	\
     39	tlb_remove_page((tlb),virt_to_page(pmd));	\
     40} while (0)						\
     41
     42#endif
     43
     44#endif
     45