diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-03-09 10:49:32 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2013-03-09 10:49:32 -0500 |
commit | 73a09d212ec65b7068a283e6034fa05649d3d075 (patch) | |
tree | 07e08fb552afd3e0a239e103b9f9cf571593316b /arch/arm/mm | |
parent | 6dbe51c251a327e012439c4772097a13df43c5b8 (diff) | |
parent | 6ebd4d038dbb626a43d87db3007e71f92f49d7b3 (diff) |
Merge branch 'for-next' of git://git.pengutronix.de/git/ukl/linux into devel-stable
Conflicts:
arch/arm/include/asm/cputype.h
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/Kconfig | 9 | ||||
-rw-r--r-- | arch/arm/mm/alignment.c | 2 | ||||
-rw-r--r-- | arch/arm/mm/mmu.c | 17 |
3 files changed, 27 insertions, 1 deletions
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 025d17328730..cb812a13e299 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -397,6 +397,13 @@ config CPU_V7 | |||
397 | select CPU_PABRT_V7 | 397 | select CPU_PABRT_V7 |
398 | select CPU_TLB_V7 if MMU | 398 | select CPU_TLB_V7 if MMU |
399 | 399 | ||
400 | config CPU_THUMBONLY | ||
401 | bool | ||
402 | # There are no CPUs available with MMU that don't implement an ARM ISA: | ||
403 | depends on !MMU | ||
404 | help | ||
405 | Select this if your CPU doesn't support the 32 bit ARM instructions. | ||
406 | |||
400 | # Figure out what processor architecture version we should be using. | 407 | # Figure out what processor architecture version we should be using. |
401 | # This defines the compiler instruction set which depends on the machine type. | 408 | # This defines the compiler instruction set which depends on the machine type. |
402 | config CPU_32v3 | 409 | config CPU_32v3 |
@@ -608,7 +615,7 @@ config ARCH_DMA_ADDR_T_64BIT | |||
608 | bool | 615 | bool |
609 | 616 | ||
610 | config ARM_THUMB | 617 | config ARM_THUMB |
611 | bool "Support Thumb user binaries" | 618 | bool "Support Thumb user binaries" if !CPU_THUMBONLY |
612 | 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 | 619 | 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 |
613 | default y | 620 | default y |
614 | help | 621 | help |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index db26e2e543f4..6f4585b89078 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -961,12 +961,14 @@ static int __init alignment_init(void) | |||
961 | return -ENOMEM; | 961 | return -ENOMEM; |
962 | #endif | 962 | #endif |
963 | 963 | ||
964 | #ifdef CONFIG_CPU_CP15 | ||
964 | if (cpu_is_v6_unaligned()) { | 965 | if (cpu_is_v6_unaligned()) { |
965 | cr_alignment &= ~CR_A; | 966 | cr_alignment &= ~CR_A; |
966 | cr_no_alignment &= ~CR_A; | 967 | cr_no_alignment &= ~CR_A; |
967 | set_cr(cr_alignment); | 968 | set_cr(cr_alignment); |
968 | ai_usermode = safe_usermode(ai_usermode, false); | 969 | ai_usermode = safe_usermode(ai_usermode, false); |
969 | } | 970 | } |
971 | #endif | ||
970 | 972 | ||
971 | hook_fault_code(FAULT_CODE_ALIGNMENT, do_alignment, SIGBUS, BUS_ADRALN, | 973 | hook_fault_code(FAULT_CODE_ALIGNMENT, do_alignment, SIGBUS, BUS_ADRALN, |
972 | "alignment exception"); | 974 | "alignment exception"); |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index e95a996ab78f..c6d45c87540e 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -112,6 +112,7 @@ static struct cachepolicy cache_policies[] __initdata = { | |||
112 | } | 112 | } |
113 | }; | 113 | }; |
114 | 114 | ||
115 | #ifdef CONFIG_CPU_CP15 | ||
115 | /* | 116 | /* |
116 | * These are useful for identifying cache coherency | 117 | * These are useful for identifying cache coherency |
117 | * problems by allowing the cache or the cache and | 118 | * problems by allowing the cache or the cache and |
@@ -210,6 +211,22 @@ void adjust_cr(unsigned long mask, unsigned long set) | |||
210 | } | 211 | } |
211 | #endif | 212 | #endif |
212 | 213 | ||
214 | #else /* ifdef CONFIG_CPU_CP15 */ | ||
215 | |||
216 | static int __init early_cachepolicy(char *p) | ||
217 | { | ||
218 | pr_warning("cachepolicy kernel parameter not supported without cp15\n"); | ||
219 | } | ||
220 | early_param("cachepolicy", early_cachepolicy); | ||
221 | |||
222 | static int __init noalign_setup(char *__unused) | ||
223 | { | ||
224 | pr_warning("noalign kernel parameter not supported without cp15\n"); | ||
225 | } | ||
226 | __setup("noalign", noalign_setup); | ||
227 | |||
228 | #endif /* ifdef CONFIG_CPU_CP15 / else */ | ||
229 | |||
213 | #define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY|L_PTE_XN | 230 | #define PROT_PTE_DEVICE L_PTE_PRESENT|L_PTE_YOUNG|L_PTE_DIRTY|L_PTE_XN |
214 | #define PROT_SECT_DEVICE PMD_TYPE_SECT|PMD_SECT_AP_WRITE | 231 | #define PROT_SECT_DEVICE PMD_TYPE_SECT|PMD_SECT_AP_WRITE |
215 | 232 | ||