unicorn/qemu/target
Peter Maydell 6958a4763d
target/arm: Fix calculation of secure mm_idx values
In cpu_mmu_index() we try to do this:
if (env->v7m.secure) {
mmu_idx += ARMMMUIdx_MSUser;
}
but it will give the wrong answer, because ARMMMUIdx_MSUser
includes the 0x40 ARM_MMU_IDX_M field, and so does the
mmu_idx we're adding to, and we'll end up with 0x8n rather
than 0x4n. This error is then nullified by the call to
arm_to_core_mmu_idx() which masks out the high part, but
we're about to factor out the code that calculates the
ARMMMUIdx values so it can be used without passing it through
arm_to_core_mmu_idx(), so fix this bug first.

Backports commit fe768788d29597ee56fc11ba2279d502c2617457 from qemu
2018-03-05 01:58:42 -05:00
..
arm target/arm: Fix calculation of secure mm_idx values 2018-03-05 01:58:42 -05:00
i386 i386/cpu/hyperv: support over 64 vcpus for windows guests 2018-03-05 00:00:53 -05:00
m68k target/m68k: Switch fpu_rom from make_floatx80() to make_floatx80_init() 2018-03-04 23:05:01 -05:00
mips mips: Improve macro parenthesization 2018-03-05 00:51:51 -05:00
sparc sparc: Fix typedef clash 2018-03-04 23:05:50 -05:00