[PATCH] ARM: decompressor: reset ttbcr for VMSA ARMv7 cores
Nicolas Pitre
nico at fluxnic.net
Thu Aug 23 14:02:14 EDT 2012
On Thu, 23 Aug 2012, Will Deacon wrote:
> When enabling the MMU for ARMv7 CPUs, the decompressor does not touch
> the ttbcr register, assuming that it will be zeroed (N == 0, EAE == 0).
> Given that only EAE is defined as 0 for non-secure copies of the
> register (and a bootloader such as kexec may leave it set to 1 anyway),
> we should ensure that we reset the register ourselves before turning on
> the MMU.
>
> This patch zeroes TTBCR.EAE and TTBCR.N prior to enabling the MMU for
> ARMv7 cores in the decompressor, configuring us exclusively for 32-bit
> translation tables via TTBR0.
>
> Cc: Nicolas Pitre <nico at fluxnic.net>
> Signed-off-by: Matthew Leach <matthew.leach at arm.com>
> Signed-off-by: Will Deacon <will.deacon at arm.com>
Acked-by: Nicolas Pitre <nico at linaro.org>
> ---
> arch/arm/boot/compressed/head.S | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S
> index b8c64b8..81769c1 100644
> --- a/arch/arm/boot/compressed/head.S
> +++ b/arch/arm/boot/compressed/head.S
> @@ -659,10 +659,14 @@ __armv7_mmu_cache_on:
> #ifdef CONFIG_CPU_ENDIAN_BE8
> orr r0, r0, #1 << 25 @ big-endian page tables
> #endif
> + mrcne p15, 0, r6, c2, c0, 2 @ read ttb control reg
> orrne r0, r0, #1 @ MMU enabled
> movne r1, #0xfffffffd @ domain 0 = client
> + bic r6, r6, #1 << 31 @ 32-bit translation system
> + bic r6, r6, #3 << 0 @ use only ttbr0
> mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer
> mcrne p15, 0, r1, c3, c0, 0 @ load domain access control
> + mcrne p15, 0, r6, c2, c0, 2 @ load ttb control
> #endif
> mcr p15, 0, r0, c7, c5, 4 @ ISB
> mcr p15, 0, r0, c1, c0, 0 @ load control register
> --
> 1.7.4.1
>
More information about the linux-arm-kernel
mailing list