forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/arch/powerpc/include/asm/nohash/pte-book3e.h
....@@ -60,13 +60,8 @@
6060 #define _PAGE_SPECIAL _PAGE_SW0
6161
6262 /* Base page size */
63
-#ifdef CONFIG_PPC_64K_PAGES
64
-#define _PAGE_PSIZE _PAGE_PSIZE_64K
65
-#define PTE_RPN_SHIFT (28)
66
-#else
6763 #define _PAGE_PSIZE _PAGE_PSIZE_4K
6864 #define PTE_RPN_SHIFT (24)
69
-#endif
7065
7166 #define PTE_WIMGE_SHIFT (19)
7267 #define PTE_BAP_SHIFT (2)
....@@ -77,7 +72,48 @@
7772 #define _PMD_PRESENT 0
7873 #define _PMD_PRESENT_MASK (PAGE_MASK)
7974 #define _PMD_BAD (~PAGE_MASK)
75
+#define _PMD_USER 0
76
+#else
77
+#define _PTE_NONE_MASK 0
8078 #endif
8179
80
+/*
81
+ * We define 2 sets of base prot bits, one for basic pages (ie,
82
+ * cacheable kernel and user pages) and one for non cacheable
83
+ * pages. We always set _PAGE_COHERENT when SMP is enabled or
84
+ * the processor might need it for DMA coherency.
85
+ */
86
+#define _PAGE_BASE_NC (_PAGE_PRESENT | _PAGE_ACCESSED | _PAGE_PSIZE)
87
+#if defined(CONFIG_SMP)
88
+#define _PAGE_BASE (_PAGE_BASE_NC | _PAGE_COHERENT)
89
+#else
90
+#define _PAGE_BASE (_PAGE_BASE_NC)
91
+#endif
92
+
93
+/* Permission masks used to generate the __P and __S table */
94
+#define PAGE_NONE __pgprot(_PAGE_BASE)
95
+#define PAGE_SHARED __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RW)
96
+#define PAGE_SHARED_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_RW | _PAGE_EXEC)
97
+#define PAGE_COPY __pgprot(_PAGE_BASE | _PAGE_USER)
98
+#define PAGE_COPY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_EXEC)
99
+#define PAGE_READONLY __pgprot(_PAGE_BASE | _PAGE_USER)
100
+#define PAGE_READONLY_X __pgprot(_PAGE_BASE | _PAGE_USER | _PAGE_EXEC)
101
+
102
+#ifndef __ASSEMBLY__
103
+static inline pte_t pte_mkprivileged(pte_t pte)
104
+{
105
+ return __pte((pte_val(pte) & ~_PAGE_USER) | _PAGE_PRIVILEGED);
106
+}
107
+
108
+#define pte_mkprivileged pte_mkprivileged
109
+
110
+static inline pte_t pte_mkuser(pte_t pte)
111
+{
112
+ return __pte((pte_val(pte) & ~_PAGE_PRIVILEGED) | _PAGE_USER);
113
+}
114
+
115
+#define pte_mkuser pte_mkuser
116
+#endif /* __ASSEMBLY__ */
117
+
82118 #endif /* __KERNEL__ */
83119 #endif /* _ASM_POWERPC_NOHASH_PTE_BOOK3E_H */