xref: /openbmc/linux/arch/parisc/include/asm/hugetlb.h (revision 935d4f0c)
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