18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * arch/arm/include/asm/hugetlb-3level.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (C) 2012 ARM Ltd. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Based on arch/x86/include/asm/hugetlb.h. 88c2ecf20Sopenharmony_ci */ 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci#ifndef _ASM_ARM_HUGETLB_3LEVEL_H 118c2ecf20Sopenharmony_ci#define _ASM_ARM_HUGETLB_3LEVEL_H 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci/* 158c2ecf20Sopenharmony_ci * If our huge pte is non-zero then mark the valid bit. 168c2ecf20Sopenharmony_ci * This allows pte_present(huge_ptep_get(ptep)) to return true for non-zero 178c2ecf20Sopenharmony_ci * ptes. 188c2ecf20Sopenharmony_ci * (The valid bit is automatically cleared by set_pte_at for PROT_NONE ptes). 198c2ecf20Sopenharmony_ci */ 208c2ecf20Sopenharmony_ci#define __HAVE_ARCH_HUGE_PTEP_GET 218c2ecf20Sopenharmony_cistatic inline pte_t huge_ptep_get(pte_t *ptep) 228c2ecf20Sopenharmony_ci{ 238c2ecf20Sopenharmony_ci pte_t retval = *ptep; 248c2ecf20Sopenharmony_ci if (pte_val(retval)) 258c2ecf20Sopenharmony_ci pte_val(retval) |= L_PTE_VALID; 268c2ecf20Sopenharmony_ci return retval; 278c2ecf20Sopenharmony_ci} 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci#endif /* _ASM_ARM_HUGETLB_3LEVEL_H */ 30