On 03/07/2017 02:57 AM, Alex Bennée wrote:
cs->exception_index = intno;
env->error_code = error_code;
env->exception_is_int = is_int;
env->exception_next_eip = env->eip + next_eip_addend;
+ env->exception_retaddr = retaddr;
cpu_loop_exit_restore(cs, retaddr);
Since you've restored state here, I don't see that you need to save the retaddr
at all ...
+ if (!env->exception_is_int) {
+ cpu_svm_check_intercept_param(env,
+ SVM_EXIT_EXCP_BASE + cs->exception_index,
+ env->error_code,
+ env->exception_retaddr);
+ cs->exception_index = check_exception(env, cs->exception_index,
+ &env->error_code,
+ env->exception_retaddr);
+ } else {
+ cpu_svm_check_intercept_param(env, SVM_EXIT_SWINT, 0,
+ env->exception_retaddr);
+ }
... simply pass zero here instead.
But do I see correctly from the thread that we don't have a reproducer?
r~