diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2018-03-19 11:15:45 +0800 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2018-03-26 14:37:14 +0200 |
commit | 87f963be66a32453e001d1052b000f1653605caa (patch) | |
tree | fbf9e91be60a6e3c53f99f20509dab2906eacd5e /chardev | |
parent | 8e029fd64ea09cea4cd5cfd7c4c04714571cbae6 (diff) |
tcg: Really fix cpu_io_recompile
We have confused the number of instructions that have been
executed in the TB with the number of instructions needed
to repeat the I/O instruction.
We have used cpu_restore_state_from_tb, which means that
the guest pc is pointing to the I/O instruction. The only
time the answer to the later question is not 1 is when
MIPS or SH4 need to re-execute the branch for the delay
slot as well.
We must rely on cpu->cflags_next_tb to generate the next TB,
as otherwise we have a race condition with other guest cpus
within the TB cache.
Fixes: 0790f86861079b1932679d0f011e431aaf4ee9e2
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20180319031545.29359-1-richard.henderson@linaro.org>
Tested-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'chardev')
0 files changed, 0 insertions, 0 deletions