|
@@ -196,19 +196,21 @@ enum page_cache_mode {
|
|
#define __PAGE_KERNEL_NOENC (__PAGE_KERNEL)
|
|
#define __PAGE_KERNEL_NOENC (__PAGE_KERNEL)
|
|
#define __PAGE_KERNEL_NOENC_WP (__PAGE_KERNEL_WP)
|
|
#define __PAGE_KERNEL_NOENC_WP (__PAGE_KERNEL_WP)
|
|
|
|
|
|
-#define PAGE_KERNEL __pgprot(__PAGE_KERNEL | _PAGE_ENC)
|
|
|
|
-#define PAGE_KERNEL_NOENC __pgprot(__PAGE_KERNEL)
|
|
|
|
-#define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO | _PAGE_ENC)
|
|
|
|
-#define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC | _PAGE_ENC)
|
|
|
|
-#define PAGE_KERNEL_EXEC_NOENC __pgprot(__PAGE_KERNEL_EXEC)
|
|
|
|
-#define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX | _PAGE_ENC)
|
|
|
|
-#define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE | _PAGE_ENC)
|
|
|
|
-#define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE | _PAGE_ENC)
|
|
|
|
-#define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC | _PAGE_ENC)
|
|
|
|
-#define PAGE_KERNEL_VVAR __pgprot(__PAGE_KERNEL_VVAR | _PAGE_ENC)
|
|
|
|
-
|
|
|
|
-#define PAGE_KERNEL_IO __pgprot(__PAGE_KERNEL_IO)
|
|
|
|
-#define PAGE_KERNEL_IO_NOCACHE __pgprot(__PAGE_KERNEL_IO_NOCACHE)
|
|
|
|
|
|
+#define default_pgprot(x) __pgprot((x) & __default_kernel_pte_mask)
|
|
|
|
+
|
|
|
|
+#define PAGE_KERNEL default_pgprot(__PAGE_KERNEL | _PAGE_ENC)
|
|
|
|
+#define PAGE_KERNEL_NOENC default_pgprot(__PAGE_KERNEL)
|
|
|
|
+#define PAGE_KERNEL_RO default_pgprot(__PAGE_KERNEL_RO | _PAGE_ENC)
|
|
|
|
+#define PAGE_KERNEL_EXEC default_pgprot(__PAGE_KERNEL_EXEC | _PAGE_ENC)
|
|
|
|
+#define PAGE_KERNEL_EXEC_NOENC default_pgprot(__PAGE_KERNEL_EXEC)
|
|
|
|
+#define PAGE_KERNEL_RX default_pgprot(__PAGE_KERNEL_RX | _PAGE_ENC)
|
|
|
|
+#define PAGE_KERNEL_NOCACHE default_pgprot(__PAGE_KERNEL_NOCACHE | _PAGE_ENC)
|
|
|
|
+#define PAGE_KERNEL_LARGE default_pgprot(__PAGE_KERNEL_LARGE | _PAGE_ENC)
|
|
|
|
+#define PAGE_KERNEL_LARGE_EXEC default_pgprot(__PAGE_KERNEL_LARGE_EXEC | _PAGE_ENC)
|
|
|
|
+#define PAGE_KERNEL_VVAR default_pgprot(__PAGE_KERNEL_VVAR | _PAGE_ENC)
|
|
|
|
+
|
|
|
|
+#define PAGE_KERNEL_IO default_pgprot(__PAGE_KERNEL_IO)
|
|
|
|
+#define PAGE_KERNEL_IO_NOCACHE default_pgprot(__PAGE_KERNEL_IO_NOCACHE)
|
|
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
|
|
@@ -483,6 +485,7 @@ static inline pgprot_t pgprot_large_2_4k(pgprot_t pgprot)
|
|
typedef struct page *pgtable_t;
|
|
typedef struct page *pgtable_t;
|
|
|
|
|
|
extern pteval_t __supported_pte_mask;
|
|
extern pteval_t __supported_pte_mask;
|
|
|
|
+extern pteval_t __default_kernel_pte_mask;
|
|
extern void set_nx(void);
|
|
extern void set_nx(void);
|
|
extern int nx_enabled;
|
|
extern int nx_enabled;
|
|
|
|
|