1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * arch/arm/mm/hugetlbpage.c 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2012 ARM Ltd. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Based on arch/x86/include/asm/hugetlb.h and Bill Carson's patches 8*4882a593Smuzhiyun */ 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun #include <linux/init.h> 11*4882a593Smuzhiyun #include <linux/fs.h> 12*4882a593Smuzhiyun #include <linux/mm.h> 13*4882a593Smuzhiyun #include <linux/hugetlb.h> 14*4882a593Smuzhiyun #include <linux/pagemap.h> 15*4882a593Smuzhiyun #include <linux/err.h> 16*4882a593Smuzhiyun #include <linux/sysctl.h> 17*4882a593Smuzhiyun #include <asm/mman.h> 18*4882a593Smuzhiyun #include <asm/tlb.h> 19*4882a593Smuzhiyun #include <asm/tlbflush.h> 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /* 22*4882a593Smuzhiyun * On ARM, huge pages are backed by pmd's rather than pte's, so we do a lot 23*4882a593Smuzhiyun * of type casting from pmd_t * to pte_t *. 24*4882a593Smuzhiyun */ 25*4882a593Smuzhiyun pud_huge(pud_t pud)26*4882a593Smuzhiyunint pud_huge(pud_t pud) 27*4882a593Smuzhiyun { 28*4882a593Smuzhiyun return 0; 29*4882a593Smuzhiyun } 30*4882a593Smuzhiyun pmd_huge(pmd_t pmd)31*4882a593Smuzhiyunint pmd_huge(pmd_t pmd) 32*4882a593Smuzhiyun { 33*4882a593Smuzhiyun return pmd_val(pmd) && !(pmd_val(pmd) & PMD_TABLE_BIT); 34*4882a593Smuzhiyun } 35