diff options
author | Richard Henderson <rth@twiddle.net> | 2016-06-29 22:12:55 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2016-10-26 08:29:00 -0700 |
commit | fdbc2b5722f6092e47181a947c90fd4bdcc1c121 (patch) | |
tree | e28acccae721a37200503f6983edf56b42b9d4a4 /cpus.c | |
parent | 1edaeee0955fba7d834b7c8f4e372e7eae030745 (diff) | |
download | qemu-fdbc2b5722f6092e47181a947c90fd4bdcc1c121.zip qemu-fdbc2b5722f6092e47181a947c90fd4bdcc1c121.tar.gz qemu-fdbc2b5722f6092e47181a947c90fd4bdcc1c121.tar.bz2 |
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.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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) { |