unicorn/qemu
Paolo Bonzini 560515941a
target-i386: correctly propagate retaddr into SVM helpers
Commit 2afbdf8 ("target-i386: exception handling for memory helpers",
2015-09-15) changed tlb_fill's cpu_restore_state+raise_exception_err
to raise_exception_err_ra. After this change, the cpu_restore_state
and raise_exception_err's cpu_loop_exit are merged into
raise_exception_err_ra's cpu_loop_exit_restore.

This actually fixed some bugs, but when SVM is enabled there is a
second path from raise_exception_err_ra to cpu_loop_exit. This is
the VMEXIT path, and now cpu_vmexit is called without a
cpu_restore_state before.

The fix is to pass the retaddr to cpu_vmexit (via
cpu_svm_check_intercept_param). All helpers can now use GETPC() to pass
the correct retaddr, too.

Backports commit 823fb688ebc52a7d79c1308acb28c92b56820167 from qemu
2018-03-01 09:31:16 -05: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 fpu: add mechanism to check for invalid long double formats 2018-02-26 02:27:40 -05:00
hw qdev: Fix object reference leak in case device.realize() fails 2018-02-25 21:00:26 -05:00
include cpu-exec: fix icount out-of-bounds access 2018-03-01 09:17:26 -05:00
qapi qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2018-02-27 08:05:33 -05:00
qobject qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2018-02-27 08:05:33 -05:00
qom qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2018-02-27 08:05:33 -05:00
scripts qapi: rename QmpOutputVisitor to QObjectOutputVisitor 2018-02-27 08:05:33 -05:00
target-arm target-arm/translate-a64: fix gen_load_exclusive 2018-03-01 09:09:16 -05:00
target-i386 target-i386: correctly propagate retaddr into SVM helpers 2018-03-01 09:31:16 -05:00
target-m68k target-m68k: fix muluw/mulsw 2018-03-01 08:59:42 -05:00
target-mips target-mips: fix bad shifts in {dextp|dextpdp} 2018-03-01 09:04:41 -05:00
target-sparc target/sparc: Restore ldstub of odd asis 2018-03-01 09:21:44 -05:00
tcg tcg/aarch64: Fix tcg_out_movi 2018-03-01 09:15:34 -05:00
util Fix FreeBSD (10.x) build after 7dc9ae43 2018-03-01 08:55:43 -05:00
aarch64.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
aarch64eb.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
armeb.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
atomic_template.h tcg: Add atomic128 helpers 2018-02-27 21:43:48 -05:00
CODING_STYLE import 2015-08-21 15:04:50 +08:00
configure tcg: Add CONFIG_ATOMIC64 2018-02-27 22:25:36 -05:00
COPYING import 2015-08-21 15:04:50 +08:00
COPYING.LIB import 2015-08-21 15:04:50 +08:00
cpu-exec-common.c tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00
cpu-exec.c target-i386: correctly propagate retaddr into SVM helpers 2018-03-01 09:31:16 -05:00
cpus.c tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00
cputlb.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
exec.c exec: Add missing rcu_read_unlock 2018-03-01 09:12:27 -05:00
gen_all_header.sh arm64eb: add support for ARM64 big endian. 2017-04-24 23:30:01 +08:00
glib_compat.c qapi: Fix memleak in string visitors on int lists 2018-02-25 00:20:34 -05:00
HACKING import 2015-08-21 15:04:50 +08:00
header_gen.py tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05: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 tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
Makefile Makefile: Add a FORCE target 2018-02-24 17:03:51 -05:00
Makefile.objs tcg: Add atomic helpers 2018-02-27 15:57:47 -05:00
Makefile.target tcg: Add atomic helpers 2018-02-27 15:57:47 -05:00
memory.c exec.c: Remove static allocation of sub_section of sub_page 2018-02-26 10:50:04 -05:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
mips64.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
mips64el.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
mipsel.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
powerpc.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
qapi-schema.json qapi: add missing colon-ending for section name 2018-03-01 09:07:10 -05:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak rules.mak: Don't extract libs from .mo-libs in link command 2018-02-26 02:08:03 -05:00
softmmu_template.h cputlb: Remove includes from softmmu_template.h 2018-02-27 12:40:43 -05:00
sparc.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
sparc64.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00
tcg-runtime.c tcg: Add CONFIG_ATOMIC64 2018-02-27 22:25:36 -05:00
translate-all.c tcg: move locking for tb_invalidate_phys_page_range up 2018-02-28 10:35:41 -05:00
translate-all.h translate-all.c: Compute L1 page table properties at runtime 2018-02-26 11:46:58 -05:00
translate-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05:00
VERSION import 2015-08-21 15:04:50 +08:00
vl.c cpu: Support a target CPU having a variable page size 2018-02-26 12:29:08 -05:00
vl.h import 2015-08-21 15:04:50 +08:00
x86_64.h tcg: Add tcg_gen_mulsu2_{i32,i64,tl} 2018-03-01 08:39:37 -05:00