diff options
| author | Richard Henderson | 2016-06-30 07:12:55 +0200 |
|---|---|---|
| committer | Richard Henderson | 2016-10-26 17:29:00 +0200 |
| commit | fdbc2b5722f6092e47181a947c90fd4bdcc1c121 (patch) | |
| tree | e28acccae721a37200503f6983edf56b42b9d4a4 /cpus.c | |
| parent | int128: Add int128_make128 (diff) | |
| download | qemu-fdbc2b5722f6092e47181a947c90fd4bdcc1c121.tar.gz qemu-fdbc2b5722f6092e47181a947c90fd4bdcc1c121.tar.xz qemu-fdbc2b5722f6092e47181a947c90fd4bdcc1c121.zip | |
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) { |
