|
@@ -304,13 +304,23 @@ PTE_BIT_FUNC(mkyoung, |= L_PTE_YOUNG);
|
|
|
|
|
|
static inline pte_t pte_mkspecial(pte_t pte) { return pte; }
|
|
|
|
|
|
+#define __pgprot_modify(prot,mask,bits) \
|
|
|
+ __pgprot((pgprot_val(prot) & ~(mask)) | (bits))
|
|
|
+
|
|
|
/*
|
|
|
* Mark the prot value as uncacheable and unbufferable.
|
|
|
*/
|
|
|
#define pgprot_noncached(prot) \
|
|
|
- __pgprot((pgprot_val(prot) & ~L_PTE_MT_MASK) | L_PTE_MT_UNCACHED)
|
|
|
+ __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED)
|
|
|
#define pgprot_writecombine(prot) \
|
|
|
- __pgprot((pgprot_val(prot) & ~L_PTE_MT_MASK) | L_PTE_MT_BUFFERABLE)
|
|
|
+ __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE)
|
|
|
+#if __LINUX_ARM_ARCH__ >= 7
|
|
|
+#define pgprot_dmacoherent(prot) \
|
|
|
+ __pgprot_modify(prot, L_PTE_MT_MASK|L_PTE_EXEC, L_PTE_MT_BUFFERABLE)
|
|
|
+#else
|
|
|
+#define pgprot_dmacoherent(prot) \
|
|
|
+ __pgprot_modify(prot, L_PTE_MT_MASK|L_PTE_EXEC, L_PTE_MT_UNCACHED)
|
|
|
+#endif
|
|
|
|
|
|
#define pmd_none(pmd) (!pmd_val(pmd))
|
|
|
#define pmd_present(pmd) (pmd_val(pmd))
|