target-arm: Fix reset and migration of TTBCR(S)
commit811595a2d4ab8c6354857a50ffd29fafce52a892
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 14 Jun 2016 14:59:12 +0000 (14 15:59 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 14 Jun 2016 14:59:12 +0000 (14 15:59 +0100)
treea351ae57ff1c04d5b136c9f3deef1727ad4c9b05
parent8433dee02777e81144a520143fa937672a6936e0
target-arm: Fix reset and migration of TTBCR(S)

Commit 6459b94c26dd666badb3 broke reset and migration of the AArch32
TTBCR(S) register if the guest used non-LPAE page tables. This is
because the AArch32 TTBCR register definition is marked as ARM_CP_ALIAS,
meaning that the AArch64 variant has to handle migration and reset.
Although AArch64 TCR_EL3 doesn't need to care about the mask and
base_mask fields, AArch32 may do so, and so we must use the special
TTBCR reset and raw write functions to ensure they are set correctly.

This doesn't affect TCR_EL2, because the AArch32 equivalent of that
is HTCR, which never uses the non-LPAE page table variant.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reported-by: Pranith Kumar <bobby.prani+qemu@gmail.com>
Reviewed-by: Sergey Fedorov <sergey.fedorov@linaro.org>
Message-id: 1465488181-31977-1-git-send-email-peter.maydell@linaro.org
target-arm/helper.c