linux/arch/arm/include/asm/hugetlb-3level.h
<<
>>
Prefs
   1/*
   2 * arch/arm/include/asm/hugetlb-3level.h
   3 *
   4 * Copyright (C) 2012 ARM Ltd.
   5 *
   6 * Based on arch/x86/include/asm/hugetlb.h.
   7 *
   8 * This program is free software; you can redistribute it and/or modify
   9 * it under the terms of the GNU General Public License version 2 as
  10 * published by the Free Software Foundation.
  11 *
  12 * This program is distributed in the hope that it will be useful,
  13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15 * GNU General Public License for more details.
  16 *
  17 * You should have received a copy of the GNU General Public License
  18 * along with this program; if not, write to the Free Software
  19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  20 */
  21
  22#ifndef _ASM_ARM_HUGETLB_3LEVEL_H
  23#define _ASM_ARM_HUGETLB_3LEVEL_H
  24
  25
  26/*
  27 * If our huge pte is non-zero then mark the valid bit.
  28 * This allows pte_present(huge_ptep_get(ptep)) to return true for non-zero
  29 * ptes.
  30 * (The valid bit is automatically cleared by set_pte_at for PROT_NONE ptes).
  31 */
  32static inline pte_t huge_ptep_get(pte_t *ptep)
  33{
  34        pte_t retval = *ptep;
  35        if (pte_val(retval))
  36                pte_val(retval) |= L_PTE_VALID;
  37        return retval;
  38}
  39
  40static inline void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
  41                                   pte_t *ptep, pte_t pte)
  42{
  43        set_pte_at(mm, addr, ptep, pte);
  44}
  45
  46static inline void huge_ptep_clear_flush(struct vm_area_struct *vma,
  47                                         unsigned long addr, pte_t *ptep)
  48{
  49        ptep_clear_flush(vma, addr, ptep);
  50}
  51
  52static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
  53                                           unsigned long addr, pte_t *ptep)
  54{
  55        ptep_set_wrprotect(mm, addr, ptep);
  56}
  57
  58static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
  59                                            unsigned long addr, pte_t *ptep)
  60{
  61        return ptep_get_and_clear(mm, addr, ptep);
  62}
  63
  64static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
  65                                             unsigned long addr, pte_t *ptep,
  66                                             pte_t pte, int dirty)
  67{
  68        return ptep_set_access_flags(vma, addr, ptep, pte, dirty);
  69}
  70
  71#endif /* _ASM_ARM_HUGETLB_3LEVEL_H */
  72