|
@@ -149,46 +149,51 @@ extern struct page *empty_zero_page;
|
|
|
#define pte_valid_not_user(pte) \
|
|
|
((pte_val(pte) & (PTE_VALID | PTE_USER)) == PTE_VALID)
|
|
|
|
|
|
-static inline pte_t pte_wrprotect(pte_t pte)
|
|
|
+static inline pte_t clear_pte_bit(pte_t pte, pgprot_t prot)
|
|
|
{
|
|
|
- pte_val(pte) &= ~PTE_WRITE;
|
|
|
+ pte_val(pte) &= ~pgprot_val(prot);
|
|
|
return pte;
|
|
|
}
|
|
|
|
|
|
-static inline pte_t pte_mkwrite(pte_t pte)
|
|
|
+static inline pte_t set_pte_bit(pte_t pte, pgprot_t prot)
|
|
|
{
|
|
|
- pte_val(pte) |= PTE_WRITE;
|
|
|
+ pte_val(pte) |= pgprot_val(prot);
|
|
|
return pte;
|
|
|
}
|
|
|
|
|
|
+static inline pte_t pte_wrprotect(pte_t pte)
|
|
|
+{
|
|
|
+ return clear_pte_bit(pte, __pgprot(PTE_WRITE));
|
|
|
+}
|
|
|
+
|
|
|
+static inline pte_t pte_mkwrite(pte_t pte)
|
|
|
+{
|
|
|
+ return set_pte_bit(pte, __pgprot(PTE_WRITE));
|
|
|
+}
|
|
|
+
|
|
|
static inline pte_t pte_mkclean(pte_t pte)
|
|
|
{
|
|
|
- pte_val(pte) &= ~PTE_DIRTY;
|
|
|
- return pte;
|
|
|
+ return clear_pte_bit(pte, __pgprot(PTE_DIRTY));
|
|
|
}
|
|
|
|
|
|
static inline pte_t pte_mkdirty(pte_t pte)
|
|
|
{
|
|
|
- pte_val(pte) |= PTE_DIRTY;
|
|
|
- return pte;
|
|
|
+ return set_pte_bit(pte, __pgprot(PTE_DIRTY));
|
|
|
}
|
|
|
|
|
|
static inline pte_t pte_mkold(pte_t pte)
|
|
|
{
|
|
|
- pte_val(pte) &= ~PTE_AF;
|
|
|
- return pte;
|
|
|
+ return clear_pte_bit(pte, __pgprot(PTE_AF));
|
|
|
}
|
|
|
|
|
|
static inline pte_t pte_mkyoung(pte_t pte)
|
|
|
{
|
|
|
- pte_val(pte) |= PTE_AF;
|
|
|
- return pte;
|
|
|
+ return set_pte_bit(pte, __pgprot(PTE_AF));
|
|
|
}
|
|
|
|
|
|
static inline pte_t pte_mkspecial(pte_t pte)
|
|
|
{
|
|
|
- pte_val(pte) |= PTE_SPECIAL;
|
|
|
- return pte;
|
|
|
+ return set_pte_bit(pte, __pgprot(PTE_SPECIAL));
|
|
|
}
|
|
|
|
|
|
static inline void set_pte(pte_t *ptep, pte_t pte)
|