qemu/target-arm
Sergey Fedorov 5b053a4a28 tcg: Clean up direct block chaining safety checks
We don't take care of direct jumps when address mapping changes. Thus we
must be sure to generate direct jumps so that they always keep valid
even if address mapping changes. Luckily, we can only allow to execute a
TB if it was generated from the pages which match with current mapping.

Document tcg_gen_goto_tb() declaration and note the reason for
destination PC limitations.

Some targets with variable length instructions allow TB to straddle a
page boundary. However, we make sure that both of TB pages match the
current address mapping when looking up TBs. So it is safe to do direct
jumps into the both pages. Correct the checks for some of those targets.

Given that, we can safely patch a TB which spans two pages. Remove the
unnecessary check in cpu_exec() and allow such TBs to be patched.

Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com>
Signed-off-by: Sergey Fedorov <sergey.fedorov@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
2016-05-12 14:06:41 -10:00
..
arch_dump.c arm: Clean up includes 2016-01-29 15:07:23 +00:00
arm_ldst.h target-arm: implement SCTLR.B, drop bswap_code 2016-03-04 11:30:19 +00:00
arm-powerctl.c ARM: Factor out ARM on/off PSCI control functions 2016-05-12 13:22:28 +01:00
arm-powerctl.h ARM: Factor out ARM on/off PSCI control functions 2016-05-12 13:22:28 +01:00
arm-semi.c util: move declarations out of qemu-common.h 2016-03-22 22:20:17 +01:00
cpu64.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
cpu-qom.h target-arm: Make reserved ranges in ID_AA64* spaces RAZ, not UNDEF 2016-02-26 15:09:42 +00:00
cpu.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
cpu.h tb: consistently use uint32_t for tb->flags 2016-05-12 14:06:40 -10:00
crypto_helper.c target-arm: Clean up includes 2016-01-18 16:33:32 +00:00
gdbstub64.c target-arm: Clean up includes 2016-01-18 16:33:32 +00:00
gdbstub.c target-arm: Add write_type argument to cpsr_write() 2016-02-26 15:09:41 +00:00
helper-a64.c target-arm: Move aarch64_cpu_do_interrupt() to helper.c 2016-01-21 14:15:08 +00:00
helper-a64.h target-arm: A64: Implement CRC instructions 2014-06-09 16:06:12 +01:00
helper.c target-arm: Avoid unnecessary TLB flush on TCR_EL2, TCR_EL3 writes 2016-05-12 13:22:30 +01:00
helper.h target-arm: Implement MRS (banked) and MSR (banked) instructions 2016-03-16 17:05:58 +00:00
internals.h target-arm: Split data abort syndrome generator 2016-05-12 13:22:26 +01:00
iwmmxt_helper.c target-arm: Clean up includes 2016-01-18 16:33:32 +00:00
kvm32.c target-arm: Add write_type argument to cpsr_write() 2016-02-26 15:09:41 +00:00
kvm64.c target-arm: Raw CPSR writes should skip checks and bank switching 2016-02-26 15:09:41 +00:00
kvm_arm.h arm: enhance kvm_arm_create_scratch_host_vcpu 2016-03-30 17:27:24 +01:00
kvm-consts.h all: Clean up includes 2016-02-23 12:43:05 +00:00
kvm-stub.c target-arm: Clean up includes 2016-01-18 16:33:32 +00:00
kvm.c arm: enhance kvm_arm_create_scratch_host_vcpu 2016-03-30 17:27:24 +01:00
machine.c target-arm: Raw CPSR writes should skip checks and bank switching 2016-02-26 15:09:41 +00:00
Makefile.objs ARM: Factor out ARM on/off PSCI control functions 2016-05-12 13:22:28 +01:00
monitor.c arm: implement query-gic-capabilities 2016-03-30 17:27:24 +01:00
neon_helper.c target-arm: Clean up includes 2016-01-18 16:33:32 +00:00
op_addsub.h Correct spelling of licensed 2011-07-23 11:26:12 -05:00
op_helper.c target-arm: Split data abort syndrome generator 2016-05-12 13:22:26 +01:00
psci.c ARM: Factor out ARM on/off PSCI control functions 2016-05-12 13:22:28 +01:00
translate-a64.c target-arm/translate-a64.c: Unify some of the ldst_reg decoding 2016-05-12 13:22:27 +01:00
translate.c tcg: Clean up direct block chaining safety checks 2016-05-12 14:06:41 -10:00
translate.h target-arm: introduce disas flag for endianness 2016-03-04 11:30:20 +00:00