|
@@ -1365,6 +1365,18 @@ static inline void pmdp_invalidate(struct vm_area_struct *vma,
|
|
|
__pmd_idte(address, pmdp);
|
|
|
}
|
|
|
|
|
|
+#define __HAVE_ARCH_PMDP_SET_WRPROTECT
|
|
|
+static inline void pmdp_set_wrprotect(struct mm_struct *mm,
|
|
|
+ unsigned long address, pmd_t *pmdp)
|
|
|
+{
|
|
|
+ pmd_t pmd = *pmdp;
|
|
|
+
|
|
|
+ if (pmd_write(pmd)) {
|
|
|
+ __pmd_idte(address, pmdp);
|
|
|
+ set_pmd_at(mm, address, pmdp, pmd_wrprotect(pmd));
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
static inline pmd_t mk_pmd_phys(unsigned long physpage, pgprot_t pgprot)
|
|
|
{
|
|
|
pmd_t __pmd;
|