TTBCR has additional fields PD0 and PD1 when using Short-descriptor translation table format on a CPU with TrustZone feature support.
Signed-off-by: Sergey Fedorov <s.fedo...@samsung.com> --- target-arm/helper.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target-arm/helper.c b/target-arm/helper.c index a247ca0..6642e53 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -1159,8 +1159,10 @@ 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 if (arm_feature(env, ARM_FEATURE_TRUSTZONE)) { + value &= 0x37; } else { value &= 7; } -- 1.7.9.5