unicorn/qemu/target-arm
Sergey Sorokin 04992f0fb3
target-arm: Break the TB after ISB to execute self-modified code correctly
If any store instruction writes the code inside the same TB
after this store insn, the execution of the TB must be stopped
to execute new code correctly.
As described in ARMv8 manual D3.4.6 self-modifying code must do an
IC invalidation to be valid, and an ISB after it. So it's enough to end
the TB after ISB instruction on the code translation.
Also this TB break is necessary to take any pending interrupts immediately
after an ISB (as required by ARMv8 ARM D1.14.4).

Backports commit 6df99dec9e81838423d723996e96236693fa31fe from qemu
2018-02-17 15:24:01 -05:00
..
arm_ldst.h import 2015-08-21 15:04:50 +08:00
cpu64.c target-arm: Fix REVIDR reset value 2018-02-13 14:24:08 -05:00
cpu-qom.h target-arm: Refactor CPU affinity handling 2018-02-17 15:23:34 -05:00
cpu.c target-arm: Refactor CPU affinity handling 2018-02-17 15:23:34 -05:00
cpu.h target-*: Drop cpu_gen_code define 2018-02-17 15:23:57 -05:00
crypto_helper.c crypto: move built-in AES implementation into crypto/ 2018-02-17 15:23:17 -05:00
helper-a64.c target-arm: Log the target EL when taking exceptions 2018-02-17 15:23:36 -05:00
helper-a64.h import 2015-08-21 15:04:50 +08:00
helper.c target-arm: Break the TB after ISB to execute self-modified code correctly 2018-02-17 15:24:01 -05:00
helper.h target-arm: Split DISAS_YIELD from DISAS_WFE 2018-02-17 15:23:14 -05:00
internals.h target-arm: Wire up HLT 0xf000 as the A64 semihosting instruction 2018-02-17 15:23:34 -05:00
iwmmxt_helper.c import 2015-08-21 15:04:50 +08: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 Arm support ported. (#736) 2017-01-23 23:30:57 +08:00
op_addsub.h import 2015-08-21 15:04:50 +08:00
op_helper.c target-arm: Add CP_ACCESS_TRAP_UNCATEGORIZED_EL2, 3 2018-02-17 15:23:31 -05:00
psci.c import 2015-08-21 15:04:50 +08:00
translate-a64.c target-arm: Break the TB after ISB to execute self-modified code correctly 2018-02-17 15:24:01 -05:00
translate.c target-arm: Break the TB after ISB to execute self-modified code correctly 2018-02-17 15:24:01 -05:00
translate.h tcg: Remove gen_intermediate_code_pc 2018-02-17 15:23:59 -05:00
unicorn_aarch64.c target-arm: rename c1_coproc to cpacr_el1 2018-02-12 20:46:00 -05:00
unicorn_arm.c target-arm: Add registers for PMSAv7 2018-02-17 15:22:43 -05:00
unicorn.h arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00