root/arch/sparc/include/asm/hugetlb.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. is_hugepage_only_range
  2. huge_ptep_clear_flush
  3. huge_ptep_set_wrprotect
  4. huge_ptep_set_access_flags
  5. arch_clear_hugepage_flags

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _ASM_SPARC64_HUGETLB_H
   3 #define _ASM_SPARC64_HUGETLB_H
   4 
   5 #include <asm/page.h>
   6 
   7 #ifdef CONFIG_HUGETLB_PAGE
   8 struct pud_huge_patch_entry {
   9         unsigned int addr;
  10         unsigned int insn;
  11 };
  12 extern struct pud_huge_patch_entry __pud_huge_patch, __pud_huge_patch_end;
  13 #endif
  14 
  15 #define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
  16 void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
  17                      pte_t *ptep, pte_t pte);
  18 
  19 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
  20 pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
  21                               pte_t *ptep);
  22 
  23 static inline int is_hugepage_only_range(struct mm_struct *mm,
  24                                          unsigned long addr,
  25                                          unsigned long len) {
  26         return 0;
  27 }
  28 
  29 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
  30 static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
  31                                          unsigned long addr, pte_t *ptep)
  32 {
  33 }
  34 
  35 #define __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
  36 static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
  37                                            unsigned long addr, pte_t *ptep)
  38 {
  39         pte_t old_pte = *ptep;
  40         set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte));
  41 }
  42 
  43 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
  44 static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
  45                                              unsigned long addr, pte_t *ptep,
  46                                              pte_t pte, int dirty)
  47 {
  48         int changed = !pte_same(*ptep, pte);
  49         if (changed) {
  50                 set_huge_pte_at(vma->vm_mm, addr, ptep, pte);
  51                 flush_tlb_page(vma, addr);
  52         }
  53         return changed;
  54 }
  55 
  56 static inline void arch_clear_hugepage_flags(struct page *page)
  57 {
  58 }
  59 
  60 #define __HAVE_ARCH_HUGETLB_FREE_PGD_RANGE
  61 void hugetlb_free_pgd_range(struct mmu_gather *tlb, unsigned long addr,
  62                             unsigned long end, unsigned long floor,
  63                             unsigned long ceiling);
  64 
  65 #include <asm-generic/hugetlb.h>
  66 
  67 #endif /* _ASM_SPARC64_HUGETLB_H */

/* [<][>][^][v][top][bottom][index][help] */