From: Sergey Fedorov <s.fedo...@samsung.com> Current implementation is not accurate according to ARMv7-AR reference manual. See "B4.1.153 TTBCR, Translation Table Base Control Register, VMSA | TTBCR format when using the Long-descriptor translation table format". When LPAE feature is supported, EAE, bit[31] selects translation descriptor format and, therefore, TTBCR format.
Signed-off-by: Sergey Fedorov <s.fedo...@samsung.com> Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> Message-id: 1386657709-23399-1-git-send-email-s.fedo...@samsung.com Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> --- target-arm/helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target-arm/helper.c b/target-arm/helper.c index 8ec4cb1..5e5e5aa 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -1173,7 +1173,7 @@ static int vmsa_ttbcr_raw_write(CPUARMState *env, const ARMCPRegInfo *ri, { int maskshift = extract32(value, 0, 3); - if (arm_feature(env, ARM_FEATURE_LPAE)) { + if (arm_feature(env, ARM_FEATURE_LPAE) && (value & (1 << 31))) { value &= ~((7 << 19) | (3 << 14) | (0xf << 3)); } else { value &= 7; -- 1.8.5