unicorn/qemu/target-arm
Sergey Sorokin 98a6d44c54
target-arm: Fix descriptor address masking in ARM address translation
There is a bug in ARM address translation regime with a long-descriptor
format. On the descriptor reading its address is formed from an index
which is a part of the input address. And on the first iteration this index
is incorrectly masked with 'grainsize' mask. But it can be wider according
to pseudo-code.
On the other hand on the iterations other than first the descriptor address
is formed from the previous level descriptor by masking with 'descaddrmask'
value. It always clears just 12 lower bits, but it must clear 'grainsize'
lower bits instead according to pseudo-code.
The patch fixes both cases.

Backports commit dddb5223413c5425ae6eaeb3b967627efc9675f7 from qemu
2018-02-23 19:56:56 -05:00
..
arm_ldst.h target-arm: implement SCTLR.B, drop bswap_code 2018-02-21 02:08:05 -05:00
cpu-qom.h target-arm: Make reserved ranges in ID_AA64* spaces RAZ, not UNDEF 2018-02-20 22:49:43 -05:00
cpu.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
cpu.h target-arm: implement BE32 mode in system emulation 2018-02-21 02:47:22 -05:00
cpu64.c target-arm: Get rid of unused variable warnings 2018-02-23 12:43:09 -05:00
crypto_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
helper-a64.c target-arm: Move aarch64_cpu_do_interrupt() to helper.c 2018-02-18 22:23:06 -05:00
helper-a64.h import 2015-08-21 15:04:50 +08:00
helper.c target-arm: Fix descriptor address masking in ARM address translation 2018-02-23 19:56:56 -05:00
helper.h target-arm: Implement MRS (banked) and MSR (banked) instructions 2018-02-21 21:50:42 -05:00
internals.h target-arm: Move get/set_r13_banked() to op_helper.c 2018-02-20 15:09:07 -05:00
iwmmxt_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
kvm-consts.h import 2015-08-21 15:04:50 +08:00
Makefile.objs delete sparc32_dma.h & arm-semi.c 2017-01-19 15:10:41 +08:00
neon_helper.c target-arm: Clean up includes 2018-02-17 21:09:32 -05:00
op_addsub.h import 2015-08-21 15:04:50 +08:00
op_helper.c target-arm: Implement MRS (banked) and MSR (banked) instructions 2018-02-21 21:50:42 -05:00
psci.c import 2015-08-21 15:04:50 +08:00
translate-a64.c target-arm: introduce tbflag for endianness 2018-02-21 02:35:34 -05:00
translate.c target-arm: Implement MRS (banked) and MSR (banked) instructions 2018-02-21 21:50:42 -05:00
translate.h target-arm: introduce disas flag for endianness 2018-02-21 02:20:50 -05:00
unicorn.h arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
unicorn_aarch64.c target-arm: Add write_type argument to cpsr_write() 2018-02-20 22:15:53 -05:00
unicorn_arm.c target-arm: Add write_type argument to cpsr_write() 2018-02-20 22:15:53 -05:00