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-64k.h (1673B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H
      3#define _ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H
      4
      5#ifndef __ASSEMBLY__
      6#ifdef CONFIG_HUGETLB_PAGE
      7/*
      8 * We have PGD_INDEX_SIZ = 12 and PTE_INDEX_SIZE = 8, so that we can have
      9 * 16GB hugepage pte in PGD and 16MB hugepage pte at PMD;
     10 *
     11 * Defined in such a way that we can optimize away code block at build time
     12 * if CONFIG_HUGETLB_PAGE=n.
     13 *
     14 * returns true for pmd migration entries, THP, devmap, hugetlb
     15 * But compile time dependent on CONFIG_HUGETLB_PAGE
     16 */
     17static inline int pmd_huge(pmd_t pmd)
     18{
     19	/*
     20	 * leaf pte for huge page
     21	 */
     22	return !!(pmd_raw(pmd) & cpu_to_be64(_PAGE_PTE));
     23}
     24
     25static inline int pud_huge(pud_t pud)
     26{
     27	/*
     28	 * leaf pte for huge page
     29	 */
     30	return !!(pud_raw(pud) & cpu_to_be64(_PAGE_PTE));
     31}
     32
     33static inline int pgd_huge(pgd_t pgd)
     34{
     35	/*
     36	 * leaf pte for huge page
     37	 */
     38	return !!(pgd_raw(pgd) & cpu_to_be64(_PAGE_PTE));
     39}
     40#define pgd_huge pgd_huge
     41
     42/*
     43 * With 64k page size, we have hugepage ptes in the pgd and pmd entries. We don't
     44 * need to setup hugepage directory for them. Our pte and page directory format
     45 * enable us to have this enabled.
     46 */
     47static inline int hugepd_ok(hugepd_t hpd)
     48{
     49	return 0;
     50}
     51
     52#define is_hugepd(pdep)			0
     53
     54/*
     55 * This should never get called
     56 */
     57static inline int get_hugepd_cache_index(int index)
     58{
     59	BUG();
     60}
     61
     62#endif /* CONFIG_HUGETLB_PAGE */
     63
     64static inline int remap_4k_pfn(struct vm_area_struct *vma, unsigned long addr,
     65			       unsigned long pfn, pgprot_t prot)
     66{
     67	if (radix_enabled())
     68		BUG();
     69	return hash__remap_4k_pfn(vma, addr, pfn, prot);
     70}
     71#endif	/* __ASSEMBLY__ */
     72#endif /*_ASM_POWERPC_BOOK3S_64_PGTABLE_64K_H */