accel/tcg/cpu-exec: Fix precise single-stepping after interrupt
In some cases, cpu->exit_request can be false after handling the interrupt, leading to another TB being executed instead of returning to the main loop. Fix this by returning true unconditionally when in single-step mode. Fixes: ba3c35d9c402 ("tcg/cpu-exec: precise single-stepping after an interrupt") Signed-off-by: Luc Michel <lmichel@kalray.eu> Message-Id: <20220214132656.11397-1-lmichel@kalray.eu> [rth: Unlock iothread mutex; simplify indentation] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
8929906e21
commit
5b7b197c87
@ -799,8 +799,12 @@ static inline bool cpu_handle_interrupt(CPUState *cpu,
|
|||||||
* raised when single-stepping so that GDB doesn't miss the
|
* raised when single-stepping so that GDB doesn't miss the
|
||||||
* next instruction.
|
* next instruction.
|
||||||
*/
|
*/
|
||||||
cpu->exception_index =
|
if (unlikely(cpu->singlestep_enabled)) {
|
||||||
(cpu->singlestep_enabled ? EXCP_DEBUG : -1);
|
cpu->exception_index = EXCP_DEBUG;
|
||||||
|
qemu_mutex_unlock_iothread();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
cpu->exception_index = -1;
|
||||||
*last_tb = NULL;
|
*last_tb = NULL;
|
||||||
}
|
}
|
||||||
/* The target hook may have updated the 'cpu->interrupt_request';
|
/* The target hook may have updated the 'cpu->interrupt_request';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user