1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2736d2169SHelge Deller #ifndef _ASM_PARISC64_HUGETLB_H
3736d2169SHelge Deller #define _ASM_PARISC64_HUGETLB_H
4736d2169SHelge Deller
5736d2169SHelge Deller #include <asm/page.h>
6736d2169SHelge Deller
7cea685d5SAlexandre Ghiti #define __HAVE_ARCH_HUGE_SET_HUGE_PTE_AT
8736d2169SHelge Deller void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
9*935d4f0cSRyan Roberts pte_t *ptep, pte_t pte, unsigned long sz);
10736d2169SHelge Deller
11a4d83853SAlexandre Ghiti #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
12736d2169SHelge Deller pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
13736d2169SHelge Deller pte_t *ptep);
14736d2169SHelge Deller
15736d2169SHelge Deller /*
16736d2169SHelge Deller * If the arch doesn't supply something else, assume that hugepage
17736d2169SHelge Deller * size aligned regions are ok without further preparation.
18736d2169SHelge Deller */
1978d6e4e8SAlexandre Ghiti #define __HAVE_ARCH_PREPARE_HUGEPAGE_RANGE
prepare_hugepage_range(struct file * file,unsigned long addr,unsigned long len)20736d2169SHelge Deller static inline int prepare_hugepage_range(struct file *file,
21736d2169SHelge Deller unsigned long addr, unsigned long len)
22736d2169SHelge Deller {
23736d2169SHelge Deller if (len & ~HPAGE_MASK)
24736d2169SHelge Deller return -EINVAL;
25736d2169SHelge Deller if (addr & ~HPAGE_MASK)
26736d2169SHelge Deller return -EINVAL;
27736d2169SHelge Deller return 0;
28736d2169SHelge Deller }
29736d2169SHelge Deller
30fe632225SAlexandre Ghiti #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
huge_ptep_clear_flush(struct vm_area_struct * vma,unsigned long addr,pte_t * ptep)31ae075629SBaolin Wang static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
32736d2169SHelge Deller unsigned long addr, pte_t *ptep)
33736d2169SHelge Deller {
34ae075629SBaolin Wang return *ptep;
35736d2169SHelge Deller }
36736d2169SHelge Deller
378e581d43SAlexandre Ghiti #define __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
38b0e55131SHelge Deller void huge_ptep_set_wrprotect(struct mm_struct *mm,
39b0e55131SHelge Deller unsigned long addr, pte_t *ptep);
40736d2169SHelge Deller
41facf6d5bSAlexandre Ghiti #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
42b0e55131SHelge Deller int huge_ptep_set_access_flags(struct vm_area_struct *vma,
43736d2169SHelge Deller unsigned long addr, pte_t *ptep,
44b0e55131SHelge Deller pte_t pte, int dirty);
45736d2169SHelge Deller
461e5f50fcSAlexandre Ghiti #include <asm-generic/hugetlb.h>
471e5f50fcSAlexandre Ghiti
48736d2169SHelge Deller #endif /* _ASM_PARISC64_HUGETLB_H */
49