diff options
-rw-r--r-- | arch/arm/kernel/asm-offsets.c | 3 | ||||
-rw-r--r-- | arch/arm/kernel/head.S | 5 | ||||
-rw-r--r-- | arch/arm/mm/mm-armv.c | 37 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020.S | 3 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020e.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1022.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1026.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm6_7.S | 16 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm720.S | 8 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm920.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm922.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm925.S | 8 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm926.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa110.S | 3 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa1100.S | 6 | ||||
-rw-r--r-- | arch/arm/mm/proc-v6.S | 4 | ||||
-rw-r--r-- | arch/arm/mm/proc-xsc3.S | 9 | ||||
-rw-r--r-- | arch/arm/mm/proc-xscale.S | 39 | ||||
-rw-r--r-- | include/asm-arm/pgtable-hwdef.h | 1 | ||||
-rw-r--r-- | include/asm-arm/procinfo.h | 3 |
20 files changed, 147 insertions, 22 deletions
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c index 447ede5143a8..cc2d58d028e1 100644 --- a/arch/arm/kernel/asm-offsets.c +++ b/arch/arm/kernel/asm-offsets.c | |||
@@ -105,6 +105,7 @@ int main(void) | |||
105 | BLANK(); | 105 | BLANK(); |
106 | DEFINE(PROC_INFO_SZ, sizeof(struct proc_info_list)); | 106 | DEFINE(PROC_INFO_SZ, sizeof(struct proc_info_list)); |
107 | DEFINE(PROCINFO_INITFUNC, offsetof(struct proc_info_list, __cpu_flush)); | 107 | DEFINE(PROCINFO_INITFUNC, offsetof(struct proc_info_list, __cpu_flush)); |
108 | DEFINE(PROCINFO_MMUFLAGS, offsetof(struct proc_info_list, __cpu_mmu_flags)); | 108 | DEFINE(PROCINFO_MM_MMUFLAGS, offsetof(struct proc_info_list, __cpu_mm_mmu_flags)); |
109 | DEFINE(PROCINFO_IO_MMUFLAGS, offsetof(struct proc_info_list, __cpu_io_mmu_flags)); | ||
109 | return 0; | 110 | return 0; |
110 | } | 111 | } |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 330b9476c398..81cb902c487c 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -221,7 +221,7 @@ __create_page_tables: | |||
221 | teq r0, r6 | 221 | teq r0, r6 |
222 | bne 1b | 222 | bne 1b |
223 | 223 | ||
224 | ldr r7, [r10, #PROCINFO_MMUFLAGS] @ mmuflags | 224 | ldr r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags |
225 | 225 | ||
226 | /* | 226 | /* |
227 | * Create identity mapping for first MB of kernel to | 227 | * Create identity mapping for first MB of kernel to |
@@ -272,8 +272,7 @@ __create_page_tables: | |||
272 | #endif | 272 | #endif |
273 | 273 | ||
274 | #ifdef CONFIG_DEBUG_LL | 274 | #ifdef CONFIG_DEBUG_LL |
275 | bic r7, r7, #0x0c @ turn off cacheable | 275 | ldr r7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags |
276 | @ and bufferable bits | ||
277 | /* | 276 | /* |
278 | * Map in IO space for serial debugging. | 277 | * Map in IO space for serial debugging. |
279 | * This allows debug messages to be output | 278 | * This allows debug messages to be output |
diff --git a/arch/arm/mm/mm-armv.c b/arch/arm/mm/mm-armv.c index 95273de4f772..d06440cc4e8f 100644 --- a/arch/arm/mm/mm-armv.c +++ b/arch/arm/mm/mm-armv.c | |||
@@ -303,16 +303,16 @@ static struct mem_types mem_types[] __initdata = { | |||
303 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | | 303 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | |
304 | L_PTE_WRITE, | 304 | L_PTE_WRITE, |
305 | .prot_l1 = PMD_TYPE_TABLE, | 305 | .prot_l1 = PMD_TYPE_TABLE, |
306 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_UNCACHED | | 306 | .prot_sect = PMD_TYPE_SECT | PMD_BIT4 | PMD_SECT_UNCACHED | |
307 | PMD_SECT_AP_WRITE, | 307 | PMD_SECT_AP_WRITE, |
308 | .domain = DOMAIN_IO, | 308 | .domain = DOMAIN_IO, |
309 | }, | 309 | }, |
310 | [MT_CACHECLEAN] = { | 310 | [MT_CACHECLEAN] = { |
311 | .prot_sect = PMD_TYPE_SECT, | 311 | .prot_sect = PMD_TYPE_SECT | PMD_BIT4, |
312 | .domain = DOMAIN_KERNEL, | 312 | .domain = DOMAIN_KERNEL, |
313 | }, | 313 | }, |
314 | [MT_MINICLEAN] = { | 314 | [MT_MINICLEAN] = { |
315 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_MINICACHE, | 315 | .prot_sect = PMD_TYPE_SECT | PMD_BIT4 | PMD_SECT_MINICACHE, |
316 | .domain = DOMAIN_KERNEL, | 316 | .domain = DOMAIN_KERNEL, |
317 | }, | 317 | }, |
318 | [MT_LOW_VECTORS] = { | 318 | [MT_LOW_VECTORS] = { |
@@ -328,25 +328,25 @@ static struct mem_types mem_types[] __initdata = { | |||
328 | .domain = DOMAIN_USER, | 328 | .domain = DOMAIN_USER, |
329 | }, | 329 | }, |
330 | [MT_MEMORY] = { | 330 | [MT_MEMORY] = { |
331 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE, | 331 | .prot_sect = PMD_TYPE_SECT | PMD_BIT4 | PMD_SECT_AP_WRITE, |
332 | .domain = DOMAIN_KERNEL, | 332 | .domain = DOMAIN_KERNEL, |
333 | }, | 333 | }, |
334 | [MT_ROM] = { | 334 | [MT_ROM] = { |
335 | .prot_sect = PMD_TYPE_SECT, | 335 | .prot_sect = PMD_TYPE_SECT | PMD_BIT4, |
336 | .domain = DOMAIN_KERNEL, | 336 | .domain = DOMAIN_KERNEL, |
337 | }, | 337 | }, |
338 | [MT_IXP2000_DEVICE] = { /* IXP2400 requires XCB=101 for on-chip I/O */ | 338 | [MT_IXP2000_DEVICE] = { /* IXP2400 requires XCB=101 for on-chip I/O */ |
339 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | | 339 | .prot_pte = L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | |
340 | L_PTE_WRITE, | 340 | L_PTE_WRITE, |
341 | .prot_l1 = PMD_TYPE_TABLE, | 341 | .prot_l1 = PMD_TYPE_TABLE, |
342 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_UNCACHED | | 342 | .prot_sect = PMD_TYPE_SECT | PMD_BIT4 | PMD_SECT_UNCACHED | |
343 | PMD_SECT_AP_WRITE | PMD_SECT_BUFFERABLE | | 343 | PMD_SECT_AP_WRITE | PMD_SECT_BUFFERABLE | |
344 | PMD_SECT_TEX(1), | 344 | PMD_SECT_TEX(1), |
345 | .domain = DOMAIN_IO, | 345 | .domain = DOMAIN_IO, |
346 | }, | 346 | }, |
347 | [MT_NONSHARED_DEVICE] = { | 347 | [MT_NONSHARED_DEVICE] = { |
348 | .prot_l1 = PMD_TYPE_TABLE, | 348 | .prot_l1 = PMD_TYPE_TABLE, |
349 | .prot_sect = PMD_TYPE_SECT | PMD_SECT_NONSHARED_DEV | | 349 | .prot_sect = PMD_TYPE_SECT | PMD_BIT4 | PMD_SECT_NONSHARED_DEV | |
350 | PMD_SECT_AP_WRITE, | 350 | PMD_SECT_AP_WRITE, |
351 | .domain = DOMAIN_IO, | 351 | .domain = DOMAIN_IO, |
352 | } | 352 | } |
@@ -376,14 +376,21 @@ void __init build_mem_type_table(void) | |||
376 | ecc_mask = 0; | 376 | ecc_mask = 0; |
377 | } | 377 | } |
378 | 378 | ||
379 | if (cpu_arch <= CPU_ARCH_ARMv5TEJ && !cpu_is_xscale()) { | 379 | /* |
380 | for (i = 0; i < ARRAY_SIZE(mem_types); i++) { | 380 | * Xscale must not have PMD bit 4 set for section mappings. |
381 | */ | ||
382 | if (cpu_is_xscale()) | ||
383 | for (i = 0; i < ARRAY_SIZE(mem_types); i++) | ||
384 | mem_types[i].prot_sect &= ~PMD_BIT4; | ||
385 | |||
386 | /* | ||
387 | * ARMv5 and lower, excluding Xscale, bit 4 must be set for | ||
388 | * page tables. | ||
389 | */ | ||
390 | if (cpu_arch < CPU_ARCH_ARMv6 && !cpu_is_xscale()) | ||
391 | for (i = 0; i < ARRAY_SIZE(mem_types); i++) | ||
381 | if (mem_types[i].prot_l1) | 392 | if (mem_types[i].prot_l1) |
382 | mem_types[i].prot_l1 |= PMD_BIT4; | 393 | mem_types[i].prot_l1 |= PMD_BIT4; |
383 | if (mem_types[i].prot_sect) | ||
384 | mem_types[i].prot_sect |= PMD_BIT4; | ||
385 | } | ||
386 | } | ||
387 | 394 | ||
388 | cp = &cache_policies[cachepolicy]; | 395 | cp = &cache_policies[cachepolicy]; |
389 | kern_pgprot = user_pgprot = cp->pte; | 396 | kern_pgprot = user_pgprot = cp->pte; |
@@ -407,8 +414,8 @@ void __init build_mem_type_table(void) | |||
407 | * bit 4 becomes XN which we must clear for the | 414 | * bit 4 becomes XN which we must clear for the |
408 | * kernel memory mapping. | 415 | * kernel memory mapping. |
409 | */ | 416 | */ |
410 | mem_types[MT_MEMORY].prot_sect &= ~PMD_BIT4; | 417 | mem_types[MT_MEMORY].prot_sect &= ~PMD_SECT_XN; |
411 | mem_types[MT_ROM].prot_sect &= ~PMD_BIT4; | 418 | mem_types[MT_ROM].prot_sect &= ~PMD_SECT_XN; |
412 | 419 | ||
413 | /* | 420 | /* |
414 | * Mark cache clean areas and XIP ROM read only | 421 | * Mark cache clean areas and XIP ROM read only |
diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S index b9abbafca812..efeebe77891f 100644 --- a/arch/arm/mm/proc-arm1020.S +++ b/arch/arm/mm/proc-arm1020.S | |||
@@ -527,6 +527,9 @@ __arm1020_proc_info: | |||
527 | .long PMD_TYPE_SECT | \ | 527 | .long PMD_TYPE_SECT | \ |
528 | PMD_SECT_AP_WRITE | \ | 528 | PMD_SECT_AP_WRITE | \ |
529 | PMD_SECT_AP_READ | 529 | PMD_SECT_AP_READ |
530 | .long PMD_TYPE_SECT | \ | ||
531 | PMD_SECT_AP_WRITE | \ | ||
532 | PMD_SECT_AP_READ | ||
530 | b __arm1020_setup | 533 | b __arm1020_setup |
531 | .long cpu_arch_name | 534 | .long cpu_arch_name |
532 | .long cpu_elf_name | 535 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S index 8c7e25f4b7e7..78622ac1e732 100644 --- a/arch/arm/mm/proc-arm1020e.S +++ b/arch/arm/mm/proc-arm1020e.S | |||
@@ -492,6 +492,10 @@ __arm1020e_proc_info: | |||
492 | PMD_BIT4 | \ | 492 | PMD_BIT4 | \ |
493 | PMD_SECT_AP_WRITE | \ | 493 | PMD_SECT_AP_WRITE | \ |
494 | PMD_SECT_AP_READ | 494 | PMD_SECT_AP_READ |
495 | .long PMD_TYPE_SECT | \ | ||
496 | PMD_BIT4 | \ | ||
497 | PMD_SECT_AP_WRITE | \ | ||
498 | PMD_SECT_AP_READ | ||
495 | b __arm1020e_setup | 499 | b __arm1020e_setup |
496 | .long cpu_arch_name | 500 | .long cpu_arch_name |
497 | .long cpu_elf_name | 501 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S index 92218e6b3906..840dfc85ba6d 100644 --- a/arch/arm/mm/proc-arm1022.S +++ b/arch/arm/mm/proc-arm1022.S | |||
@@ -475,6 +475,10 @@ __arm1022_proc_info: | |||
475 | PMD_BIT4 | \ | 475 | PMD_BIT4 | \ |
476 | PMD_SECT_AP_WRITE | \ | 476 | PMD_SECT_AP_WRITE | \ |
477 | PMD_SECT_AP_READ | 477 | PMD_SECT_AP_READ |
478 | .long PMD_TYPE_SECT | \ | ||
479 | PMD_BIT4 | \ | ||
480 | PMD_SECT_AP_WRITE | \ | ||
481 | PMD_SECT_AP_READ | ||
478 | b __arm1022_setup | 482 | b __arm1022_setup |
479 | .long cpu_arch_name | 483 | .long cpu_arch_name |
480 | .long cpu_elf_name | 484 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S index 2796c8e0ddf3..72b75d9c712a 100644 --- a/arch/arm/mm/proc-arm1026.S +++ b/arch/arm/mm/proc-arm1026.S | |||
@@ -471,6 +471,10 @@ __arm1026_proc_info: | |||
471 | PMD_BIT4 | \ | 471 | PMD_BIT4 | \ |
472 | PMD_SECT_AP_WRITE | \ | 472 | PMD_SECT_AP_WRITE | \ |
473 | PMD_SECT_AP_READ | 473 | PMD_SECT_AP_READ |
474 | .long PMD_TYPE_SECT | \ | ||
475 | PMD_BIT4 | \ | ||
476 | PMD_SECT_AP_WRITE | \ | ||
477 | PMD_SECT_AP_READ | ||
474 | b __arm1026_setup | 478 | b __arm1026_setup |
475 | .long cpu_arch_name | 479 | .long cpu_arch_name |
476 | .long cpu_elf_name | 480 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S index 7a705edfa4b2..0432e4806888 100644 --- a/arch/arm/mm/proc-arm6_7.S +++ b/arch/arm/mm/proc-arm6_7.S | |||
@@ -355,6 +355,10 @@ __arm6_proc_info: | |||
355 | .long 0x41560600 | 355 | .long 0x41560600 |
356 | .long 0xfffffff0 | 356 | .long 0xfffffff0 |
357 | .long 0x00000c1e | 357 | .long 0x00000c1e |
358 | .long PMD_TYPE_SECT | \ | ||
359 | PMD_BIT4 | \ | ||
360 | PMD_SECT_AP_WRITE | \ | ||
361 | PMD_SECT_AP_READ | ||
358 | b __arm6_setup | 362 | b __arm6_setup |
359 | .long cpu_arch_name | 363 | .long cpu_arch_name |
360 | .long cpu_elf_name | 364 | .long cpu_elf_name |
@@ -371,6 +375,10 @@ __arm610_proc_info: | |||
371 | .long 0x41560610 | 375 | .long 0x41560610 |
372 | .long 0xfffffff0 | 376 | .long 0xfffffff0 |
373 | .long 0x00000c1e | 377 | .long 0x00000c1e |
378 | .long PMD_TYPE_SECT | \ | ||
379 | PMD_BIT4 | \ | ||
380 | PMD_SECT_AP_WRITE | \ | ||
381 | PMD_SECT_AP_READ | ||
374 | b __arm6_setup | 382 | b __arm6_setup |
375 | .long cpu_arch_name | 383 | .long cpu_arch_name |
376 | .long cpu_elf_name | 384 | .long cpu_elf_name |
@@ -387,6 +395,10 @@ __arm7_proc_info: | |||
387 | .long 0x41007000 | 395 | .long 0x41007000 |
388 | .long 0xffffff00 | 396 | .long 0xffffff00 |
389 | .long 0x00000c1e | 397 | .long 0x00000c1e |
398 | .long PMD_TYPE_SECT | \ | ||
399 | PMD_BIT4 | \ | ||
400 | PMD_SECT_AP_WRITE | \ | ||
401 | PMD_SECT_AP_READ | ||
390 | b __arm7_setup | 402 | b __arm7_setup |
391 | .long cpu_arch_name | 403 | .long cpu_arch_name |
392 | .long cpu_elf_name | 404 | .long cpu_elf_name |
@@ -408,6 +420,10 @@ __arm710_proc_info: | |||
408 | PMD_BIT4 | \ | 420 | PMD_BIT4 | \ |
409 | PMD_SECT_AP_WRITE | \ | 421 | PMD_SECT_AP_WRITE | \ |
410 | PMD_SECT_AP_READ | 422 | PMD_SECT_AP_READ |
423 | .long PMD_TYPE_SECT | \ | ||
424 | PMD_BIT4 | \ | ||
425 | PMD_SECT_AP_WRITE | \ | ||
426 | PMD_SECT_AP_READ | ||
411 | b __arm7_setup | 427 | b __arm7_setup |
412 | .long cpu_arch_name | 428 | .long cpu_arch_name |
413 | .long cpu_elf_name | 429 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S index 86102467d37f..fb4110a9db6f 100644 --- a/arch/arm/mm/proc-arm720.S +++ b/arch/arm/mm/proc-arm720.S | |||
@@ -246,6 +246,10 @@ __arm710_proc_info: | |||
246 | PMD_BIT4 | \ | 246 | PMD_BIT4 | \ |
247 | PMD_SECT_AP_WRITE | \ | 247 | PMD_SECT_AP_WRITE | \ |
248 | PMD_SECT_AP_READ | 248 | PMD_SECT_AP_READ |
249 | .long PMD_TYPE_SECT | \ | ||
250 | PMD_BIT4 | \ | ||
251 | PMD_SECT_AP_WRITE | \ | ||
252 | PMD_SECT_AP_READ | ||
249 | b __arm710_setup @ cpu_flush | 253 | b __arm710_setup @ cpu_flush |
250 | .long cpu_arch_name @ arch_name | 254 | .long cpu_arch_name @ arch_name |
251 | .long cpu_elf_name @ elf_name | 255 | .long cpu_elf_name @ elf_name |
@@ -267,6 +271,10 @@ __arm720_proc_info: | |||
267 | PMD_BIT4 | \ | 271 | PMD_BIT4 | \ |
268 | PMD_SECT_AP_WRITE | \ | 272 | PMD_SECT_AP_WRITE | \ |
269 | PMD_SECT_AP_READ | 273 | PMD_SECT_AP_READ |
274 | .long PMD_TYPE_SECT | \ | ||
275 | PMD_BIT4 | \ | ||
276 | PMD_SECT_AP_WRITE | \ | ||
277 | PMD_SECT_AP_READ | ||
270 | b __arm720_setup @ cpu_flush | 278 | b __arm720_setup @ cpu_flush |
271 | .long cpu_arch_name @ arch_name | 279 | .long cpu_arch_name @ arch_name |
272 | .long cpu_elf_name @ elf_name | 280 | .long cpu_elf_name @ elf_name |
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index 02af3e2a8247..b9f1bd11bc62 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
@@ -461,6 +461,10 @@ __arm920_proc_info: | |||
461 | PMD_BIT4 | \ | 461 | PMD_BIT4 | \ |
462 | PMD_SECT_AP_WRITE | \ | 462 | PMD_SECT_AP_WRITE | \ |
463 | PMD_SECT_AP_READ | 463 | PMD_SECT_AP_READ |
464 | .long PMD_TYPE_SECT | \ | ||
465 | PMD_BIT4 | \ | ||
466 | PMD_SECT_AP_WRITE | \ | ||
467 | PMD_SECT_AP_READ | ||
464 | b __arm920_setup | 468 | b __arm920_setup |
465 | .long cpu_arch_name | 469 | .long cpu_arch_name |
466 | .long cpu_elf_name | 470 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S index 33dae4929f09..bda0aea4ce82 100644 --- a/arch/arm/mm/proc-arm922.S +++ b/arch/arm/mm/proc-arm922.S | |||
@@ -465,6 +465,10 @@ __arm922_proc_info: | |||
465 | PMD_BIT4 | \ | 465 | PMD_BIT4 | \ |
466 | PMD_SECT_AP_WRITE | \ | 466 | PMD_SECT_AP_WRITE | \ |
467 | PMD_SECT_AP_READ | 467 | PMD_SECT_AP_READ |
468 | .long PMD_TYPE_SECT | \ | ||
469 | PMD_BIT4 | \ | ||
470 | PMD_SECT_AP_WRITE | \ | ||
471 | PMD_SECT_AP_READ | ||
468 | b __arm922_setup | 472 | b __arm922_setup |
469 | .long cpu_arch_name | 473 | .long cpu_arch_name |
470 | .long cpu_elf_name | 474 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S index aaa9f985b246..a28da8f0578f 100644 --- a/arch/arm/mm/proc-arm925.S +++ b/arch/arm/mm/proc-arm925.S | |||
@@ -526,6 +526,10 @@ __arm925_proc_info: | |||
526 | PMD_BIT4 | \ | 526 | PMD_BIT4 | \ |
527 | PMD_SECT_AP_WRITE | \ | 527 | PMD_SECT_AP_WRITE | \ |
528 | PMD_SECT_AP_READ | 528 | PMD_SECT_AP_READ |
529 | .long PMD_TYPE_SECT | \ | ||
530 | PMD_BIT4 | \ | ||
531 | PMD_SECT_AP_WRITE | \ | ||
532 | PMD_SECT_AP_READ | ||
529 | b __arm925_setup | 533 | b __arm925_setup |
530 | .long cpu_arch_name | 534 | .long cpu_arch_name |
531 | .long cpu_elf_name | 535 | .long cpu_elf_name |
@@ -545,6 +549,10 @@ __arm915_proc_info: | |||
545 | PMD_BIT4 | \ | 549 | PMD_BIT4 | \ |
546 | PMD_SECT_AP_WRITE | \ | 550 | PMD_SECT_AP_WRITE | \ |
547 | PMD_SECT_AP_READ | 551 | PMD_SECT_AP_READ |
552 | .long PMD_TYPE_SECT | \ | ||
553 | PMD_BIT4 | \ | ||
554 | PMD_SECT_AP_WRITE | \ | ||
555 | PMD_SECT_AP_READ | ||
548 | b __arm925_setup | 556 | b __arm925_setup |
549 | .long cpu_arch_name | 557 | .long cpu_arch_name |
550 | .long cpu_elf_name | 558 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index ce246dd7b407..496a2335d69e 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
@@ -477,6 +477,10 @@ __arm926_proc_info: | |||
477 | PMD_BIT4 | \ | 477 | PMD_BIT4 | \ |
478 | PMD_SECT_AP_WRITE | \ | 478 | PMD_SECT_AP_WRITE | \ |
479 | PMD_SECT_AP_READ | 479 | PMD_SECT_AP_READ |
480 | .long PMD_TYPE_SECT | \ | ||
481 | PMD_BIT4 | \ | ||
482 | PMD_SECT_AP_WRITE | \ | ||
483 | PMD_SECT_AP_READ | ||
480 | b __arm926_setup | 484 | b __arm926_setup |
481 | .long cpu_arch_name | 485 | .long cpu_arch_name |
482 | .long cpu_elf_name | 486 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S index 5a760a2c629c..31a09087865d 100644 --- a/arch/arm/mm/proc-sa110.S +++ b/arch/arm/mm/proc-sa110.S | |||
@@ -255,6 +255,9 @@ __sa110_proc_info: | |||
255 | PMD_SECT_CACHEABLE | \ | 255 | PMD_SECT_CACHEABLE | \ |
256 | PMD_SECT_AP_WRITE | \ | 256 | PMD_SECT_AP_WRITE | \ |
257 | PMD_SECT_AP_READ | 257 | PMD_SECT_AP_READ |
258 | .long PMD_TYPE_SECT | \ | ||
259 | PMD_SECT_AP_WRITE | \ | ||
260 | PMD_SECT_AP_READ | ||
258 | b __sa110_setup | 261 | b __sa110_setup |
259 | .long cpu_arch_name | 262 | .long cpu_arch_name |
260 | .long cpu_elf_name | 263 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 0a2107ad4c32..4e2489c3e1cc 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
@@ -276,6 +276,9 @@ __sa1100_proc_info: | |||
276 | PMD_SECT_CACHEABLE | \ | 276 | PMD_SECT_CACHEABLE | \ |
277 | PMD_SECT_AP_WRITE | \ | 277 | PMD_SECT_AP_WRITE | \ |
278 | PMD_SECT_AP_READ | 278 | PMD_SECT_AP_READ |
279 | .long PMD_TYPE_SECT | \ | ||
280 | PMD_SECT_AP_WRITE | \ | ||
281 | PMD_SECT_AP_READ | ||
279 | b __sa1100_setup | 282 | b __sa1100_setup |
280 | .long cpu_arch_name | 283 | .long cpu_arch_name |
281 | .long cpu_elf_name | 284 | .long cpu_elf_name |
@@ -296,6 +299,9 @@ __sa1110_proc_info: | |||
296 | PMD_SECT_CACHEABLE | \ | 299 | PMD_SECT_CACHEABLE | \ |
297 | PMD_SECT_AP_WRITE | \ | 300 | PMD_SECT_AP_WRITE | \ |
298 | PMD_SECT_AP_READ | 301 | PMD_SECT_AP_READ |
302 | .long PMD_TYPE_SECT | \ | ||
303 | PMD_SECT_AP_WRITE | \ | ||
304 | PMD_SECT_AP_READ | ||
299 | b __sa1100_setup | 305 | b __sa1100_setup |
300 | .long cpu_arch_name | 306 | .long cpu_arch_name |
301 | .long cpu_elf_name | 307 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index ca13d4d05f65..ff778967a005 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -269,6 +269,10 @@ __v6_proc_info: | |||
269 | PMD_SECT_CACHEABLE | \ | 269 | PMD_SECT_CACHEABLE | \ |
270 | PMD_SECT_AP_WRITE | \ | 270 | PMD_SECT_AP_WRITE | \ |
271 | PMD_SECT_AP_READ | 271 | PMD_SECT_AP_READ |
272 | .long PMD_TYPE_SECT | \ | ||
273 | PMD_SECT_XN | \ | ||
274 | PMD_SECT_AP_WRITE | \ | ||
275 | PMD_SECT_AP_READ | ||
272 | b __v6_setup | 276 | b __v6_setup |
273 | .long cpu_arch_name | 277 | .long cpu_arch_name |
274 | .long cpu_elf_name | 278 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-xsc3.S b/arch/arm/mm/proc-xsc3.S index 8d32e21fe151..9aea506d3e65 100644 --- a/arch/arm/mm/proc-xsc3.S +++ b/arch/arm/mm/proc-xsc3.S | |||
@@ -487,7 +487,14 @@ cpu_xsc3_name: | |||
487 | __xsc3_proc_info: | 487 | __xsc3_proc_info: |
488 | .long 0x69056000 | 488 | .long 0x69056000 |
489 | .long 0xffffe000 | 489 | .long 0xffffe000 |
490 | .long 0x00000c0e | 490 | .long PMD_TYPE_SECT | \ |
491 | PMD_SECT_BUFFERABLE | \ | ||
492 | PMD_SECT_CACHEABLE | \ | ||
493 | PMD_SECT_AP_WRITE | \ | ||
494 | PMD_SECT_AP_READ | ||
495 | .long PMD_TYPE_SECT | \ | ||
496 | PMD_SECT_AP_WRITE | \ | ||
497 | PMD_SECT_AP_READ | ||
491 | b __xsc3_setup | 498 | b __xsc3_setup |
492 | .long cpu_arch_name | 499 | .long cpu_arch_name |
493 | .long cpu_elf_name | 500 | .long cpu_elf_name |
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index 29bcc4dd6517..f4aeb7b06911 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
@@ -595,6 +595,9 @@ __80200_proc_info: | |||
595 | PMD_SECT_CACHEABLE | \ | 595 | PMD_SECT_CACHEABLE | \ |
596 | PMD_SECT_AP_WRITE | \ | 596 | PMD_SECT_AP_WRITE | \ |
597 | PMD_SECT_AP_READ | 597 | PMD_SECT_AP_READ |
598 | .long PMD_TYPE_SECT | \ | ||
599 | PMD_SECT_AP_WRITE | \ | ||
600 | PMD_SECT_AP_READ | ||
598 | b __xscale_setup | 601 | b __xscale_setup |
599 | .long cpu_arch_name | 602 | .long cpu_arch_name |
600 | .long cpu_elf_name | 603 | .long cpu_elf_name |
@@ -615,6 +618,9 @@ __8032x_proc_info: | |||
615 | PMD_SECT_CACHEABLE | \ | 618 | PMD_SECT_CACHEABLE | \ |
616 | PMD_SECT_AP_WRITE | \ | 619 | PMD_SECT_AP_WRITE | \ |
617 | PMD_SECT_AP_READ | 620 | PMD_SECT_AP_READ |
621 | .long PMD_TYPE_SECT | \ | ||
622 | PMD_SECT_AP_WRITE | \ | ||
623 | PMD_SECT_AP_READ | ||
618 | b __xscale_setup | 624 | b __xscale_setup |
619 | .long cpu_arch_name | 625 | .long cpu_arch_name |
620 | .long cpu_elf_name | 626 | .long cpu_elf_name |
@@ -635,6 +641,9 @@ __8033x_proc_info: | |||
635 | PMD_SECT_CACHEABLE | \ | 641 | PMD_SECT_CACHEABLE | \ |
636 | PMD_SECT_AP_WRITE | \ | 642 | PMD_SECT_AP_WRITE | \ |
637 | PMD_SECT_AP_READ | 643 | PMD_SECT_AP_READ |
644 | .long PMD_TYPE_SECT | \ | ||
645 | PMD_SECT_AP_WRITE | \ | ||
646 | PMD_SECT_AP_READ | ||
638 | b __xscale_setup | 647 | b __xscale_setup |
639 | .long cpu_arch_name | 648 | .long cpu_arch_name |
640 | .long cpu_elf_name | 649 | .long cpu_elf_name |
@@ -655,6 +664,9 @@ __pxa250_proc_info: | |||
655 | PMD_SECT_CACHEABLE | \ | 664 | PMD_SECT_CACHEABLE | \ |
656 | PMD_SECT_AP_WRITE | \ | 665 | PMD_SECT_AP_WRITE | \ |
657 | PMD_SECT_AP_READ | 666 | PMD_SECT_AP_READ |
667 | .long PMD_TYPE_SECT | \ | ||
668 | PMD_SECT_AP_WRITE | \ | ||
669 | PMD_SECT_AP_READ | ||
658 | b __xscale_setup | 670 | b __xscale_setup |
659 | .long cpu_arch_name | 671 | .long cpu_arch_name |
660 | .long cpu_elf_name | 672 | .long cpu_elf_name |
@@ -675,6 +687,9 @@ __pxa210_proc_info: | |||
675 | PMD_SECT_CACHEABLE | \ | 687 | PMD_SECT_CACHEABLE | \ |
676 | PMD_SECT_AP_WRITE | \ | 688 | PMD_SECT_AP_WRITE | \ |
677 | PMD_SECT_AP_READ | 689 | PMD_SECT_AP_READ |
690 | .long PMD_TYPE_SECT | \ | ||
691 | PMD_SECT_AP_WRITE | \ | ||
692 | PMD_SECT_AP_READ | ||
678 | b __xscale_setup | 693 | b __xscale_setup |
679 | .long cpu_arch_name | 694 | .long cpu_arch_name |
680 | .long cpu_elf_name | 695 | .long cpu_elf_name |
@@ -695,6 +710,9 @@ __ixp2400_proc_info: | |||
695 | PMD_SECT_CACHEABLE | \ | 710 | PMD_SECT_CACHEABLE | \ |
696 | PMD_SECT_AP_WRITE | \ | 711 | PMD_SECT_AP_WRITE | \ |
697 | PMD_SECT_AP_READ | 712 | PMD_SECT_AP_READ |
713 | .long PMD_TYPE_SECT | \ | ||
714 | PMD_SECT_AP_WRITE | \ | ||
715 | PMD_SECT_AP_READ | ||
698 | b __xscale_setup | 716 | b __xscale_setup |
699 | .long cpu_arch_name | 717 | .long cpu_arch_name |
700 | .long cpu_elf_name | 718 | .long cpu_elf_name |
@@ -715,6 +733,9 @@ __ixp2800_proc_info: | |||
715 | PMD_SECT_CACHEABLE | \ | 733 | PMD_SECT_CACHEABLE | \ |
716 | PMD_SECT_AP_WRITE | \ | 734 | PMD_SECT_AP_WRITE | \ |
717 | PMD_SECT_AP_READ | 735 | PMD_SECT_AP_READ |
736 | .long PMD_TYPE_SECT | \ | ||
737 | PMD_SECT_AP_WRITE | \ | ||
738 | PMD_SECT_AP_READ | ||
718 | b __xscale_setup | 739 | b __xscale_setup |
719 | .long cpu_arch_name | 740 | .long cpu_arch_name |
720 | .long cpu_elf_name | 741 | .long cpu_elf_name |
@@ -735,6 +756,9 @@ __ixp42x_proc_info: | |||
735 | PMD_SECT_CACHEABLE | \ | 756 | PMD_SECT_CACHEABLE | \ |
736 | PMD_SECT_AP_WRITE | \ | 757 | PMD_SECT_AP_WRITE | \ |
737 | PMD_SECT_AP_READ | 758 | PMD_SECT_AP_READ |
759 | .long PMD_TYPE_SECT | \ | ||
760 | PMD_SECT_AP_WRITE | \ | ||
761 | PMD_SECT_AP_READ | ||
738 | b __xscale_setup | 762 | b __xscale_setup |
739 | .long cpu_arch_name | 763 | .long cpu_arch_name |
740 | .long cpu_elf_name | 764 | .long cpu_elf_name |
@@ -750,7 +774,14 @@ __ixp42x_proc_info: | |||
750 | __ixp46x_proc_info: | 774 | __ixp46x_proc_info: |
751 | .long 0x69054200 | 775 | .long 0x69054200 |
752 | .long 0xffffff00 | 776 | .long 0xffffff00 |
753 | .long 0x00000c0e | 777 | .long PMD_TYPE_SECT | \ |
778 | PMD_SECT_BUFFERABLE | \ | ||
779 | PMD_SECT_CACHEABLE | \ | ||
780 | PMD_SECT_AP_WRITE | \ | ||
781 | PMD_SECT_AP_READ | ||
782 | .long PMD_TYPE_SECT | \ | ||
783 | PMD_SECT_AP_WRITE | \ | ||
784 | PMD_SECT_AP_READ | ||
754 | b __xscale_setup | 785 | b __xscale_setup |
755 | .long cpu_arch_name | 786 | .long cpu_arch_name |
756 | .long cpu_elf_name | 787 | .long cpu_elf_name |
@@ -771,6 +802,9 @@ __pxa255_proc_info: | |||
771 | PMD_SECT_CACHEABLE | \ | 802 | PMD_SECT_CACHEABLE | \ |
772 | PMD_SECT_AP_WRITE | \ | 803 | PMD_SECT_AP_WRITE | \ |
773 | PMD_SECT_AP_READ | 804 | PMD_SECT_AP_READ |
805 | .long PMD_TYPE_SECT | \ | ||
806 | PMD_SECT_AP_WRITE | \ | ||
807 | PMD_SECT_AP_READ | ||
774 | b __xscale_setup | 808 | b __xscale_setup |
775 | .long cpu_arch_name | 809 | .long cpu_arch_name |
776 | .long cpu_elf_name | 810 | .long cpu_elf_name |
@@ -791,6 +825,9 @@ __pxa270_proc_info: | |||
791 | PMD_SECT_CACHEABLE | \ | 825 | PMD_SECT_CACHEABLE | \ |
792 | PMD_SECT_AP_WRITE | \ | 826 | PMD_SECT_AP_WRITE | \ |
793 | PMD_SECT_AP_READ | 827 | PMD_SECT_AP_READ |
828 | .long PMD_TYPE_SECT | \ | ||
829 | PMD_SECT_AP_WRITE | \ | ||
830 | PMD_SECT_AP_READ | ||
794 | b __xscale_setup | 831 | b __xscale_setup |
795 | .long cpu_arch_name | 832 | .long cpu_arch_name |
796 | .long cpu_elf_name | 833 | .long cpu_elf_name |
diff --git a/include/asm-arm/pgtable-hwdef.h b/include/asm-arm/pgtable-hwdef.h index 1bc1f997bda2..f3b5120c99fe 100644 --- a/include/asm-arm/pgtable-hwdef.h +++ b/include/asm-arm/pgtable-hwdef.h | |||
@@ -28,6 +28,7 @@ | |||
28 | */ | 28 | */ |
29 | #define PMD_SECT_BUFFERABLE (1 << 2) | 29 | #define PMD_SECT_BUFFERABLE (1 << 2) |
30 | #define PMD_SECT_CACHEABLE (1 << 3) | 30 | #define PMD_SECT_CACHEABLE (1 << 3) |
31 | #define PMD_SECT_XN (1 << 4) /* v6 */ | ||
31 | #define PMD_SECT_AP_WRITE (1 << 10) | 32 | #define PMD_SECT_AP_WRITE (1 << 10) |
32 | #define PMD_SECT_AP_READ (1 << 11) | 33 | #define PMD_SECT_AP_READ (1 << 11) |
33 | #define PMD_SECT_TEX(x) ((x) << 12) /* v5 */ | 34 | #define PMD_SECT_TEX(x) ((x) << 12) /* v5 */ |
diff --git a/include/asm-arm/procinfo.h b/include/asm-arm/procinfo.h index 842526055225..edb7b6502fcf 100644 --- a/include/asm-arm/procinfo.h +++ b/include/asm-arm/procinfo.h | |||
@@ -29,7 +29,8 @@ struct processor; | |||
29 | struct proc_info_list { | 29 | struct proc_info_list { |
30 | unsigned int cpu_val; | 30 | unsigned int cpu_val; |
31 | unsigned int cpu_mask; | 31 | unsigned int cpu_mask; |
32 | unsigned long __cpu_mmu_flags; /* used by head.S */ | 32 | unsigned long __cpu_mm_mmu_flags; /* used by head.S */ |
33 | unsigned long __cpu_io_mmu_flags; /* used by head.S */ | ||
33 | unsigned long __cpu_flush; /* used by head.S */ | 34 | unsigned long __cpu_flush; /* used by head.S */ |
34 | const char *arch_name; | 35 | const char *arch_name; |
35 | const char *elf_name; | 36 | const char *elf_name; |