diff mbox series

helper_syscall x86_64: clear exception_is_int

Message ID a7dab33e-eda6-f988-52e9-f3d32db7538d@scieneer.com
State New
Headers show
Series helper_syscall x86_64: clear exception_is_int | expand

Commit Message

Douglas Crosher Sept. 22, 2020, 4:17 a.m. UTC
The exception_is_int flag may be set on entry to helper_syscall,
e.g. after a prior interrupt that has returned, and processing
EXCP_SYSCALL as an interrupt causes it to fail so clear this flag.

Signed-off-by: Douglas Crosher <dtc-ubuntu@scieneer.com>
---
  target/i386/seg_helper.c | 1 +
  1 file changed, 1 insertion(+)

  }

Comments

Paolo Bonzini Sept. 22, 2020, 12:04 p.m. UTC | #1
On 22/09/20 06:17, Douglas Crosher wrote:
> 
> The exception_is_int flag may be set on entry to helper_syscall,
> e.g. after a prior interrupt that has returned, and processing
> EXCP_SYSCALL as an interrupt causes it to fail so clear this flag.
> 
> Signed-off-by: Douglas Crosher <dtc-ubuntu@scieneer.com>
> ---
>  target/i386/seg_helper.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/target/i386/seg_helper.c b/target/i386/seg_helper.c
> index b96de068ca..be88938c2a 100644
> --- a/target/i386/seg_helper.c
> +++ b/target/i386/seg_helper.c
> @@ -975,6 +975,7 @@ void helper_syscall(CPUX86State *env, int
> next_eip_addend)
>      CPUState *cs = env_cpu(env);
> 
>      cs->exception_index = EXCP_SYSCALL;
> +    env->exception_is_int = 0;
>      env->exception_next_eip = env->eip + next_eip_addend;
>      cpu_loop_exit(cs);
>  }

Queued, thanks.

Paolo
diff mbox series

Patch

diff --git a/target/i386/seg_helper.c b/target/i386/seg_helper.c
index b96de068ca..be88938c2a 100644
--- a/target/i386/seg_helper.c
+++ b/target/i386/seg_helper.c
@@ -975,6 +975,7 @@  void helper_syscall(CPUX86State *env, int 
next_eip_addend)
      CPUState *cs = env_cpu(env);

      cs->exception_index = EXCP_SYSCALL;
+    env->exception_is_int = 0;
      env->exception_next_eip = env->eip + next_eip_addend;
      cpu_loop_exit(cs);