qemu-e2k/target/i386
Ilya Leoshkevich 950936681f target/i386: Make translator stop before the end of a page
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>
2022-09-06 08:04:26 +01:00
..
hax Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
hvf hvf: Enable RDTSCP support 2022-07-13 00:05:39 +02:00
kvm i386: do kvm_put_msr_feature_control() first thing when vCPU is reset 2022-09-01 07:42:37 +02:00
nvmm Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
tcg target/i386: Make translator stop before the end of a page 2022-09-06 08:04:26 +01:00
whpx WHPX: fixed TPR/CR8 translation issues affecting VM debugging 2022-05-14 12:32:40 +02:00
arch_dump.c
arch_memory_mapping.c
cpu-dump.c
cpu-internal.h
cpu-param.h Normalize header guard symbol definition 2022-05-11 16:50:26 +02:00
cpu-qom.h
cpu-sysemu.c Fix 'writeable' typos 2022-06-08 19:38:47 +01:00
cpu.c target/i386: display deprecation status in '-cpu help' 2022-08-05 16:18:15 +01:00
cpu.h i386: Hyper-V Direct TLB flush hypercall 2022-05-25 21:26:35 +02:00
gdbstub.c target/i386: fix byte swap issue with XMM register access 2022-04-20 16:04:20 +01:00
helper.c
helper.h
host-cpu.c
host-cpu.h
Kconfig
machine.c target/i386: Enable Arch LBR migration states in vmstate 2022-05-14 12:32:41 +02:00
meson.build
monitor.c
ops_sse_header.h target/i386: reimplement AVX comparison helpers 2022-09-01 20:16:33 +02:00
ops_sse.h target/i386: AVX+AES helpers prep 2022-09-01 20:16:33 +02:00
sev-sysemu-stub.c
sev.c qapi, target/i386/sev: Add cpu0-id to query-sev-capabilities 2022-04-06 10:50:37 +02:00
sev.h Clean up header guards that don't match their file name 2022-05-11 16:49:06 +02:00
shift_helper_template.h
svm.h
trace-events
trace.h
xsave_helper.c