diff options
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/Kconfig | 50 | ||||
-rw-r--r-- | arch/arm/mm/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mm/abort-ev6.S | 6 | ||||
-rw-r--r-- | arch/arm/mm/mmap.c | 2 |
4 files changed, 34 insertions, 25 deletions
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 05b26a03c209..89266382b536 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -390,7 +390,7 @@ config CPU_PJ4 | |||
390 | 390 | ||
391 | # ARMv6 | 391 | # ARMv6 |
392 | config CPU_V6 | 392 | config CPU_V6 |
393 | bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX || ARCH_DOVE | 393 | bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX |
394 | select CPU_32v6 | 394 | select CPU_32v6 |
395 | select CPU_ABRT_EV6 | 395 | select CPU_ABRT_EV6 |
396 | select CPU_PABRT_V6 | 396 | select CPU_PABRT_V6 |
@@ -402,16 +402,18 @@ config CPU_V6 | |||
402 | select CPU_TLB_V6 if MMU | 402 | select CPU_TLB_V6 if MMU |
403 | 403 | ||
404 | # ARMv6k | 404 | # ARMv6k |
405 | config CPU_32v6K | 405 | config CPU_V6K |
406 | bool "Support ARM V6K processor extensions" if !SMP | 406 | bool "Support ARM V6K processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX |
407 | depends on CPU_V6 || CPU_V7 | 407 | select CPU_32v6 |
408 | default y if SMP | 408 | select CPU_32v6K |
409 | help | 409 | select CPU_ABRT_EV6 |
410 | Say Y here if your ARMv6 processor supports the 'K' extension. | 410 | select CPU_PABRT_V6 |
411 | This enables the kernel to use some instructions not present | 411 | select CPU_CACHE_V6 |
412 | on previous processors, and as such a kernel build with this | 412 | select CPU_CACHE_VIPT |
413 | enabled will not boot on processors with do not support these | 413 | select CPU_CP15_MMU |
414 | instructions. | 414 | select CPU_HAS_ASID if MMU |
415 | select CPU_COPY_V6 if MMU | ||
416 | select CPU_TLB_V6 if MMU | ||
415 | 417 | ||
416 | # ARMv7 | 418 | # ARMv7 |
417 | config CPU_V7 | 419 | config CPU_V7 |
@@ -433,25 +435,33 @@ config CPU_32v3 | |||
433 | bool | 435 | bool |
434 | select TLS_REG_EMUL if SMP || !MMU | 436 | select TLS_REG_EMUL if SMP || !MMU |
435 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | 437 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP |
438 | select CPU_USE_DOMAINS if MMU | ||
436 | 439 | ||
437 | config CPU_32v4 | 440 | config CPU_32v4 |
438 | bool | 441 | bool |
439 | select TLS_REG_EMUL if SMP || !MMU | 442 | select TLS_REG_EMUL if SMP || !MMU |
440 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | 443 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP |
444 | select CPU_USE_DOMAINS if MMU | ||
441 | 445 | ||
442 | config CPU_32v4T | 446 | config CPU_32v4T |
443 | bool | 447 | bool |
444 | select TLS_REG_EMUL if SMP || !MMU | 448 | select TLS_REG_EMUL if SMP || !MMU |
445 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | 449 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP |
450 | select CPU_USE_DOMAINS if MMU | ||
446 | 451 | ||
447 | config CPU_32v5 | 452 | config CPU_32v5 |
448 | bool | 453 | bool |
449 | select TLS_REG_EMUL if SMP || !MMU | 454 | select TLS_REG_EMUL if SMP || !MMU |
450 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP | 455 | select NEEDS_SYSCALL_FOR_CMPXCHG if SMP |
456 | select CPU_USE_DOMAINS if MMU | ||
451 | 457 | ||
452 | config CPU_32v6 | 458 | config CPU_32v6 |
453 | bool | 459 | bool |
454 | select TLS_REG_EMUL if !CPU_32v6K && !MMU | 460 | select TLS_REG_EMUL if !CPU_32v6K && !MMU |
461 | select CPU_USE_DOMAINS if CPU_V6 && MMU | ||
462 | |||
463 | config CPU_32v6K | ||
464 | bool | ||
455 | 465 | ||
456 | config CPU_32v7 | 466 | config CPU_32v7 |
457 | bool | 467 | bool |
@@ -607,8 +617,6 @@ config CPU_CP15_MPU | |||
607 | 617 | ||
608 | config CPU_USE_DOMAINS | 618 | config CPU_USE_DOMAINS |
609 | bool | 619 | bool |
610 | depends on MMU | ||
611 | default y if !CPU_32v6K | ||
612 | help | 620 | help |
613 | This option enables or disables the use of domain switching | 621 | This option enables or disables the use of domain switching |
614 | via the set_fs() function. | 622 | via the set_fs() function. |
@@ -623,7 +631,7 @@ comment "Processor Features" | |||
623 | 631 | ||
624 | config ARM_THUMB | 632 | config ARM_THUMB |
625 | bool "Support Thumb user binaries" | 633 | bool "Support Thumb user binaries" |
626 | depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V7 || CPU_FEROCEON | 634 | depends on CPU_ARM720T || CPU_ARM740T || CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM940T || CPU_ARM946E || CPU_ARM1020 || CPU_ARM1020E || CPU_ARM1022 || CPU_ARM1026 || CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_V6 || CPU_V6K || CPU_V7 || CPU_FEROCEON |
627 | default y | 635 | default y |
628 | help | 636 | help |
629 | Say Y if you want to include kernel support for running user space | 637 | Say Y if you want to include kernel support for running user space |
@@ -644,7 +652,7 @@ config ARM_THUMBEE | |||
644 | 652 | ||
645 | config SWP_EMULATE | 653 | config SWP_EMULATE |
646 | bool "Emulate SWP/SWPB instructions" | 654 | bool "Emulate SWP/SWPB instructions" |
647 | depends on !CPU_USE_DOMAINS && CPU_V7 && !CPU_V6 | 655 | depends on !CPU_USE_DOMAINS && CPU_V7 |
648 | select HAVE_PROC_CPU if PROC_FS | 656 | select HAVE_PROC_CPU if PROC_FS |
649 | default y if SMP | 657 | default y if SMP |
650 | help | 658 | help |
@@ -681,7 +689,7 @@ config CPU_BIG_ENDIAN | |||
681 | config CPU_ENDIAN_BE8 | 689 | config CPU_ENDIAN_BE8 |
682 | bool | 690 | bool |
683 | depends on CPU_BIG_ENDIAN | 691 | depends on CPU_BIG_ENDIAN |
684 | default CPU_V6 || CPU_V7 | 692 | default CPU_V6 || CPU_V6K || CPU_V7 |
685 | help | 693 | help |
686 | Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors. | 694 | Support for the BE-8 (big-endian) mode on ARMv6 and ARMv7 processors. |
687 | 695 | ||
@@ -747,7 +755,7 @@ config CPU_CACHE_ROUND_ROBIN | |||
747 | 755 | ||
748 | config CPU_BPREDICT_DISABLE | 756 | config CPU_BPREDICT_DISABLE |
749 | bool "Disable branch prediction" | 757 | bool "Disable branch prediction" |
750 | depends on CPU_ARM1020 || CPU_V6 || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 | 758 | depends on CPU_ARM1020 || CPU_V6 || CPU_V6K || CPU_MOHAWK || CPU_XSC3 || CPU_V7 || CPU_FA526 |
751 | help | 759 | help |
752 | Say Y here to disable branch prediction. If unsure, say N. | 760 | Say Y here to disable branch prediction. If unsure, say N. |
753 | 761 | ||
@@ -767,7 +775,7 @@ config NEEDS_SYSCALL_FOR_CMPXCHG | |||
767 | 775 | ||
768 | config DMA_CACHE_RWFO | 776 | config DMA_CACHE_RWFO |
769 | bool "Enable read/write for ownership DMA cache maintenance" | 777 | bool "Enable read/write for ownership DMA cache maintenance" |
770 | depends on CPU_V6 && SMP | 778 | depends on CPU_V6K && SMP |
771 | default y | 779 | default y |
772 | help | 780 | help |
773 | The Snoop Control Unit on ARM11MPCore does not detect the | 781 | The Snoop Control Unit on ARM11MPCore does not detect the |
@@ -823,7 +831,7 @@ config CACHE_L2X0 | |||
823 | config CACHE_PL310 | 831 | config CACHE_PL310 |
824 | bool | 832 | bool |
825 | depends on CACHE_L2X0 | 833 | depends on CACHE_L2X0 |
826 | default y if CPU_V7 && !CPU_V6 | 834 | default y if CPU_V7 && !(CPU_V6 || CPU_V6K) |
827 | help | 835 | help |
828 | This option enables optimisations for the PL310 cache | 836 | This option enables optimisations for the PL310 cache |
829 | controller. | 837 | controller. |
@@ -856,10 +864,10 @@ config ARM_L1_CACHE_SHIFT | |||
856 | default 5 | 864 | default 5 |
857 | 865 | ||
858 | config ARM_DMA_MEM_BUFFERABLE | 866 | config ARM_DMA_MEM_BUFFERABLE |
859 | bool "Use non-cacheable memory for DMA" if CPU_V6 && !CPU_V7 | 867 | bool "Use non-cacheable memory for DMA" if (CPU_V6 || CPU_V6K) && !CPU_V7 |
860 | depends on !(MACH_REALVIEW_PB1176 || REALVIEW_EB_ARM11MP || \ | 868 | depends on !(MACH_REALVIEW_PB1176 || REALVIEW_EB_ARM11MP || \ |
861 | MACH_REALVIEW_PB11MP) | 869 | MACH_REALVIEW_PB11MP) |
862 | default y if CPU_V6 || CPU_V7 | 870 | default y if CPU_V6 || CPU_V6K || CPU_V7 |
863 | help | 871 | help |
864 | Historically, the kernel has used strongly ordered mappings to | 872 | Historically, the kernel has used strongly ordered mappings to |
865 | provide DMA coherent memory. With the advent of ARMv7, mapping | 873 | provide DMA coherent memory. With the advent of ARMv7, mapping |
diff --git a/arch/arm/mm/Makefile b/arch/arm/mm/Makefile index 00d74a04af3a..bca7e61928c7 100644 --- a/arch/arm/mm/Makefile +++ b/arch/arm/mm/Makefile | |||
@@ -90,6 +90,7 @@ obj-$(CONFIG_CPU_XSC3) += proc-xsc3.o | |||
90 | obj-$(CONFIG_CPU_MOHAWK) += proc-mohawk.o | 90 | obj-$(CONFIG_CPU_MOHAWK) += proc-mohawk.o |
91 | obj-$(CONFIG_CPU_FEROCEON) += proc-feroceon.o | 91 | obj-$(CONFIG_CPU_FEROCEON) += proc-feroceon.o |
92 | obj-$(CONFIG_CPU_V6) += proc-v6.o | 92 | obj-$(CONFIG_CPU_V6) += proc-v6.o |
93 | obj-$(CONFIG_CPU_V6K) += proc-v6.o | ||
93 | obj-$(CONFIG_CPU_V7) += proc-v7.o | 94 | obj-$(CONFIG_CPU_V7) += proc-v7.o |
94 | 95 | ||
95 | AFLAGS_proc-v6.o :=-Wa,-march=armv6 | 96 | AFLAGS_proc-v6.o :=-Wa,-march=armv6 |
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S index f332df7f0d37..1478aa522144 100644 --- a/arch/arm/mm/abort-ev6.S +++ b/arch/arm/mm/abort-ev6.S | |||
@@ -20,11 +20,11 @@ | |||
20 | */ | 20 | */ |
21 | .align 5 | 21 | .align 5 |
22 | ENTRY(v6_early_abort) | 22 | ENTRY(v6_early_abort) |
23 | #ifdef CONFIG_CPU_32v6K | 23 | #ifdef CONFIG_CPU_V6 |
24 | clrex | ||
25 | #else | ||
26 | sub r1, sp, #4 @ Get unused stack location | 24 | sub r1, sp, #4 @ Get unused stack location |
27 | strex r0, r1, [r1] @ Clear the exclusive monitor | 25 | strex r0, r1, [r1] @ Clear the exclusive monitor |
26 | #elif defined(CONFIG_CPU_32v6K) | ||
27 | clrex | ||
28 | #endif | 28 | #endif |
29 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 29 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
30 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 30 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c index b0a98305055c..afe209e1e1f8 100644 --- a/arch/arm/mm/mmap.c +++ b/arch/arm/mm/mmap.c | |||
@@ -31,7 +31,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, | |||
31 | struct mm_struct *mm = current->mm; | 31 | struct mm_struct *mm = current->mm; |
32 | struct vm_area_struct *vma; | 32 | struct vm_area_struct *vma; |
33 | unsigned long start_addr; | 33 | unsigned long start_addr; |
34 | #ifdef CONFIG_CPU_V6 | 34 | #if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) |
35 | unsigned int cache_type; | 35 | unsigned int cache_type; |
36 | int do_align = 0, aliasing = 0; | 36 | int do_align = 0, aliasing = 0; |
37 | 37 | ||