aboutsummaryrefslogtreecommitdiff
path: root/cpus.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2016-06-29 22:12:55 -0700
committerRichard Henderson <rth@twiddle.net>2016-10-26 08:29:00 -0700
commitfdbc2b5722f6092e47181a947c90fd4bdcc1c121 (patch)
treee28acccae721a37200503f6983edf56b42b9d4a4 /cpus.c
parent1edaeee0955fba7d834b7c8f4e372e7eae030745 (diff)
tcg: Add EXCP_ATOMIC
When we cannot emulate an atomic operation within a parallel context, this exception allows us to stop the world and try again in a serial context. Reviewed-by: Emilio G. Cota <cota@braap.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'cpus.c')
-rw-r--r--cpus.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/cpus.c b/cpus.c
index 31204bb4b3..cfd5cdc0e3 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1497,6 +1497,8 @@ static void tcg_exec_all(void)
if (r == EXCP_DEBUG) {
cpu_handle_guest_debug(cpu);
break;
+ } else if (r == EXCP_ATOMIC) {
+ cpu_exec_step_atomic(cpu);
}
} else if (cpu->stop || cpu->stopped) {
if (cpu->unplug) {