diff options
-rw-r--r-- | arch/arm/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/lib/bitops.h | 2 | ||||
-rw-r--r-- | arch/arm/mm/Kconfig | 12 | ||||
-rw-r--r-- | include/asm-arm/mmu_context.h | 3 |
4 files changed, 16 insertions, 2 deletions
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index d80749ae2a7e..c422759438d5 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -38,6 +38,7 @@ comma = , | |||
38 | # macro, but instead defines a whole series of macros which makes | 38 | # macro, but instead defines a whole series of macros which makes |
39 | # testing for a specific architecture or later rather impossible. | 39 | # testing for a specific architecture or later rather impossible. |
40 | arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) | 40 | arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6) |
41 | arch-$(CONFIG_CPU_32v6K) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6k,-march=armv5t -Wa$(comma)-march=armv6k) | ||
41 | arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4) | 42 | arch-$(CONFIG_CPU_32v5) :=-D__LINUX_ARM_ARCH__=5 $(call cc-option,-march=armv5te,-march=armv4) |
42 | arch-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4 -march=armv4 | 43 | arch-$(CONFIG_CPU_32v4) :=-D__LINUX_ARM_ARCH__=4 -march=armv4 |
43 | arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3 | 44 | arch-$(CONFIG_CPU_32v3) :=-D__LINUX_ARM_ARCH__=3 -march=armv3 |
diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h index 64a988c1ad44..f35d91fbe117 100644 --- a/arch/arm/lib/bitops.h +++ b/arch/arm/lib/bitops.h | |||
@@ -1,6 +1,6 @@ | |||
1 | #include <linux/config.h> | 1 | #include <linux/config.h> |
2 | 2 | ||
3 | #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_MPCORE) | 3 | #if __LINUX_ARM_ARCH__ >= 6 && defined(CONFIG_CPU_32v6K) |
4 | .macro bitop, instr | 4 | .macro bitop, instr |
5 | mov r2, #1 | 5 | mov r2, #1 |
6 | and r3, r0, #7 @ Get bit offset | 6 | and r3, r0, #7 @ Get bit offset |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 5568403e984d..e3c14d6b4328 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
@@ -250,6 +250,18 @@ config CPU_V6 | |||
250 | select CPU_COPY_V6 | 250 | select CPU_COPY_V6 |
251 | select CPU_TLB_V6 | 251 | select CPU_TLB_V6 |
252 | 252 | ||
253 | # ARMv6k | ||
254 | config CPU_32v6K | ||
255 | bool "Support ARM V6K processor extensions" if !SMP | ||
256 | depends on CPU_V6 | ||
257 | default y if SMP | ||
258 | help | ||
259 | Say Y here if your ARMv6 processor supports the 'K' extension. | ||
260 | This enables the kernel to use some instructions not present | ||
261 | on previous processors, and as such a kernel build with this | ||
262 | enabled will not boot on processors with do not support these | ||
263 | instructions. | ||
264 | |||
253 | # Figure out what processor architecture version we should be using. | 265 | # Figure out what processor architecture version we should be using. |
254 | # 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. |
255 | config CPU_32v3 | 267 | config CPU_32v3 |
diff --git a/include/asm-arm/mmu_context.h b/include/asm-arm/mmu_context.h index 4af9c411c617..57b8def83d41 100644 --- a/include/asm-arm/mmu_context.h +++ b/include/asm-arm/mmu_context.h | |||
@@ -86,7 +86,8 @@ switch_mm(struct mm_struct *prev, struct mm_struct *next, | |||
86 | cpu_set(cpu, next->cpu_vm_mask); | 86 | cpu_set(cpu, next->cpu_vm_mask); |
87 | check_context(next); | 87 | check_context(next); |
88 | cpu_switch_mm(next->pgd, next); | 88 | cpu_switch_mm(next->pgd, next); |
89 | cpu_clear(cpu, prev->cpu_vm_mask); | 89 | if (cache_is_vivt()) |
90 | cpu_clear(cpu, prev->cpu_vm_mask); | ||
90 | } | 91 | } |
91 | } | 92 | } |
92 | 93 | ||