summary refs log tree commit diff stats
path: root/chardev/char-socket.c
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2018-03-19 11:15:45 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2018-03-26 14:37:14 +0200
commit87f963be66a32453e001d1052b000f1653605caa (patch)
treefbf9e91be60a6e3c53f99f20509dab2906eacd5e /chardev/char-socket.c
parent8e029fd64ea09cea4cd5cfd7c4c04714571cbae6 (diff)
downloadfocaccia-qemu-87f963be66a32453e001d1052b000f1653605caa.tar.gz
focaccia-qemu-87f963be66a32453e001d1052b000f1653605caa.zip
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/char-socket.c')
0 files changed, 0 insertions, 0 deletions