Merge tag 'v3.10.107' into update
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / arch / arm / include / asm / pgtable.h
index 9bcd262a900842dfc685991511d4850fb3601ff5..4043d7f4bc92d277c14bae0449e62f4eea606359 100644 (file)
@@ -58,7 +58,7 @@ extern void __pgd_error(const char *file, int line, pgd_t);
  * mapping to be mapped at.  This is particularly important for
  * non-high vector CPUs.
  */
-#define FIRST_USER_ADDRESS     PAGE_SIZE
+#define FIRST_USER_ADDRESS     (PAGE_SIZE * 2)
 
 /*
  * Use TASK_SIZE as the ceiling argument for free_pgtables() and
@@ -211,12 +211,16 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd)
 
 #define pte_clear(mm,addr,ptep)        set_pte_ext(ptep, __pte(0), 0)
 
+#define pte_isset(pte, val)    ((u32)(val) == (val) ? pte_val(pte) & (val) \
+                                               : !!(pte_val(pte) & (val)))
+#define pte_isclear(pte, val)  (!(pte_val(pte) & (val)))
+
 #define pte_none(pte)          (!pte_val(pte))
-#define pte_present(pte)       (pte_val(pte) & L_PTE_PRESENT)
-#define pte_write(pte)         (!(pte_val(pte) & L_PTE_RDONLY))
-#define pte_dirty(pte)         (pte_val(pte) & L_PTE_DIRTY)
-#define pte_young(pte)         (pte_val(pte) & L_PTE_YOUNG)
-#define pte_exec(pte)          (!(pte_val(pte) & L_PTE_XN))
+#define pte_present(pte)       (pte_isset((pte), L_PTE_PRESENT))
+#define pte_write(pte)         (pte_isclear((pte), L_PTE_RDONLY))
+#define pte_dirty(pte)         (pte_isset((pte), L_PTE_DIRTY))
+#define pte_young(pte)         (pte_isset((pte), L_PTE_YOUNG))
+#define pte_exec(pte)          (pte_isclear((pte), L_PTE_XN))
 #define pte_special(pte)       (0)
 
 #define pte_present_user(pte)  (pte_present(pte) && (pte_val(pte) & L_PTE_USER))