ARM: 7066/1: proc-v7: disable SCTLR.TE when disabling MMU
authorWill Deacon <will.deacon@arm.com>
Fri, 26 Aug 2011 15:34:51 +0000 (16:34 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sun, 28 Aug 2011 09:39:53 +0000 (10:39 +0100)
cpu_v7_reset disables the MMU and then branches to the provided address.
On Thumb-2 kernels, we should take care to clear the Thumb Exception
enable bit in the System Control Register, otherwise this may wreak
havok in the code to which we are branching (for example, an ARM kernel
image via kexec).

Reviewed-by: Dave Martin <dave.martin@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/proc-v7.S

index a30e78542ccf3201fa07e1dee6534552821dfa97..dec72ee9f7af68d0d03a0b54496f356aa28751f3 100644 (file)
@@ -66,6 +66,7 @@ ENDPROC(cpu_v7_proc_fin)
 ENTRY(cpu_v7_reset)
        mrc     p15, 0, r1, c1, c0, 0           @ ctrl register
        bic     r1, r1, #0x1                    @ ...............m
+ THUMB(        bic     r1, r1, #1 << 30 )              @ SCTLR.TE (Thumb exceptions)
        mcr     p15, 0, r1, c1, c0, 0           @ disable MMU
        isb
        mov     pc, r0