qemu-e2k/accel/tcg
Pavel Dovgalyuk 17b50b0c29 cpu-exec: avoid cpu_exec_nocache infinite loop with record/replay
This patch ensures that icount_decr.u32.high is clear before calling
cpu_exec_nocache when exception is pending.  Because the exception is
caused by the first instruction in the block and it cannot be executed
without resetting the flag.

There are two parts in the fix.  First, clear icount_decr.u32.high in
cpu_handle_interrupt (just before processing the "dependent" request,
stored in cpu->interrupt_request or cpu->exit_request) rather than
cpu_loop_exec_tb; this ensures that cpu_handle_exception is always
reached with zero icount_decr.u32.high unless another interrupt has
happened in the meanwhile.

Second, try to cause the exception at the beginning of
cpu_handle_exception, and exit immediately if the TB cannot
execute.  With this change, interrupts are processed and
cpu_exec_nocache can make process.

Signed-off-by: Maria Klimushenkova <maria.klimushenkova@ispras.ru>
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Message-Id: <20171114081818.27640.33165.stgit@pasha-VirtualBox>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2017-11-14 14:46:46 +01:00
..
atomic_template.h accel/tcg: move atomic_template.h to accel/tcg/ 2017-09-17 06:52:19 -07:00
cpu-exec-common.c tcg: make tcg_allowed global 2017-07-04 16:01:16 +02:00
cpu-exec.c cpu-exec: avoid cpu_exec_nocache infinite loop with record/replay 2017-11-14 14:46:46 +01:00
cputlb.c accel/tcg: allow to invalidate a write TLB entry immediately 2017-10-20 13:32:10 +02:00
Makefile.objs accel/tcg: move tcg-runtime to accel/tcg/ 2017-09-17 06:52:19 -07:00
softmmu_template.h accel/tcg: allow to invalidate a write TLB entry immediately 2017-10-20 13:32:10 +02:00
tcg-all.c tcg: make tcg_allowed global 2017-07-04 16:01:16 +02:00
tcg-runtime.c tcg: define tcg_init_ctx and make tcg_ctx a pointer 2017-10-24 13:53:42 -07:00
tcg-runtime.h tcg: remove addr argument from lookup_tb_ptr 2017-10-10 07:37:10 -07:00
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
translate-all.c translate-all: exit from tb_phys_invalidate if qht_remove fails 2017-10-24 13:53:42 -07:00
translate-all.h
translator.c tcg: convert tb->cflags reads to tb_cflags(tb) 2017-10-24 13:53:41 -07:00
user-exec-stub.c accel/tcg: move user-exec to accel/tcg/ 2017-09-17 06:52:19 -07:00
user-exec.c accel/tcg: move USER code to user-exec.c 2017-09-17 06:52:19 -07:00