aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/kernel/asm-offsets.c3
-rw-r--r--arch/arm/kernel/head.S5
-rw-r--r--arch/arm/mm/mm-armv.c37
-rw-r--r--arch/arm/mm/proc-arm1020.S3
-rw-r--r--arch/arm/mm/proc-arm1020e.S4
-rw-r--r--arch/arm/mm/proc-arm1022.S4
-rw-r--r--arch/arm/mm/proc-arm1026.S4
-rw-r--r--arch/arm/mm/proc-arm6_7.S16
-rw-r--r--arch/arm/mm/proc-arm720.S8
-rw-r--r--arch/arm/mm/proc-arm920.S4
-rw-r--r--arch/arm/mm/proc-arm922.S4
-rw-r--r--arch/arm/mm/proc-arm925.S8
-rw-r--r--arch/arm/mm/proc-arm926.S4
-rw-r--r--arch/arm/mm/proc-sa110.S3
-rw-r--r--arch/arm/mm/proc-sa1100.S6
-rw-r--r--arch/arm/mm/proc-v6.S4
-rw-r--r--arch/arm/mm/proc-xsc3.S9
-rw-r--r--arch/arm/mm/proc-xscale.S39
-rw-r--r--include/asm-arm/pgtable-hwdef.h1
-rw-r--r--include/asm-arm/procinfo.h3
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;
29struct proc_info_list { 29struct 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;