unicorn/qemu
Pavel Dovgalyuk 36d902cd0e
cpu-exec: fix exception_index handling
Function cpu_handle_interrupt calls cc->cpu_exec_interrupt to process
pending hardware interrupts. Under the hood cpu_exec_interrupt uses
cpu->exception_index to pass information to the internal function which
is usually common for exception and interrupt processing.
But this value is not reset after return and may be processed again
by cpu_handle_exception. This does not happen due to overwriting
the exception_index at the end of cpu_handle_interrupt.
But this branch may also overwrite the valid exception_index in some cases.
Therefore this patch:
1. resets exception_index just after the call to cpu_exec_interrupt
2. prevents overwriting the meaningful value of exception_index

Backports commit 5f3bdfd4fa33255542a4b6249913d9ffb11b44f9 from qemu
2018-03-17 19:33:05 -04:00
..
accel cpu-exec: fix exception_index handling 2018-03-17 19:33:05 -04:00
crypto crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
docs docs: clarify memory region lifecycle 2018-02-12 15:11:21 -05:00
fpu softfloat: fix crash on int conversion of SNaN 2018-03-09 11:40:17 -05:00
hw target/arm: Make 'any' CPU just an alias for 'max' 2018-03-12 10:11:49 -04:00
include membarrier: add --enable-membarrier 2018-03-17 19:30:43 -04:00
qapi qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
qobject qdict: Introduce qdict_rename_keys() 2018-03-12 10:11:48 -04:00
qom qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
scripts qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
target i386: Add support to get/set/migrate Intel Processor Trace feature 2018-03-17 19:11:21 -04:00
tcg tcg: Allow 6 arguments to TCG helpers 2018-03-17 18:29:04 -04:00
util membarrier: add --enable-membarrier 2018-03-17 19:30:43 -04:00
aarch64.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
aarch64eb.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
armeb.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure membarrier: add --enable-membarrier 2018-03-17 19:30:43 -04:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpus.c Include qapi/error.h exactly where needed 2018-03-07 12:26:38 -05:00
exec.c exec: Drop unnecessary code for unicorn 2018-03-12 10:11:46 -04:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c memory: Share FlatView's and dispatch trees between address spaces 2018-03-11 22:05:44 -04:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE import 2015-08-21 15:04:50 +08:00
m68k.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
Makefile qapi: Don't create useless directory qapi-generated 2018-03-09 11:36:49 -05:00
Makefile.objs qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-09 11:35:11 -05:00
Makefile.target tcg: move tcg backend files into accel/tcg/ 2018-03-13 11:48:15 -04:00
memory.c memory: Share special empty FlatView 2018-03-11 22:34:28 -04:00
memory_ldst.inc.c exec: Drop unnecessary code for unicorn 2018-03-12 10:11:46 -04:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
mips64.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
mips64el.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
mipsel.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
powerpc.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak build-sys: silence make by default or V=0 2018-03-06 08:58:03 -05:00
sparc.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
sparc64.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00
unicorn_common.h memory: Share special empty FlatView 2018-03-11 22:34:28 -04:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c machine: Eliminate QEMUMachine and qemu_register_machine() 2018-03-11 15:22:25 -04:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h qom: introduce object_class_get_list_sorted 2018-03-17 19:16:25 -04:00