|
@@ -20,7 +20,7 @@
|
|
|
#define _PAGE_READ 0x00004 /* read access allowed */
|
|
|
#define _PAGE_RW (_PAGE_READ | _PAGE_WRITE)
|
|
|
#define _PAGE_RWX (_PAGE_READ | _PAGE_WRITE | _PAGE_EXEC)
|
|
|
-#define _PAGE_USER 0x00008 /* page may be accessed by userspace */
|
|
|
+#define _PAGE_PRIVILEGED 0x00008 /* kernel access only */
|
|
|
#define _PAGE_GUARDED 0x00010 /* G: guarded (side-effect) page */
|
|
|
/* M (memory coherence) is always set in the HPTE, so we don't need it here */
|
|
|
#define _PAGE_COHERENT 0x0
|
|
@@ -114,10 +114,13 @@
|
|
|
#define HAVE_ARCH_UNMAPPED_AREA_TOPDOWN
|
|
|
#endif /* CONFIG_PPC_MM_SLICES */
|
|
|
|
|
|
-/* No separate kernel read-only */
|
|
|
-#define _PAGE_KERNEL_RW (_PAGE_RW | _PAGE_DIRTY) /* user access blocked by key */
|
|
|
+/*
|
|
|
+ * No separate kernel read-only, user access blocked by key
|
|
|
+ */
|
|
|
+#define _PAGE_KERNEL_RW (_PAGE_PRIVILEGED | _PAGE_RW | _PAGE_DIRTY)
|
|
|
#define _PAGE_KERNEL_RO _PAGE_KERNEL_RW
|
|
|
-#define _PAGE_KERNEL_RWX (_PAGE_DIRTY | _PAGE_RW | _PAGE_EXEC)
|
|
|
+#define _PAGE_KERNEL_RWX (_PAGE_PRIVILEGED | _PAGE_DIRTY | \
|
|
|
+ _PAGE_RW | _PAGE_EXEC)
|
|
|
|
|
|
/* Strong Access Ordering */
|
|
|
#define _PAGE_SAO (_PAGE_WRITETHRU | _PAGE_NO_CACHE | _PAGE_COHERENT)
|
|
@@ -147,7 +150,7 @@
|
|
|
*/
|
|
|
#define PAGE_PROT_BITS (_PAGE_GUARDED | _PAGE_COHERENT | _PAGE_NO_CACHE | \
|
|
|
_PAGE_WRITETHRU | _PAGE_4K_PFN | \
|
|
|
- _PAGE_USER | _PAGE_ACCESSED | _PAGE_READ |\
|
|
|
+ _PAGE_PRIVILEGED | _PAGE_ACCESSED | _PAGE_READ |\
|
|
|
_PAGE_WRITE | _PAGE_DIRTY | _PAGE_EXEC | \
|
|
|
_PAGE_SOFT_DIRTY)
|
|
|
/*
|
|
@@ -169,16 +172,13 @@
|
|
|
*
|
|
|
* Note due to the way vm flags are laid out, the bits are XWR
|
|
|
*/
|
|
|
-#define PAGE_NONE __pgprot(_PAGE_BASE)
|
|
|
-#define PAGE_SHARED __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RW)
|
|
|
-#define PAGE_SHARED_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RW | \
|
|
|
- _PAGE_EXEC)
|
|
|
-#define PAGE_COPY __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_READ)
|
|
|
-#define PAGE_COPY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_READ| \
|
|
|
- _PAGE_EXEC)
|
|
|
-#define PAGE_READONLY __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_READ)
|
|
|
-#define PAGE_READONLY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_READ| \
|
|
|
- _PAGE_EXEC)
|
|
|
+#define PAGE_NONE __pgprot(_PAGE_BASE | _PAGE_PRIVILEGED)
|
|
|
+#define PAGE_SHARED __pgprot(_PAGE_BASE | _PAGE_RW)
|
|
|
+#define PAGE_SHARED_X __pgprot(_PAGE_BASE | _PAGE_RW | _PAGE_EXEC)
|
|
|
+#define PAGE_COPY __pgprot(_PAGE_BASE | _PAGE_READ)
|
|
|
+#define PAGE_COPY_X __pgprot(_PAGE_BASE | _PAGE_READ | _PAGE_EXEC)
|
|
|
+#define PAGE_READONLY __pgprot(_PAGE_BASE | _PAGE_READ)
|
|
|
+#define PAGE_READONLY_X __pgprot(_PAGE_BASE | _PAGE_READ | _PAGE_EXEC)
|
|
|
|
|
|
#define __P000 PAGE_NONE
|
|
|
#define __P001 PAGE_READONLY
|
|
@@ -419,8 +419,8 @@ static inline pte_t pte_clear_soft_dirty(pte_t pte)
|
|
|
*/
|
|
|
static inline int pte_protnone(pte_t pte)
|
|
|
{
|
|
|
- return (pte_val(pte) &
|
|
|
- (_PAGE_PRESENT | _PAGE_USER)) == _PAGE_PRESENT;
|
|
|
+ return (pte_val(pte) & (_PAGE_PRESENT | _PAGE_PRIVILEGED)) ==
|
|
|
+ (_PAGE_PRESENT | _PAGE_PRIVILEGED);
|
|
|
}
|
|
|
#endif /* CONFIG_NUMA_BALANCING */
|
|
|
|