1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Initial page table for Linux kernel under Hexagon VM, |
4 | * |
5 | * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved. |
6 | */ |
7 | |
8 | /* |
9 | * These tables are pre-computed and linked into kernel. |
10 | */ |
11 | |
12 | #include <asm/vm_mmu.h> |
13 | /* #include <asm/iomap.h> */ |
14 | |
15 | /* |
16 | * Start with mapping PA=0 to both VA=0x0 and VA=0xc000000 as 16MB large pages. |
17 | * No user mode access, RWX, write-back cache. The entry needs |
18 | * to be replicated for all 4 virtual segments mapping to the page. |
19 | */ |
20 | |
21 | /* "Big Kernel Page" */ |
22 | #define BKP(pa) (((pa) & __HVM_PTE_PGMASK_4MB) \ |
23 | | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \ |
24 | | __HEXAGON_C_WB_L2 << 6 \ |
25 | | __HVM_PDE_S_16MB) |
26 | |
27 | /* No cache version */ |
28 | |
29 | #define BKPG_IO(pa) (((pa) & __HVM_PTE_PGMASK_16MB) \ |
30 | | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \ |
31 | | __HVM_PDE_S_16MB | __HEXAGON_C_DEV << 6 ) |
32 | |
33 | #define FOURK_IO(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \ |
34 | | __HVM_PTE_R | __HVM_PTE_W | __HVM_PTE_X \ |
35 | | __HEXAGON_C_DEV << 6 ) |
36 | |
37 | #define L2_PTR(pa) (((pa) & __HVM_PTE_PGMASK_4KB) \ |
38 | | __HVM_PDE_S_4KB ) |
39 | |
40 | #define X __HVM_PDE_S_INVALID |
41 | |
42 | .p2align 12 |
43 | .globl swapper_pg_dir |
44 | .globl _K_init_segtable |
45 | swapper_pg_dir: |
46 | /* VA 0x00000000 */ |
47 | .word X,X,X,X |
48 | .word X,X,X,X |
49 | .word X,X,X,X |
50 | .word X,X,X,X |
51 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
52 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
53 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
54 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
55 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
56 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
57 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
58 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
59 | /* VA 0x40000000 */ |
60 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
61 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
62 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
63 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
64 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
65 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
66 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
67 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
68 | /* VA 0x80000000 */ |
69 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
70 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
71 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
72 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
73 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
74 | /*0xa8*/.word X,X,X,X |
75 | #ifdef CONFIG_COMET_EARLY_UART_DEBUG |
76 | UART_PTE_ENTRY: |
77 | /*0xa9*/.word BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000),BKPG_IO(0xa9000000) |
78 | #else |
79 | /*0xa9*/.word X,X,X,X |
80 | #endif |
81 | /*0xaa*/.word X,X,X,X |
82 | /*0xab*/.word X,X,X,X |
83 | /*0xac*/.word X,X,X,X |
84 | /*0xad*/.word X,X,X,X |
85 | /*0xae*/.word X,X,X,X |
86 | /*0xaf*/.word X,X,X,X |
87 | /*0xb0*/.word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
88 | .word X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X |
89 | _K_init_segtable: |
90 | /* VA 0xC0000000 */ |
91 | .word BKP(0x00000000), BKP(0x00400000), BKP(0x00800000), BKP(0x00c00000) |
92 | .word BKP(0x01000000), BKP(0x01400000), BKP(0x01800000), BKP(0x01c00000) |
93 | .word BKP(0x02000000), BKP(0x02400000), BKP(0x02800000), BKP(0x02c00000) |
94 | .word BKP(0x03000000), BKP(0x03400000), BKP(0x03800000), BKP(0x03c00000) |
95 | .word BKP(0x04000000), BKP(0x04400000), BKP(0x04800000), BKP(0x04c00000) |
96 | .word BKP(0x05000000), BKP(0x05400000), BKP(0x05800000), BKP(0x05c00000) |
97 | .word BKP(0x06000000), BKP(0x06400000), BKP(0x06800000), BKP(0x06c00000) |
98 | .word BKP(0x07000000), BKP(0x07400000), BKP(0x07800000), BKP(0x07c00000) |
99 | |
100 | .word BKP(0x08000000), BKP(0x08400000), BKP(0x08800000), BKP(0x08c00000) |
101 | .word BKP(0x09000000), BKP(0x09400000), BKP(0x09800000), BKP(0x09c00000) |
102 | .word BKP(0x0a000000), BKP(0x0a400000), BKP(0x0a800000), BKP(0x0ac00000) |
103 | .word BKP(0x0b000000), BKP(0x0b400000), BKP(0x0b800000), BKP(0x0bc00000) |
104 | .word BKP(0x0c000000), BKP(0x0c400000), BKP(0x0c800000), BKP(0x0cc00000) |
105 | .word BKP(0x0d000000), BKP(0x0d400000), BKP(0x0d800000), BKP(0x0dc00000) |
106 | .word BKP(0x0e000000), BKP(0x0e400000), BKP(0x0e800000), BKP(0x0ec00000) |
107 | .word BKP(0x0f000000), BKP(0x0f400000), BKP(0x0f800000), BKP(0x0fc00000) |
108 | |
109 | .word BKP(0x10000000), BKP(0x10400000), BKP(0x10800000), BKP(0x10c00000) |
110 | .word BKP(0x11000000), BKP(0x11400000), BKP(0x11800000), BKP(0x11c00000) |
111 | .word BKP(0x12000000), BKP(0x12400000), BKP(0x12800000), BKP(0x12c00000) |
112 | .word BKP(0x13000000), BKP(0x13400000), BKP(0x13800000), BKP(0x13c00000) |
113 | .word BKP(0x14000000), BKP(0x14400000), BKP(0x14800000), BKP(0x14c00000) |
114 | .word BKP(0x15000000), BKP(0x15400000), BKP(0x15800000), BKP(0x15c00000) |
115 | .word BKP(0x16000000), BKP(0x16400000), BKP(0x16800000), BKP(0x16c00000) |
116 | .word BKP(0x17000000), BKP(0x17400000), BKP(0x17800000), BKP(0x17c00000) |
117 | |
118 | .word BKP(0x18000000), BKP(0x18400000), BKP(0x18800000), BKP(0x18c00000) |
119 | .word BKP(0x19000000), BKP(0x19400000), BKP(0x19800000), BKP(0x19c00000) |
120 | .word BKP(0x1a000000), BKP(0x1a400000), BKP(0x1a800000), BKP(0x1ac00000) |
121 | .word BKP(0x1b000000), BKP(0x1b400000), BKP(0x1b800000), BKP(0x1bc00000) |
122 | .word BKP(0x1c000000), BKP(0x1c400000), BKP(0x1c800000), BKP(0x1cc00000) |
123 | .word BKP(0x1d000000), BKP(0x1d400000), BKP(0x1d800000), BKP(0x1dc00000) |
124 | .word BKP(0x1e000000), BKP(0x1e400000), BKP(0x1e800000), BKP(0x1ec00000) |
125 | .word BKP(0x1f000000), BKP(0x1f400000), BKP(0x1f800000), BKP(0x1fc00000) |
126 | |
127 | .word BKP(0x20000000), BKP(0x20400000), BKP(0x20800000), BKP(0x20c00000) |
128 | .word BKP(0x21000000), BKP(0x21400000), BKP(0x21800000), BKP(0x21c00000) |
129 | .word BKP(0x22000000), BKP(0x22400000), BKP(0x22800000), BKP(0x22c00000) |
130 | .word BKP(0x23000000), BKP(0x23400000), BKP(0x23800000), BKP(0x23c00000) |
131 | .word BKP(0x24000000), BKP(0x24400000), BKP(0x24800000), BKP(0x24c00000) |
132 | .word BKP(0x25000000), BKP(0x25400000), BKP(0x25800000), BKP(0x25c00000) |
133 | .word BKP(0x26000000), BKP(0x26400000), BKP(0x26800000), BKP(0x26c00000) |
134 | .word BKP(0x27000000), BKP(0x27400000), BKP(0x27800000), BKP(0x27c00000) |
135 | |
136 | .word BKP(0x28000000), BKP(0x28400000), BKP(0x28800000), BKP(0x28c00000) |
137 | .word BKP(0x29000000), BKP(0x29400000), BKP(0x29800000), BKP(0x29c00000) |
138 | .word BKP(0x2a000000), BKP(0x2a400000), BKP(0x2a800000), BKP(0x2ac00000) |
139 | .word BKP(0x2b000000), BKP(0x2b400000), BKP(0x2b800000), BKP(0x2bc00000) |
140 | .word BKP(0x2c000000), BKP(0x2c400000), BKP(0x2c800000), BKP(0x2cc00000) |
141 | .word BKP(0x2d000000), BKP(0x2d400000), BKP(0x2d800000), BKP(0x2dc00000) |
142 | .word BKP(0x2e000000), BKP(0x2e400000), BKP(0x2e800000), BKP(0x2ec00000) |
143 | .word BKP(0x2f000000), BKP(0x2f400000), BKP(0x2f800000), BKP(0x2fc00000) |
144 | |
145 | .word BKP(0x30000000), BKP(0x30400000), BKP(0x30800000), BKP(0x30c00000) |
146 | .word BKP(0x31000000), BKP(0x31400000), BKP(0x31800000), BKP(0x31c00000) |
147 | .word BKP(0x32000000), BKP(0x32400000), BKP(0x32800000), BKP(0x32c00000) |
148 | .word BKP(0x33000000), BKP(0x33400000), BKP(0x33800000), BKP(0x33c00000) |
149 | .word BKP(0x34000000), BKP(0x34400000), BKP(0x34800000), BKP(0x34c00000) |
150 | .word BKP(0x35000000), BKP(0x35400000), BKP(0x35800000), BKP(0x35c00000) |
151 | .word BKP(0x36000000), BKP(0x36400000), BKP(0x36800000), BKP(0x36c00000) |
152 | .word BKP(0x37000000), BKP(0x37400000), BKP(0x37800000), BKP(0x37c00000) |
153 | |
154 | .word BKP(0x38000000), BKP(0x38400000), BKP(0x38800000), BKP(0x38c00000) |
155 | .word BKP(0x39000000), BKP(0x39400000), BKP(0x39800000), BKP(0x39c00000) |
156 | .word BKP(0x3a000000), BKP(0x3a400000), BKP(0x3a800000), BKP(0x3ac00000) |
157 | .word BKP(0x3b000000), BKP(0x3b400000), BKP(0x3b800000), BKP(0x3bc00000) |
158 | .word BKP(0x3c000000), BKP(0x3c400000), BKP(0x3c800000), BKP(0x3cc00000) |
159 | .word BKP(0x3d000000), BKP(0x3d400000), BKP(0x3d800000), BKP(0x3dc00000) |
160 | _K_io_map: |
161 | .word X,X,X,X /* 0x3e000000 - device IO early remap */ |
162 | .word X,X,X,X /* 0x3f000000 - hypervisor space*/ |
163 | |
164 | #if 0 |
165 | /* |
166 | * This is in here as an example for devices which need to be mapped really |
167 | * early. |
168 | */ |
169 | .p2align 12 |
170 | .globl _K_io_kmap |
171 | .globl _K_init_devicetable |
172 | _K_init_devicetable: /* Should be 4MB worth of entries */ |
173 | .word FOURK_IO(MSM_GPIO1_PHYS),FOURK_IO(MSM_GPIO2_PHYS),FOURK_IO(MSM_SIRC_PHYS),X |
174 | .word FOURK_IO(TLMM_GPIO1_PHYS),X,X,X |
175 | .word X,X,X,X |
176 | .word X,X,X,X |
177 | .word X,X,X,X |
178 | .word X,X,X,X |
179 | .word X,X,X,X |
180 | .word X,X,X,X |
181 | .word X,X,X,X |
182 | .word X,X,X,X |
183 | .word X,X,X,X |
184 | .word X,X,X,X |
185 | .word X,X,X,X |
186 | .word X,X,X,X |
187 | .word X,X,X,X |
188 | .word X,X,X,X |
189 | .word X,X,X,X |
190 | .word X,X,X,X |
191 | .word X,X,X,X |
192 | .word X,X,X,X |
193 | .word X,X,X,X |
194 | .word X,X,X,X |
195 | .word X,X,X,X |
196 | .word X,X,X,X |
197 | .word X,X,X,X |
198 | .word X,X,X,X |
199 | .word X,X,X,X |
200 | .word X,X,X,X |
201 | .word X,X,X,X |
202 | .word X,X,X,X |
203 | .word X,X,X,X |
204 | .word X,X,X,X |
205 | .word X,X,X,X |
206 | .word X,X,X,X |
207 | .word X,X,X,X |
208 | .word X,X,X,X |
209 | .word X,X,X,X |
210 | .word X,X,X,X |
211 | .word X,X,X,X |
212 | .word X,X,X,X |
213 | .word X,X,X,X |
214 | .word X,X,X,X |
215 | .word X,X,X,X |
216 | .word X,X,X,X |
217 | .word X,X,X,X |
218 | .word X,X,X,X |
219 | .word X,X,X,X |
220 | .word X,X,X,X |
221 | .word X,X,X,X |
222 | .word X,X,X,X |
223 | .word X,X,X,X |
224 | .word X,X,X,X |
225 | .word X,X,X,X |
226 | .word X,X,X,X |
227 | .word X,X,X,X |
228 | .word X,X,X,X |
229 | .word X,X,X,X |
230 | .word X,X,X,X |
231 | .word X,X,X,X |
232 | .word X,X,X,X |
233 | .word X,X,X,X |
234 | .word X,X,X,X |
235 | .word X,X,X,X |
236 | .word X,X,X,X |
237 | .word X,X,X,X |
238 | .word X,X,X,X |
239 | .word X,X,X,X |
240 | .word X,X,X,X |
241 | .word X,X,X,X |
242 | .word X,X,X,X |
243 | .word X,X,X,X |
244 | .word X,X,X,X |
245 | .word X,X,X,X |
246 | .word X,X,X,X |
247 | .word X,X,X,X |
248 | .word X,X,X,X |
249 | .word X,X,X,X |
250 | .word X,X,X,X |
251 | .word X,X,X,X |
252 | .word X,X,X,X |
253 | .word X,X,X,X |
254 | .word X,X,X,X |
255 | .word X,X,X,X |
256 | .word X,X,X,X |
257 | .word X,X,X,X |
258 | .word X,X,X,X |
259 | .word X,X,X,X |
260 | .word X,X,X,X |
261 | .word X,X,X,X |
262 | .word X,X,X,X |
263 | .word X,X,X,X |
264 | .word X,X,X,X |
265 | .word X,X,X,X |
266 | .word X,X,X,X |
267 | .word X,X,X,X |
268 | .word X,X,X,X |
269 | .word X,X,X,X |
270 | .word X,X,X,X |
271 | .word X,X,X,X |
272 | .word X,X,X,X |
273 | .word X,X,X,X |
274 | .word X,X,X,X |
275 | .word X,X,X,X |
276 | .word X,X,X,X |
277 | .word X,X,X,X |
278 | .word X,X,X,X |
279 | .word X,X,X,X |
280 | .word X,X,X,X |
281 | .word X,X,X,X |
282 | .word X,X,X,X |
283 | .word X,X,X,X |
284 | .word X,X,X,X |
285 | .word X,X,X,X |
286 | .word X,X,X,X |
287 | .word X,X,X,X |
288 | .word X,X,X,X |
289 | .word X,X,X,X |
290 | .word X,X,X,X |
291 | .word X,X,X,X |
292 | .word X,X,X,X |
293 | .word X,X,X,X |
294 | .word X,X,X,X |
295 | .word X,X,X,X |
296 | .word X,X,X,X |
297 | .word X,X,X,X |
298 | .word X,X,X,X |
299 | .word X,X,X,X |
300 | .word X,X,X,X |
301 | .word X,X,X,X |
302 | .word X,X,X,X |
303 | .word X,X,X,X |
304 | .word X,X,X,X |
305 | .word X,X,X,X |
306 | .word X,X,X,X |
307 | .word X,X,X,X |
308 | .word X,X,X,X |
309 | .word X,X,X,X |
310 | .word X,X,X,X |
311 | .word X,X,X,X |
312 | .word X,X,X,X |
313 | .word X,X,X,X |
314 | .word X,X,X,X |
315 | .word X,X,X,X |
316 | .word X,X,X,X |
317 | .word X,X,X,X |
318 | .word X,X,X,X |
319 | .word X,X,X,X |
320 | .word X,X,X,X |
321 | .word X,X,X,X |
322 | .word X,X,X,X |
323 | .word X,X,X,X |
324 | .word X,X,X,X |
325 | .word X,X,X,X |
326 | .word X,X,X,X |
327 | .word X,X,X,X |
328 | .word X,X,X,X |
329 | .word X,X,X,X |
330 | .word X,X,X,X |
331 | .word X,X,X,X |
332 | .word X,X,X,X |
333 | .word X,X,X,X |
334 | .word X,X,X,X |
335 | .word X,X,X,X |
336 | .word X,X,X,X |
337 | .word X,X,X,X |
338 | .word X,X,X,X |
339 | .word X,X,X,X |
340 | .word X,X,X,X |
341 | .word X,X,X,X |
342 | .word X,X,X,X |
343 | .word X,X,X,X |
344 | .word X,X,X,X |
345 | .word X,X,X,X |
346 | .word X,X,X,X |
347 | .word X,X,X,X |
348 | .word X,X,X,X |
349 | .word X,X,X,X |
350 | .word X,X,X,X |
351 | .word X,X,X,X |
352 | .word X,X,X,X |
353 | .word X,X,X,X |
354 | .word X,X,X,X |
355 | .word X,X,X,X |
356 | .word X,X,X,X |
357 | .word X,X,X,X |
358 | .word X,X,X,X |
359 | .word X,X,X,X |
360 | .word X,X,X,X |
361 | .word X,X,X,X |
362 | .word X,X,X,X |
363 | .word X,X,X,X |
364 | .word X,X,X,X |
365 | .word X,X,X,X |
366 | .word X,X,X,X |
367 | .word X,X,X,X |
368 | .word X,X,X,X |
369 | .word X,X,X,X |
370 | .word X,X,X,X |
371 | .word X,X,X,X |
372 | .word X,X,X,X |
373 | .word X,X,X,X |
374 | .word X,X,X,X |
375 | .word X,X,X,X |
376 | .word X,X,X,X |
377 | .word X,X,X,X |
378 | .word X,X,X,X |
379 | .word X,X,X,X |
380 | .word X,X,X,X |
381 | .word X,X,X,X |
382 | .word X,X,X,X |
383 | .word X,X,X,X |
384 | .word X,X,X,X |
385 | .word X,X,X,X |
386 | .word X,X,X,X |
387 | .word X,X,X,X |
388 | .word X,X,X,X |
389 | .word X,X,X,X |
390 | .word X,X,X,X |
391 | .word X,X,X,X |
392 | .word X,X,X,X |
393 | .word X,X,X,X |
394 | .word X,X,X,X |
395 | .word X,X,X,X |
396 | .word X,X,X,X |
397 | .word X,X,X,X |
398 | .word X,X,X,X |
399 | .word X,X,X,X |
400 | .word X,X,X,X |
401 | .word X,X,X,X |
402 | .word X,X,X,X |
403 | .word X,X,X,X |
404 | .word X,X,X,X |
405 | .word X,X,X,X |
406 | .word X,X,X,X |
407 | .word X,X,X,X |
408 | .word X,X,X,X |
409 | .word X,X,X,X |
410 | .word X,X,X,X |
411 | .word X,X,X,X |
412 | .word X,X,X,X |
413 | .word X,X,X,X |
414 | .word X,X,X,X |
415 | .word X,X,X,X |
416 | .word X,X,X,X |
417 | .word X,X,X,X |
418 | .word X,X,X,X |
419 | .word X,X,X,X |
420 | .word X,X,X,X |
421 | .word X,X,X,X |
422 | .word X,X,X,X |
423 | .word X,X,X,X |
424 | .word X,X,X,X |
425 | .word X,X,X,X |
426 | .word X,X,X,X |
427 | .word X,X,X,X |
428 | .word X,X,X,X |
429 | #endif |
430 | |