|
@@ -20,13 +20,18 @@
|
|
|
#define _PAGE_BIT_SOFTW2 10 /* " */
|
|
|
#define _PAGE_BIT_SOFTW3 11 /* " */
|
|
|
#define _PAGE_BIT_PAT_LARGE 12 /* On 2MB or 1GB pages */
|
|
|
+#define _PAGE_BIT_SOFTW4 58 /* available for programmer */
|
|
|
+#define _PAGE_BIT_PKEY_BIT0 59 /* Protection Keys, bit 1/4 */
|
|
|
+#define _PAGE_BIT_PKEY_BIT1 60 /* Protection Keys, bit 2/4 */
|
|
|
+#define _PAGE_BIT_PKEY_BIT2 61 /* Protection Keys, bit 3/4 */
|
|
|
+#define _PAGE_BIT_PKEY_BIT3 62 /* Protection Keys, bit 4/4 */
|
|
|
+#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
|
|
|
+
|
|
|
#define _PAGE_BIT_SPECIAL _PAGE_BIT_SOFTW1
|
|
|
#define _PAGE_BIT_CPA_TEST _PAGE_BIT_SOFTW1
|
|
|
#define _PAGE_BIT_HIDDEN _PAGE_BIT_SOFTW3 /* hidden by kmemcheck */
|
|
|
#define _PAGE_BIT_SOFT_DIRTY _PAGE_BIT_SOFTW3 /* software dirty tracking */
|
|
|
-#define _PAGE_BIT_SOFTW4 58 /* available for programmer */
|
|
|
-#define _PAGE_BIT_DEVMAP _PAGE_BIT_SOFTW4
|
|
|
-#define _PAGE_BIT_NX 63 /* No execute: only valid after cpuid check */
|
|
|
+#define _PAGE_BIT_DEVMAP _PAGE_BIT_SOFTW4
|
|
|
|
|
|
/* If _PAGE_BIT_PRESENT is clear, we use these: */
|
|
|
/* - if the user mapped it with PROT_NONE; pte_present gives true */
|
|
@@ -47,6 +52,17 @@
|
|
|
#define _PAGE_PAT_LARGE (_AT(pteval_t, 1) << _PAGE_BIT_PAT_LARGE)
|
|
|
#define _PAGE_SPECIAL (_AT(pteval_t, 1) << _PAGE_BIT_SPECIAL)
|
|
|
#define _PAGE_CPA_TEST (_AT(pteval_t, 1) << _PAGE_BIT_CPA_TEST)
|
|
|
+#ifdef CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
|
|
|
+#define _PAGE_PKEY_BIT0 (_AT(pteval_t, 1) << _PAGE_BIT_PKEY_BIT0)
|
|
|
+#define _PAGE_PKEY_BIT1 (_AT(pteval_t, 1) << _PAGE_BIT_PKEY_BIT1)
|
|
|
+#define _PAGE_PKEY_BIT2 (_AT(pteval_t, 1) << _PAGE_BIT_PKEY_BIT2)
|
|
|
+#define _PAGE_PKEY_BIT3 (_AT(pteval_t, 1) << _PAGE_BIT_PKEY_BIT3)
|
|
|
+#else
|
|
|
+#define _PAGE_PKEY_BIT0 (_AT(pteval_t, 0))
|
|
|
+#define _PAGE_PKEY_BIT1 (_AT(pteval_t, 0))
|
|
|
+#define _PAGE_PKEY_BIT2 (_AT(pteval_t, 0))
|
|
|
+#define _PAGE_PKEY_BIT3 (_AT(pteval_t, 0))
|
|
|
+#endif
|
|
|
#define __HAVE_ARCH_PTE_SPECIAL
|
|
|
|
|
|
#ifdef CONFIG_KMEMCHECK
|