On 8/5/22 09:09, Ilya Leoshkevich wrote:
@@ -4568,9 +4598,19 @@ static target_ulong disas_insn(DisasContext *s, CPUState
*cpu)
s->rip_offset = 0; /* for relative ip address */
s->vex_l = 0;
s->vex_v = 0;
-if (sigsetjmp(s->jmpbuf, 0) != 0) {
+disas_save(&snapshot, s);
+
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.
We may find out that we crossed page boundary after some ops were
emitted and cc_op was updated. In theory it m