|
@@ -9,6 +9,7 @@
|
|
|
#ifndef _ASM_PGTABLE_64_H
|
|
|
#define _ASM_PGTABLE_64_H
|
|
|
|
|
|
+#include <linux/compiler.h>
|
|
|
#include <linux/linkage.h>
|
|
|
|
|
|
#include <asm/addrspace.h>
|
|
@@ -172,7 +173,19 @@ static inline int pmd_none(pmd_t pmd)
|
|
|
return pmd_val(pmd) == (unsigned long) invalid_pte_table;
|
|
|
}
|
|
|
|
|
|
-#define pmd_bad(pmd) (pmd_val(pmd) & ~PAGE_MASK)
|
|
|
+static inline int pmd_bad(pmd_t pmd)
|
|
|
+{
|
|
|
+#ifdef CONFIG_HUGETLB_PAGE
|
|
|
+ /* pmd_huge(pmd) but inline */
|
|
|
+ if (unlikely(pmd_val(pmd) & _PAGE_HUGE))
|
|
|
+ return 0;
|
|
|
+#endif
|
|
|
+
|
|
|
+ if (unlikely(pmd_val(pmd) & ~PAGE_MASK))
|
|
|
+ return 1;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
|
|
|
static inline int pmd_present(pmd_t pmd)
|
|
|
{
|