aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2006-06-29 13:24:21 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-06-29 13:24:21 -0400
commit8799ee9f49f6171fd58f4d64f8c067ca49006a5d (patch)
treeb746b8800bc99633f31505d151624c8ccd75cd47 /arch/arm
parent326764a85b7676388db3ebad6488f312631d7661 (diff)
[ARM] Set bit 4 on section mappings correctly depending on CPU
On some CPUs, bit 4 of section mappings means "update the cache when written to". On others, this bit is required to be one, and others it's required to be zero. Finally, on ARMv6 and above, setting it turns on "no execute" and prevents speculative prefetches. With all these combinations, no one value fits all CPUs, so we have to pick a value depending on the CPU type, and the area we're mapping. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm')
-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
18 files changed, 144 insertions, 21 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