950936681f
Right now translator stops right *after* the end of a page, which breaks reporting of fault locations when the last instruction of a multi-insn translation block crosses a page boundary. An implementation, like the one arm and s390x have, would require an i386 length disassembler, which is burdensome to maintain. Another alternative would be to single-step at the end of a guest page, but this may come with a performance impact. Fix by snapshotting disassembly state and restoring it after we figure out we crossed a page boundary. This includes rolling back cc_op updates and emitted ops. Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1143 Message-Id: <20220817150506.592862-4-iii@linux.ibm.com> [rth: Simplify end-of-insn cross-page checks.] Signed-off-by: Richard Henderson <richard.henderson@linaro.org> |
||
---|---|---|
.. | ||
sysemu | ||
user | ||
bpt_helper.c | ||
cc_helper_template.h | ||
cc_helper.c | ||
excp_helper.c | ||
fpu_helper.c | ||
helper-tcg.h | ||
int_helper.c | ||
mem_helper.c | ||
meson.build | ||
misc_helper.c | ||
mpx_helper.c | ||
seg_helper.c | ||
seg_helper.h | ||
tcg-cpu.c | ||
tcg-cpu.h | ||
tcg-stub.c | ||
translate.c |