diff options
-rw-r--r-- | arch/arm/boot/compressed/head.S | 82 | ||||
-rw-r--r-- | arch/arm/kernel/head.S | 15 | ||||
-rw-r--r-- | arch/arm/kernel/setup.c | 4 | ||||
-rw-r--r-- | arch/arm/kernel/sys_arm.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-sa1100/assabet.c | 1 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 8 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1020e.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1022.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm1026.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm6_7.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm720.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm920.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm922.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm925.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-arm926.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa110.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-sa1100.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-v6.S | 1 | ||||
-rw-r--r-- | arch/arm/mm/proc-xscale.S | 1 | ||||
-rw-r--r-- | include/asm-arm/pgalloc.h | 5 | ||||
-rw-r--r-- | include/asm-arm/pgtable-hwdef.h | 88 | ||||
-rw-r--r-- | include/asm-arm/pgtable.h | 80 | ||||
-rw-r--r-- | include/asm-arm/tlb.h | 9 | ||||
-rw-r--r-- | include/asm-arm/tlbflush.h | 9 |
25 files changed, 189 insertions, 131 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index db3389d8e027..491c7e4c9ac6 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
@@ -358,7 +358,7 @@ __setup_mmu: sub r3, r4, #16384 @ Page directory size | |||
358 | str r1, [r0] | 358 | str r1, [r0] |
359 | mov pc, lr | 359 | mov pc, lr |
360 | 360 | ||
361 | __armv4_cache_on: | 361 | __armv4_mmu_cache_on: |
362 | mov r12, lr | 362 | mov r12, lr |
363 | bl __setup_mmu | 363 | bl __setup_mmu |
364 | mov r0, #0 | 364 | mov r0, #0 |
@@ -367,24 +367,24 @@ __armv4_cache_on: | |||
367 | mrc p15, 0, r0, c1, c0, 0 @ read control reg | 367 | mrc p15, 0, r0, c1, c0, 0 @ read control reg |
368 | orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement | 368 | orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement |
369 | orr r0, r0, #0x0030 | 369 | orr r0, r0, #0x0030 |
370 | bl __common_cache_on | 370 | bl __common_mmu_cache_on |
371 | mov r0, #0 | 371 | mov r0, #0 |
372 | mcr p15, 0, r0, c8, c7, 0 @ flush I,D TLBs | 372 | mcr p15, 0, r0, c8, c7, 0 @ flush I,D TLBs |
373 | mov pc, r12 | 373 | mov pc, r12 |
374 | 374 | ||
375 | __arm6_cache_on: | 375 | __arm6_mmu_cache_on: |
376 | mov r12, lr | 376 | mov r12, lr |
377 | bl __setup_mmu | 377 | bl __setup_mmu |
378 | mov r0, #0 | 378 | mov r0, #0 |
379 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 | 379 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 |
380 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 | 380 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 |
381 | mov r0, #0x30 | 381 | mov r0, #0x30 |
382 | bl __common_cache_on | 382 | bl __common_mmu_cache_on |
383 | mov r0, #0 | 383 | mov r0, #0 |
384 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 | 384 | mcr p15, 0, r0, c5, c0, 0 @ invalidate whole TLB v3 |
385 | mov pc, r12 | 385 | mov pc, r12 |
386 | 386 | ||
387 | __common_cache_on: | 387 | __common_mmu_cache_on: |
388 | #ifndef DEBUG | 388 | #ifndef DEBUG |
389 | orr r0, r0, #0x000d @ Write buffer, mmu | 389 | orr r0, r0, #0x000d @ Write buffer, mmu |
390 | #endif | 390 | #endif |
@@ -471,12 +471,12 @@ call_cache_fn: adr r12, proc_types | |||
471 | proc_types: | 471 | proc_types: |
472 | .word 0x41560600 @ ARM6/610 | 472 | .word 0x41560600 @ ARM6/610 |
473 | .word 0xffffffe0 | 473 | .word 0xffffffe0 |
474 | b __arm6_cache_off @ works, but slow | 474 | b __arm6_mmu_cache_off @ works, but slow |
475 | b __arm6_cache_off | 475 | b __arm6_mmu_cache_off |
476 | mov pc, lr | 476 | mov pc, lr |
477 | @ b __arm6_cache_on @ untested | 477 | @ b __arm6_mmu_cache_on @ untested |
478 | @ b __arm6_cache_off | 478 | @ b __arm6_mmu_cache_off |
479 | @ b __armv3_cache_flush | 479 | @ b __armv3_mmu_cache_flush |
480 | 480 | ||
481 | .word 0x00000000 @ old ARM ID | 481 | .word 0x00000000 @ old ARM ID |
482 | .word 0x0000f000 | 482 | .word 0x0000f000 |
@@ -486,14 +486,14 @@ proc_types: | |||
486 | 486 | ||
487 | .word 0x41007000 @ ARM7/710 | 487 | .word 0x41007000 @ ARM7/710 |
488 | .word 0xfff8fe00 | 488 | .word 0xfff8fe00 |
489 | b __arm7_cache_off | 489 | b __arm7_mmu_cache_off |
490 | b __arm7_cache_off | 490 | b __arm7_mmu_cache_off |
491 | mov pc, lr | 491 | mov pc, lr |
492 | 492 | ||
493 | .word 0x41807200 @ ARM720T (writethrough) | 493 | .word 0x41807200 @ ARM720T (writethrough) |
494 | .word 0xffffff00 | 494 | .word 0xffffff00 |
495 | b __armv4_cache_on | 495 | b __armv4_mmu_cache_on |
496 | b __armv4_cache_off | 496 | b __armv4_mmu_cache_off |
497 | mov pc, lr | 497 | mov pc, lr |
498 | 498 | ||
499 | .word 0x00007000 @ ARM7 IDs | 499 | .word 0x00007000 @ ARM7 IDs |
@@ -506,41 +506,41 @@ proc_types: | |||
506 | 506 | ||
507 | .word 0x4401a100 @ sa110 / sa1100 | 507 | .word 0x4401a100 @ sa110 / sa1100 |
508 | .word 0xffffffe0 | 508 | .word 0xffffffe0 |
509 | b __armv4_cache_on | 509 | b __armv4_mmu_cache_on |
510 | b __armv4_cache_off | 510 | b __armv4_mmu_cache_off |
511 | b __armv4_cache_flush | 511 | b __armv4_mmu_cache_flush |
512 | 512 | ||
513 | .word 0x6901b110 @ sa1110 | 513 | .word 0x6901b110 @ sa1110 |
514 | .word 0xfffffff0 | 514 | .word 0xfffffff0 |
515 | b __armv4_cache_on | 515 | b __armv4_mmu_cache_on |
516 | b __armv4_cache_off | 516 | b __armv4_mmu_cache_off |
517 | b __armv4_cache_flush | 517 | b __armv4_mmu_cache_flush |
518 | 518 | ||
519 | @ These match on the architecture ID | 519 | @ These match on the architecture ID |
520 | 520 | ||
521 | .word 0x00020000 @ ARMv4T | 521 | .word 0x00020000 @ ARMv4T |
522 | .word 0x000f0000 | 522 | .word 0x000f0000 |
523 | b __armv4_cache_on | 523 | b __armv4_mmu_cache_on |
524 | b __armv4_cache_off | 524 | b __armv4_mmu_cache_off |
525 | b __armv4_cache_flush | 525 | b __armv4_mmu_cache_flush |
526 | 526 | ||
527 | .word 0x00050000 @ ARMv5TE | 527 | .word 0x00050000 @ ARMv5TE |
528 | .word 0x000f0000 | 528 | .word 0x000f0000 |
529 | b __armv4_cache_on | 529 | b __armv4_mmu_cache_on |
530 | b __armv4_cache_off | 530 | b __armv4_mmu_cache_off |
531 | b __armv4_cache_flush | 531 | b __armv4_mmu_cache_flush |
532 | 532 | ||
533 | .word 0x00060000 @ ARMv5TEJ | 533 | .word 0x00060000 @ ARMv5TEJ |
534 | .word 0x000f0000 | 534 | .word 0x000f0000 |
535 | b __armv4_cache_on | 535 | b __armv4_mmu_cache_on |
536 | b __armv4_cache_off | 536 | b __armv4_mmu_cache_off |
537 | b __armv4_cache_flush | 537 | b __armv4_mmu_cache_flush |
538 | 538 | ||
539 | .word 0x00070000 @ ARMv6 | 539 | .word 0x00070000 @ ARMv6 |
540 | .word 0x000f0000 | 540 | .word 0x000f0000 |
541 | b __armv4_cache_on | 541 | b __armv4_mmu_cache_on |
542 | b __armv4_cache_off | 542 | b __armv4_mmu_cache_off |
543 | b __armv6_cache_flush | 543 | b __armv6_mmu_cache_flush |
544 | 544 | ||
545 | .word 0 @ unrecognised type | 545 | .word 0 @ unrecognised type |
546 | .word 0 | 546 | .word 0 |
@@ -562,7 +562,7 @@ proc_types: | |||
562 | cache_off: mov r3, #12 @ cache_off function | 562 | cache_off: mov r3, #12 @ cache_off function |
563 | b call_cache_fn | 563 | b call_cache_fn |
564 | 564 | ||
565 | __armv4_cache_off: | 565 | __armv4_mmu_cache_off: |
566 | mrc p15, 0, r0, c1, c0 | 566 | mrc p15, 0, r0, c1, c0 |
567 | bic r0, r0, #0x000d | 567 | bic r0, r0, #0x000d |
568 | mcr p15, 0, r0, c1, c0 @ turn MMU and cache off | 568 | mcr p15, 0, r0, c1, c0 @ turn MMU and cache off |
@@ -571,15 +571,15 @@ __armv4_cache_off: | |||
571 | mcr p15, 0, r0, c8, c7 @ invalidate whole TLB v4 | 571 | mcr p15, 0, r0, c8, c7 @ invalidate whole TLB v4 |
572 | mov pc, lr | 572 | mov pc, lr |
573 | 573 | ||
574 | __arm6_cache_off: | 574 | __arm6_mmu_cache_off: |
575 | mov r0, #0x00000030 @ ARM6 control reg. | 575 | mov r0, #0x00000030 @ ARM6 control reg. |
576 | b __armv3_cache_off | 576 | b __armv3_mmu_cache_off |
577 | 577 | ||
578 | __arm7_cache_off: | 578 | __arm7_mmu_cache_off: |
579 | mov r0, #0x00000070 @ ARM7 control reg. | 579 | mov r0, #0x00000070 @ ARM7 control reg. |
580 | b __armv3_cache_off | 580 | b __armv3_mmu_cache_off |
581 | 581 | ||
582 | __armv3_cache_off: | 582 | __armv3_mmu_cache_off: |
583 | mcr p15, 0, r0, c1, c0, 0 @ turn MMU and cache off | 583 | mcr p15, 0, r0, c1, c0, 0 @ turn MMU and cache off |
584 | mov r0, #0 | 584 | mov r0, #0 |
585 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 | 585 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 |
@@ -601,7 +601,7 @@ cache_clean_flush: | |||
601 | mov r3, #16 | 601 | mov r3, #16 |
602 | b call_cache_fn | 602 | b call_cache_fn |
603 | 603 | ||
604 | __armv6_cache_flush: | 604 | __armv6_mmu_cache_flush: |
605 | mov r1, #0 | 605 | mov r1, #0 |
606 | mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D | 606 | mcr p15, 0, r1, c7, c14, 0 @ clean+invalidate D |
607 | mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB | 607 | mcr p15, 0, r1, c7, c5, 0 @ invalidate I+BTB |
@@ -609,7 +609,7 @@ __armv6_cache_flush: | |||
609 | mcr p15, 0, r1, c7, c10, 4 @ drain WB | 609 | mcr p15, 0, r1, c7, c10, 4 @ drain WB |
610 | mov pc, lr | 610 | mov pc, lr |
611 | 611 | ||
612 | __armv4_cache_flush: | 612 | __armv4_mmu_cache_flush: |
613 | mov r2, #64*1024 @ default: 32K dcache size (*2) | 613 | mov r2, #64*1024 @ default: 32K dcache size (*2) |
614 | mov r11, #32 @ default: 32 byte line size | 614 | mov r11, #32 @ default: 32 byte line size |
615 | mrc p15, 0, r3, c0, c0, 1 @ read cache type | 615 | mrc p15, 0, r3, c0, c0, 1 @ read cache type |
@@ -637,7 +637,7 @@ no_cache_id: | |||
637 | mcr p15, 0, r1, c7, c10, 4 @ drain WB | 637 | mcr p15, 0, r1, c7, c10, 4 @ drain WB |
638 | mov pc, lr | 638 | mov pc, lr |
639 | 639 | ||
640 | __armv3_cache_flush: | 640 | __armv3_mmu_cache_flush: |
641 | mov r1, #0 | 641 | mov r1, #0 |
642 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 | 642 | mcr p15, 0, r0, c7, c0, 0 @ invalidate whole cache v3 |
643 | mov pc, lr | 643 | mov pc, lr |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 84277fe818a1..53b6901f70a6 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -81,6 +81,7 @@ | |||
81 | ENTRY(stext) | 81 | ENTRY(stext) |
82 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode | 82 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC @ ensure svc mode |
83 | @ and irqs disabled | 83 | @ and irqs disabled |
84 | mrc p15, 0, r9, c0, c0 @ get processor id | ||
84 | bl __lookup_processor_type @ r5=procinfo r9=cpuid | 85 | bl __lookup_processor_type @ r5=procinfo r9=cpuid |
85 | movs r10, r5 @ invalid processor (r5=0)? | 86 | movs r10, r5 @ invalid processor (r5=0)? |
86 | beq __error_p @ yes, error 'p' | 87 | beq __error_p @ yes, error 'p' |
@@ -155,6 +156,7 @@ ENTRY(secondary_startup) | |||
155 | * as it has already been validated by the primary processor. | 156 | * as it has already been validated by the primary processor. |
156 | */ | 157 | */ |
157 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC | 158 | msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | MODE_SVC |
159 | mrc p15, 0, r9, c0, c0 @ get processor id | ||
158 | bl __lookup_processor_type | 160 | bl __lookup_processor_type |
159 | movs r10, r5 @ invalid processor? | 161 | movs r10, r5 @ invalid processor? |
160 | moveq r0, #'p' @ yes, error 'p' | 162 | moveq r0, #'p' @ yes, error 'p' |
@@ -449,19 +451,19 @@ __error: | |||
449 | * (and therefore, we are not in the correct address space). We have to | 451 | * (and therefore, we are not in the correct address space). We have to |
450 | * calculate the offset. | 452 | * calculate the offset. |
451 | * | 453 | * |
454 | * r9 = cpuid | ||
452 | * Returns: | 455 | * Returns: |
453 | * r3, r4, r6 corrupted | 456 | * r3, r4, r6 corrupted |
454 | * r5 = proc_info pointer in physical address space | 457 | * r5 = proc_info pointer in physical address space |
455 | * r9 = cpuid | 458 | * r9 = cpuid (preserved) |
456 | */ | 459 | */ |
457 | .type __lookup_processor_type, %function | 460 | .type __lookup_processor_type, %function |
458 | __lookup_processor_type: | 461 | __lookup_processor_type: |
459 | adr r3, 3f | 462 | adr r3, 3f |
460 | ldmda r3, {r5, r6, r9} | 463 | ldmda r3, {r5 - r7} |
461 | sub r3, r3, r9 @ get offset between virt&phys | 464 | sub r3, r3, r7 @ get offset between virt&phys |
462 | add r5, r5, r3 @ convert virt addresses to | 465 | add r5, r5, r3 @ convert virt addresses to |
463 | add r6, r6, r3 @ physical address space | 466 | add r6, r6, r3 @ physical address space |
464 | mrc p15, 0, r9, c0, c0 @ get processor id | ||
465 | 1: ldmia r5, {r3, r4} @ value, mask | 467 | 1: ldmia r5, {r3, r4} @ value, mask |
466 | and r4, r4, r9 @ mask wanted bits | 468 | and r4, r4, r9 @ mask wanted bits |
467 | teq r3, r4 | 469 | teq r3, r4 |
@@ -476,10 +478,11 @@ __lookup_processor_type: | |||
476 | * This provides a C-API version of the above function. | 478 | * This provides a C-API version of the above function. |
477 | */ | 479 | */ |
478 | ENTRY(lookup_processor_type) | 480 | ENTRY(lookup_processor_type) |
479 | stmfd sp!, {r4 - r6, r9, lr} | 481 | stmfd sp!, {r4 - r7, r9, lr} |
482 | mov r9, r0 | ||
480 | bl __lookup_processor_type | 483 | bl __lookup_processor_type |
481 | mov r0, r5 | 484 | mov r0, r5 |
482 | ldmfd sp!, {r4 - r6, r9, pc} | 485 | ldmfd sp!, {r4 - r7, r9, pc} |
483 | 486 | ||
484 | /* | 487 | /* |
485 | * Look in include/asm-arm/procinfo.h and arch/arm/kernel/arch.[ch] for | 488 | * Look in include/asm-arm/procinfo.h and arch/arm/kernel/arch.[ch] for |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 08974cbe9824..b7cd280bfd63 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -278,7 +278,7 @@ int cpu_architecture(void) | |||
278 | * These functions re-use the assembly code in head.S, which | 278 | * These functions re-use the assembly code in head.S, which |
279 | * already provide the required functionality. | 279 | * already provide the required functionality. |
280 | */ | 280 | */ |
281 | extern struct proc_info_list *lookup_processor_type(void); | 281 | extern struct proc_info_list *lookup_processor_type(unsigned int); |
282 | extern struct machine_desc *lookup_machine_type(unsigned int); | 282 | extern struct machine_desc *lookup_machine_type(unsigned int); |
283 | 283 | ||
284 | static void __init setup_processor(void) | 284 | static void __init setup_processor(void) |
@@ -290,7 +290,7 @@ static void __init setup_processor(void) | |||
290 | * types. The linker builds this table for us from the | 290 | * types. The linker builds this table for us from the |
291 | * entries in arch/arm/mm/proc-*.S | 291 | * entries in arch/arm/mm/proc-*.S |
292 | */ | 292 | */ |
293 | list = lookup_processor_type(); | 293 | list = lookup_processor_type(processor_id); |
294 | if (!list) { | 294 | if (!list) { |
295 | printk("CPU configuration botched (ID %08x), unable " | 295 | printk("CPU configuration botched (ID %08x), unable " |
296 | "to continue.\n", processor_id); | 296 | "to continue.\n", processor_id); |
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c index a491de2d9024..8170af471439 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c | |||
@@ -234,7 +234,12 @@ asmlinkage int sys_ipc(uint call, int first, int second, int third, | |||
234 | */ | 234 | */ |
235 | asmlinkage int sys_fork(struct pt_regs *regs) | 235 | asmlinkage int sys_fork(struct pt_regs *regs) |
236 | { | 236 | { |
237 | #ifdef CONFIG_MMU | ||
237 | return do_fork(SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL); | 238 | return do_fork(SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL); |
239 | #else | ||
240 | /* can not support in nommu mode */ | ||
241 | return(-EINVAL); | ||
242 | #endif | ||
238 | } | 243 | } |
239 | 244 | ||
240 | /* Clone a task - this clones the calling program thread. | 245 | /* Clone a task - this clones the calling program thread. |
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c index a599bb0d4ab8..c58f12ba7a93 100644 --- a/arch/arm/mach-sa1100/assabet.c +++ b/arch/arm/mach-sa1100/assabet.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
27 | #include <asm/setup.h> | 27 | #include <asm/setup.h> |
28 | #include <asm/page.h> | 28 | #include <asm/page.h> |
29 | #include <asm/pgtable-hwdef.h> | ||
29 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
30 | #include <asm/tlbflush.h> | 31 | #include <asm/tlbflush.h> |
31 | 32 | ||
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index eaaec90db972..e680c5fd93b5 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -266,12 +266,18 @@ config CPU_32v6K | |||
266 | # This defines the compiler instruction set which depends on the machine type. | 266 | # This defines the compiler instruction set which depends on the machine type. |
267 | config CPU_32v3 | 267 | config CPU_32v3 |
268 | bool | 268 | bool |
269 | select TLS_REG_EMUL if SMP | ||
270 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | ||
269 | 271 | ||
270 | config CPU_32v4 | 272 | config CPU_32v4 |
271 | bool | 273 | bool |
274 | select TLS_REG_EMUL if SMP | ||
275 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | ||
272 | 276 | ||
273 | config CPU_32v5 | 277 | config CPU_32v5 |
274 | bool | 278 | bool |
279 | select TLS_REG_EMUL if SMP | ||
280 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | ||
275 | 281 | ||
276 | config CPU_32v6 | 282 | config CPU_32v6 |
277 | bool | 283 | bool |
@@ -417,7 +423,6 @@ config CPU_BPREDICT_DISABLE | |||
417 | 423 | ||
418 | config TLS_REG_EMUL | 424 | config TLS_REG_EMUL |
419 | bool | 425 | bool |
420 | default y if SMP && (CPU_32v5 || CPU_32v4 || CPU_32v3) | ||
421 | help | 426 | help |
422 | An SMP system using a pre-ARMv6 processor (there are apparently | 427 | An SMP system using a pre-ARMv6 processor (there are apparently |
423 | a few prototypes like that in existence) and therefore access to | 428 | a few prototypes like that in existence) and therefore access to |
@@ -436,7 +441,6 @@ config HAS_TLS_REG | |||
436 | 441 | ||
437 | config NEEDS_SYSCALL_FOR_CMPXCHG | 442 | config NEEDS_SYSCALL_FOR_CMPXCHG |
438 | bool | 443 | bool |
439 | default y if SMP && (CPU_32v5 || CPU_32v4 || CPU_32v3) | ||
440 | help | 444 | help |
441 | SMP on a pre-ARMv6 processor? Well OK then. | 445 | SMP on a pre-ARMv6 processor? Well OK then. |
442 | Forget about fast user space cmpxchg support. | 446 | Forget about fast user space cmpxchg support. |
diff --git a/arch/arm/mm/proc-arm1020.S b/arch/arm/mm/proc-arm1020.S index 3aa80094012c..959588884fa5 100644 --- a/arch/arm/mm/proc-arm1020.S +++ b/arch/arm/mm/proc-arm1020.S | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/asm-offsets.h> | 31 | #include <asm/asm-offsets.h> |
32 | #include <asm/pgtable-hwdef.h> | ||
32 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 34 | #include <asm/procinfo.h> |
34 | #include <asm/ptrace.h> | 35 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1020e.S b/arch/arm/mm/proc-arm1020e.S index 767d158f211a..be6d081ff2b7 100644 --- a/arch/arm/mm/proc-arm1020e.S +++ b/arch/arm/mm/proc-arm1020e.S | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/asm-offsets.h> | 31 | #include <asm/asm-offsets.h> |
32 | #include <asm/pgtable-hwdef.h> | ||
32 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 34 | #include <asm/procinfo.h> |
34 | #include <asm/ptrace.h> | 35 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1022.S b/arch/arm/mm/proc-arm1022.S index 6ca639094d6f..f778545d57a2 100644 --- a/arch/arm/mm/proc-arm1022.S +++ b/arch/arm/mm/proc-arm1022.S | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <asm/assembler.h> | 19 | #include <asm/assembler.h> |
20 | #include <asm/asm-offsets.h> | 20 | #include <asm/asm-offsets.h> |
21 | #include <asm/pgtable-hwdef.h> | ||
21 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
22 | #include <asm/procinfo.h> | 23 | #include <asm/procinfo.h> |
23 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm1026.S b/arch/arm/mm/proc-arm1026.S index 10317e4f55d2..148c111fde73 100644 --- a/arch/arm/mm/proc-arm1026.S +++ b/arch/arm/mm/proc-arm1026.S | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <asm/assembler.h> | 19 | #include <asm/assembler.h> |
20 | #include <asm/asm-offsets.h> | 20 | #include <asm/asm-offsets.h> |
21 | #include <asm/pgtable-hwdef.h> | ||
21 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
22 | #include <asm/procinfo.h> | 23 | #include <asm/procinfo.h> |
23 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S index 8e7e1e70ab05..540359b475d0 100644 --- a/arch/arm/mm/proc-arm6_7.S +++ b/arch/arm/mm/proc-arm6_7.S | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <asm/assembler.h> | 15 | #include <asm/assembler.h> |
16 | #include <asm/asm-offsets.h> | 16 | #include <asm/asm-offsets.h> |
17 | #include <asm/pgtable-hwdef.h> | ||
17 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
18 | #include <asm/procinfo.h> | 19 | #include <asm/procinfo.h> |
19 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm720.S b/arch/arm/mm/proc-arm720.S index 471286fdf78f..26f00ee2ad9a 100644 --- a/arch/arm/mm/proc-arm720.S +++ b/arch/arm/mm/proc-arm720.S | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/init.h> | 34 | #include <linux/init.h> |
35 | #include <asm/assembler.h> | 35 | #include <asm/assembler.h> |
36 | #include <asm/asm-offsets.h> | 36 | #include <asm/asm-offsets.h> |
37 | #include <asm/pgtable-hwdef.h> | ||
37 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
38 | #include <asm/procinfo.h> | 39 | #include <asm/procinfo.h> |
39 | #include <asm/ptrace.h> | 40 | #include <asm/ptrace.h> |
diff --git a/arch/arm/mm/proc-arm920.S b/arch/arm/mm/proc-arm920.S index 950d3b664c1e..a17f79e0199c 100644 --- a/arch/arm/mm/proc-arm920.S +++ b/arch/arm/mm/proc-arm920.S | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/config.h> | 28 | #include <linux/config.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/pgtable-hwdef.h> | ||
31 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
32 | #include <asm/procinfo.h> | 33 | #include <asm/procinfo.h> |
33 | #include <asm/page.h> | 34 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-arm922.S b/arch/arm/mm/proc-arm922.S index 410b032faa3b..bbde4a024a48 100644 --- a/arch/arm/mm/proc-arm922.S +++ b/arch/arm/mm/proc-arm922.S | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <linux/config.h> | 29 | #include <linux/config.h> |
30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
31 | #include <asm/assembler.h> | 31 | #include <asm/assembler.h> |
32 | #include <asm/pgtable-hwdef.h> | ||
32 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
33 | #include <asm/procinfo.h> | 34 | #include <asm/procinfo.h> |
34 | #include <asm/page.h> | 35 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S index 6dd2be7cd050..224ce226a01b 100644 --- a/arch/arm/mm/proc-arm925.S +++ b/arch/arm/mm/proc-arm925.S | |||
@@ -51,6 +51,7 @@ | |||
51 | #include <linux/config.h> | 51 | #include <linux/config.h> |
52 | #include <linux/init.h> | 52 | #include <linux/init.h> |
53 | #include <asm/assembler.h> | 53 | #include <asm/assembler.h> |
54 | #include <asm/pgtable-hwdef.h> | ||
54 | #include <asm/pgtable.h> | 55 | #include <asm/pgtable.h> |
55 | #include <asm/procinfo.h> | 56 | #include <asm/procinfo.h> |
56 | #include <asm/page.h> | 57 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index 022e86842041..4e2a087cf388 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <linux/config.h> | 28 | #include <linux/config.h> |
29 | #include <linux/init.h> | 29 | #include <linux/init.h> |
30 | #include <asm/assembler.h> | 30 | #include <asm/assembler.h> |
31 | #include <asm/pgtable-hwdef.h> | ||
31 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
32 | #include <asm/procinfo.h> | 33 | #include <asm/procinfo.h> |
33 | #include <asm/page.h> | 34 | #include <asm/page.h> |
diff --git a/arch/arm/mm/proc-sa110.S b/arch/arm/mm/proc-sa110.S index bd330c4075a1..c916a6cae404 100644 --- a/arch/arm/mm/proc-sa110.S +++ b/arch/arm/mm/proc-sa110.S | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <asm/asm-offsets.h> | 18 | #include <asm/asm-offsets.h> |
19 | #include <asm/procinfo.h> | 19 | #include <asm/procinfo.h> |
20 | #include <asm/hardware.h> | 20 | #include <asm/hardware.h> |
21 | #include <asm/pgtable-hwdef.h> | ||
21 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
22 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
23 | 24 | ||
diff --git a/arch/arm/mm/proc-sa1100.S b/arch/arm/mm/proc-sa1100.S index 91b89124c0d7..41f21f2dd8ff 100644 --- a/arch/arm/mm/proc-sa1100.S +++ b/arch/arm/mm/proc-sa1100.S | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <asm/asm-offsets.h> | 23 | #include <asm/asm-offsets.h> |
24 | #include <asm/procinfo.h> | 24 | #include <asm/procinfo.h> |
25 | #include <asm/hardware.h> | 25 | #include <asm/hardware.h> |
26 | #include <asm/pgtable-hwdef.h> | ||
26 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
27 | 28 | ||
28 | /* | 29 | /* |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index 92f3ca31b7b9..9a7e7c096aa9 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/asm-offsets.h> | 14 | #include <asm/asm-offsets.h> |
15 | #include <asm/hardware/arm_scu.h> | 15 | #include <asm/hardware/arm_scu.h> |
16 | #include <asm/procinfo.h> | 16 | #include <asm/procinfo.h> |
17 | #include <asm/pgtable-hwdef.h> | ||
17 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
18 | 19 | ||
19 | #include "proc-macros.S" | 20 | #include "proc-macros.S" |
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index b50f87a0ee76..29bcc4dd6517 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <asm/assembler.h> | 25 | #include <asm/assembler.h> |
26 | #include <asm/procinfo.h> | 26 | #include <asm/procinfo.h> |
27 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
28 | #include <asm/pgtable-hwdef.h> | ||
28 | #include <asm/page.h> | 29 | #include <asm/page.h> |
29 | #include <asm/ptrace.h> | 30 | #include <asm/ptrace.h> |
30 | #include "proc-macros.S" | 31 | #include "proc-macros.S" |
diff --git a/include/asm-arm/pgalloc.h b/include/asm-arm/pgalloc.h index bc18ff405181..c4ac2e67768d 100644 --- a/include/asm-arm/pgalloc.h +++ b/include/asm-arm/pgalloc.h | |||
@@ -10,10 +10,15 @@ | |||
10 | #ifndef _ASMARM_PGALLOC_H | 10 | #ifndef _ASMARM_PGALLOC_H |
11 | #define _ASMARM_PGALLOC_H | 11 | #define _ASMARM_PGALLOC_H |
12 | 12 | ||
13 | #include <asm/domain.h> | ||
14 | #include <asm/pgtable-hwdef.h> | ||
13 | #include <asm/processor.h> | 15 | #include <asm/processor.h> |
14 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
15 | #include <asm/tlbflush.h> | 17 | #include <asm/tlbflush.h> |
16 | 18 | ||
19 | #define _PAGE_USER_TABLE (PMD_TYPE_TABLE | PMD_BIT4 | PMD_DOMAIN(DOMAIN_USER)) | ||
20 | #define _PAGE_KERNEL_TABLE (PMD_TYPE_TABLE | PMD_BIT4 | PMD_DOMAIN(DOMAIN_KERNEL)) | ||
21 | |||
17 | /* | 22 | /* |
18 | * Since we have only two-level page tables, these are trivial | 23 | * Since we have only two-level page tables, these are trivial |
19 | */ | 24 | */ |
diff --git a/include/asm-arm/pgtable-hwdef.h b/include/asm-arm/pgtable-hwdef.h new file mode 100644 index 000000000000..1d033495cc75 --- /dev/null +++ b/include/asm-arm/pgtable-hwdef.h | |||
@@ -0,0 +1,88 @@ | |||
1 | /* | ||
2 | * linux/include/asm-arm/pgtable-hwdef.h | ||
3 | * | ||
4 | * Copyright (C) 1995-2002 Russell King | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef _ASMARM_PGTABLE_HWDEF_H | ||
11 | #define _ASMARM_PGTABLE_HWDEF_H | ||
12 | |||
13 | /* | ||
14 | * Hardware page table definitions. | ||
15 | * | ||
16 | * + Level 1 descriptor (PMD) | ||
17 | * - common | ||
18 | */ | ||
19 | #define PMD_TYPE_MASK (3 << 0) | ||
20 | #define PMD_TYPE_FAULT (0 << 0) | ||
21 | #define PMD_TYPE_TABLE (1 << 0) | ||
22 | #define PMD_TYPE_SECT (2 << 0) | ||
23 | #define PMD_BIT4 (1 << 4) | ||
24 | #define PMD_DOMAIN(x) ((x) << 5) | ||
25 | #define PMD_PROTECTION (1 << 9) /* v5 */ | ||
26 | /* | ||
27 | * - section | ||
28 | */ | ||
29 | #define PMD_SECT_BUFFERABLE (1 << 2) | ||
30 | #define PMD_SECT_CACHEABLE (1 << 3) | ||
31 | #define PMD_SECT_AP_WRITE (1 << 10) | ||
32 | #define PMD_SECT_AP_READ (1 << 11) | ||
33 | #define PMD_SECT_TEX(x) ((x) << 12) /* v5 */ | ||
34 | #define PMD_SECT_APX (1 << 15) /* v6 */ | ||
35 | #define PMD_SECT_S (1 << 16) /* v6 */ | ||
36 | #define PMD_SECT_nG (1 << 17) /* v6 */ | ||
37 | #define PMD_SECT_SUPER (1 << 18) /* v6 */ | ||
38 | |||
39 | #define PMD_SECT_UNCACHED (0) | ||
40 | #define PMD_SECT_BUFFERED (PMD_SECT_BUFFERABLE) | ||
41 | #define PMD_SECT_WT (PMD_SECT_CACHEABLE) | ||
42 | #define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | ||
43 | #define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE) | ||
44 | #define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | ||
45 | #define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2)) | ||
46 | |||
47 | /* | ||
48 | * - coarse table (not used) | ||
49 | */ | ||
50 | |||
51 | /* | ||
52 | * + Level 2 descriptor (PTE) | ||
53 | * - common | ||
54 | */ | ||
55 | #define PTE_TYPE_MASK (3 << 0) | ||
56 | #define PTE_TYPE_FAULT (0 << 0) | ||
57 | #define PTE_TYPE_LARGE (1 << 0) | ||
58 | #define PTE_TYPE_SMALL (2 << 0) | ||
59 | #define PTE_TYPE_EXT (3 << 0) /* v5 */ | ||
60 | #define PTE_BUFFERABLE (1 << 2) | ||
61 | #define PTE_CACHEABLE (1 << 3) | ||
62 | |||
63 | /* | ||
64 | * - extended small page/tiny page | ||
65 | */ | ||
66 | #define PTE_EXT_XN (1 << 0) /* v6 */ | ||
67 | #define PTE_EXT_AP_MASK (3 << 4) | ||
68 | #define PTE_EXT_AP0 (1 << 4) | ||
69 | #define PTE_EXT_AP1 (2 << 4) | ||
70 | #define PTE_EXT_AP_UNO_SRO (0 << 4) | ||
71 | #define PTE_EXT_AP_UNO_SRW (PTE_EXT_AP0) | ||
72 | #define PTE_EXT_AP_URO_SRW (PTE_EXT_AP1) | ||
73 | #define PTE_EXT_AP_URW_SRW (PTE_EXT_AP1|PTE_EXT_AP0) | ||
74 | #define PTE_EXT_TEX(x) ((x) << 6) /* v5 */ | ||
75 | #define PTE_EXT_APX (1 << 9) /* v6 */ | ||
76 | #define PTE_EXT_SHARED (1 << 10) /* v6 */ | ||
77 | #define PTE_EXT_NG (1 << 11) /* v6 */ | ||
78 | |||
79 | /* | ||
80 | * - small page | ||
81 | */ | ||
82 | #define PTE_SMALL_AP_MASK (0xff << 4) | ||
83 | #define PTE_SMALL_AP_UNO_SRO (0x00 << 4) | ||
84 | #define PTE_SMALL_AP_UNO_SRW (0x55 << 4) | ||
85 | #define PTE_SMALL_AP_URO_SRW (0xaa << 4) | ||
86 | #define PTE_SMALL_AP_URW_SRW (0xff << 4) | ||
87 | |||
88 | #endif | ||
diff --git a/include/asm-arm/pgtable.h b/include/asm-arm/pgtable.h index 70e00d08345e..e595ae24efe2 100644 --- a/include/asm-arm/pgtable.h +++ b/include/asm-arm/pgtable.h | |||
@@ -137,81 +137,6 @@ extern void __pgd_error(const char *file, int line, unsigned long val); | |||
137 | #define SUPERSECTION_MASK (~(SUPERSECTION_SIZE-1)) | 137 | #define SUPERSECTION_MASK (~(SUPERSECTION_SIZE-1)) |
138 | 138 | ||
139 | /* | 139 | /* |
140 | * Hardware page table definitions. | ||
141 | * | ||
142 | * + Level 1 descriptor (PMD) | ||
143 | * - common | ||
144 | */ | ||
145 | #define PMD_TYPE_MASK (3 << 0) | ||
146 | #define PMD_TYPE_FAULT (0 << 0) | ||
147 | #define PMD_TYPE_TABLE (1 << 0) | ||
148 | #define PMD_TYPE_SECT (2 << 0) | ||
149 | #define PMD_BIT4 (1 << 4) | ||
150 | #define PMD_DOMAIN(x) ((x) << 5) | ||
151 | #define PMD_PROTECTION (1 << 9) /* v5 */ | ||
152 | /* | ||
153 | * - section | ||
154 | */ | ||
155 | #define PMD_SECT_BUFFERABLE (1 << 2) | ||
156 | #define PMD_SECT_CACHEABLE (1 << 3) | ||
157 | #define PMD_SECT_AP_WRITE (1 << 10) | ||
158 | #define PMD_SECT_AP_READ (1 << 11) | ||
159 | #define PMD_SECT_TEX(x) ((x) << 12) /* v5 */ | ||
160 | #define PMD_SECT_APX (1 << 15) /* v6 */ | ||
161 | #define PMD_SECT_S (1 << 16) /* v6 */ | ||
162 | #define PMD_SECT_nG (1 << 17) /* v6 */ | ||
163 | #define PMD_SECT_SUPER (1 << 18) /* v6 */ | ||
164 | |||
165 | #define PMD_SECT_UNCACHED (0) | ||
166 | #define PMD_SECT_BUFFERED (PMD_SECT_BUFFERABLE) | ||
167 | #define PMD_SECT_WT (PMD_SECT_CACHEABLE) | ||
168 | #define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | ||
169 | #define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE) | ||
170 | #define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE) | ||
171 | #define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2)) | ||
172 | |||
173 | /* | ||
174 | * - coarse table (not used) | ||
175 | */ | ||
176 | |||
177 | /* | ||
178 | * + Level 2 descriptor (PTE) | ||
179 | * - common | ||
180 | */ | ||
181 | #define PTE_TYPE_MASK (3 << 0) | ||
182 | #define PTE_TYPE_FAULT (0 << 0) | ||
183 | #define PTE_TYPE_LARGE (1 << 0) | ||
184 | #define PTE_TYPE_SMALL (2 << 0) | ||
185 | #define PTE_TYPE_EXT (3 << 0) /* v5 */ | ||
186 | #define PTE_BUFFERABLE (1 << 2) | ||
187 | #define PTE_CACHEABLE (1 << 3) | ||
188 | |||
189 | /* | ||
190 | * - extended small page/tiny page | ||
191 | */ | ||
192 | #define PTE_EXT_XN (1 << 0) /* v6 */ | ||
193 | #define PTE_EXT_AP_MASK (3 << 4) | ||
194 | #define PTE_EXT_AP0 (1 << 4) | ||
195 | #define PTE_EXT_AP1 (2 << 4) | ||
196 | #define PTE_EXT_AP_UNO_SRO (0 << 4) | ||
197 | #define PTE_EXT_AP_UNO_SRW (PTE_EXT_AP0) | ||
198 | #define PTE_EXT_AP_URO_SRW (PTE_EXT_AP1) | ||
199 | #define PTE_EXT_AP_URW_SRW (PTE_EXT_AP1|PTE_EXT_AP0) | ||
200 | #define PTE_EXT_TEX(x) ((x) << 6) /* v5 */ | ||
201 | #define PTE_EXT_APX (1 << 9) /* v6 */ | ||
202 | #define PTE_EXT_SHARED (1 << 10) /* v6 */ | ||
203 | #define PTE_EXT_NG (1 << 11) /* v6 */ | ||
204 | |||
205 | /* | ||
206 | * - small page | ||
207 | */ | ||
208 | #define PTE_SMALL_AP_MASK (0xff << 4) | ||
209 | #define PTE_SMALL_AP_UNO_SRO (0x00 << 4) | ||
210 | #define PTE_SMALL_AP_UNO_SRW (0x55 << 4) | ||
211 | #define PTE_SMALL_AP_URO_SRW (0xaa << 4) | ||
212 | #define PTE_SMALL_AP_URW_SRW (0xff << 4) | ||
213 | |||
214 | /* | ||
215 | * "Linux" PTE definitions. | 140 | * "Linux" PTE definitions. |
216 | * | 141 | * |
217 | * We keep two sets of PTEs - the hardware and the linux version. | 142 | * We keep two sets of PTEs - the hardware and the linux version. |
@@ -236,11 +161,6 @@ extern void __pgd_error(const char *file, int line, unsigned long val); | |||
236 | 161 | ||
237 | #ifndef __ASSEMBLY__ | 162 | #ifndef __ASSEMBLY__ |
238 | 163 | ||
239 | #include <asm/domain.h> | ||
240 | |||
241 | #define _PAGE_USER_TABLE (PMD_TYPE_TABLE | PMD_BIT4 | PMD_DOMAIN(DOMAIN_USER)) | ||
242 | #define _PAGE_KERNEL_TABLE (PMD_TYPE_TABLE | PMD_BIT4 | PMD_DOMAIN(DOMAIN_KERNEL)) | ||
243 | |||
244 | /* | 164 | /* |
245 | * The following macros handle the cache and bufferable bits... | 165 | * The following macros handle the cache and bufferable bits... |
246 | */ | 166 | */ |
diff --git a/include/asm-arm/tlb.h b/include/asm-arm/tlb.h index f49bfb78c221..cb740025d413 100644 --- a/include/asm-arm/tlb.h +++ b/include/asm-arm/tlb.h | |||
@@ -19,6 +19,14 @@ | |||
19 | 19 | ||
20 | #include <asm/cacheflush.h> | 20 | #include <asm/cacheflush.h> |
21 | #include <asm/tlbflush.h> | 21 | #include <asm/tlbflush.h> |
22 | |||
23 | #ifndef CONFIG_MMU | ||
24 | |||
25 | #include <linux/pagemap.h> | ||
26 | #include <asm-generic/tlb.h> | ||
27 | |||
28 | #else /* !CONFIG_MMU */ | ||
29 | |||
22 | #include <asm/pgalloc.h> | 30 | #include <asm/pgalloc.h> |
23 | 31 | ||
24 | /* | 32 | /* |
@@ -82,4 +90,5 @@ tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma) | |||
82 | 90 | ||
83 | #define tlb_migrate_finish(mm) do { } while (0) | 91 | #define tlb_migrate_finish(mm) do { } while (0) |
84 | 92 | ||
93 | #endif /* CONFIG_MMU */ | ||
85 | #endif | 94 | #endif |
diff --git a/include/asm-arm/tlbflush.h b/include/asm-arm/tlbflush.h index 0c2acc944a0a..728992451dd1 100644 --- a/include/asm-arm/tlbflush.h +++ b/include/asm-arm/tlbflush.h | |||
@@ -11,6 +11,13 @@ | |||
11 | #define _ASMARM_TLBFLUSH_H | 11 | #define _ASMARM_TLBFLUSH_H |
12 | 12 | ||
13 | #include <linux/config.h> | 13 | #include <linux/config.h> |
14 | |||
15 | #ifndef CONFIG_MMU | ||
16 | |||
17 | #define tlb_flush(tlb) ((void) tlb) | ||
18 | |||
19 | #else /* CONFIG_MMU */ | ||
20 | |||
14 | #include <asm/glue.h> | 21 | #include <asm/glue.h> |
15 | 22 | ||
16 | #define TLB_V3_PAGE (1 << 0) | 23 | #define TLB_V3_PAGE (1 << 0) |
@@ -423,4 +430,6 @@ extern void update_mmu_cache(struct vm_area_struct *vma, unsigned long addr, pte | |||
423 | 430 | ||
424 | #endif | 431 | #endif |
425 | 432 | ||
433 | #endif /* CONFIG_MMU */ | ||
434 | |||
426 | #endif | 435 | #endif |