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