public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] KVM: x86 emulator: emulate RETF imm
@ 2013-09-09 15:40 Bruce Rogers
  2013-09-10  6:45 ` Gleb Natapov
  2013-09-12 16:33 ` Paolo Bonzini
  0 siblings, 2 replies; 3+ messages in thread
From: Bruce Rogers @ 2013-09-09 15:40 UTC (permalink / raw)
  To: gleb, pbonzini; +Cc: kvm, Bruce Rogers

Opcode CA

This gets used by a DOS based NetWare guest.

Signed-off-by: Bruce Rogers <brogers@suse.com>
---
 arch/x86/kvm/emulate.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
index 2bc1e81..ddc3f3d 100644
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -2025,6 +2025,17 @@ static int em_ret_far(struct x86_emulate_ctxt *ctxt)
 	return rc;
 }
 
+static int em_ret_far_imm(struct x86_emulate_ctxt *ctxt)
+{
+        int rc;
+
+        rc = em_ret_far(ctxt);
+        if (rc != X86EMUL_CONTINUE)
+                return rc;
+        rsp_increment(ctxt, ctxt->src.val);
+        return X86EMUL_CONTINUE;
+}
+
 static int em_cmpxchg(struct x86_emulate_ctxt *ctxt)
 {
 	/* Save real source value, then compare EAX against destination. */
@@ -3763,7 +3774,8 @@ static const struct opcode opcode_table[256] = {
 	G(ByteOp, group11), G(0, group11),
 	/* 0xC8 - 0xCF */
 	I(Stack | SrcImmU16 | Src2ImmByte, em_enter), I(Stack, em_leave),
-	N, I(ImplicitOps | Stack, em_ret_far),
+	I(ImplicitOps | Stack | SrcImmU16, em_ret_far_imm),
+	I(ImplicitOps | Stack, em_ret_far),
 	D(ImplicitOps), DI(SrcImmByte, intn),
 	D(ImplicitOps | No64), II(ImplicitOps, em_iret, iret),
 	/* 0xD0 - 0xD7 */
-- 
1.7.7


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] KVM: x86 emulator: emulate RETF imm
  2013-09-09 15:40 [PATCH v2] KVM: x86 emulator: emulate RETF imm Bruce Rogers
@ 2013-09-10  6:45 ` Gleb Natapov
  2013-09-12 16:33 ` Paolo Bonzini
  1 sibling, 0 replies; 3+ messages in thread
From: Gleb Natapov @ 2013-09-10  6:45 UTC (permalink / raw)
  To: Bruce Rogers; +Cc: pbonzini, kvm

On Mon, Sep 09, 2013 at 09:40:20AM -0600, Bruce Rogers wrote:
> Opcode CA
> 
> This gets used by a DOS based NetWare guest.
> 
> Signed-off-by: Bruce Rogers <brogers@suse.com>
Reviewed-by: Gleb Natapov <gleb@redhat.com>

> ---
>  arch/x86/kvm/emulate.c |   14 +++++++++++++-
>  1 files changed, 13 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
> index 2bc1e81..ddc3f3d 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -2025,6 +2025,17 @@ static int em_ret_far(struct x86_emulate_ctxt *ctxt)
>  	return rc;
>  }
>  
> +static int em_ret_far_imm(struct x86_emulate_ctxt *ctxt)
> +{
> +        int rc;
> +
> +        rc = em_ret_far(ctxt);
> +        if (rc != X86EMUL_CONTINUE)
> +                return rc;
> +        rsp_increment(ctxt, ctxt->src.val);
> +        return X86EMUL_CONTINUE;
> +}
> +
>  static int em_cmpxchg(struct x86_emulate_ctxt *ctxt)
>  {
>  	/* Save real source value, then compare EAX against destination. */
> @@ -3763,7 +3774,8 @@ static const struct opcode opcode_table[256] = {
>  	G(ByteOp, group11), G(0, group11),
>  	/* 0xC8 - 0xCF */
>  	I(Stack | SrcImmU16 | Src2ImmByte, em_enter), I(Stack, em_leave),
> -	N, I(ImplicitOps | Stack, em_ret_far),
> +	I(ImplicitOps | Stack | SrcImmU16, em_ret_far_imm),
> +	I(ImplicitOps | Stack, em_ret_far),
>  	D(ImplicitOps), DI(SrcImmByte, intn),
>  	D(ImplicitOps | No64), II(ImplicitOps, em_iret, iret),
>  	/* 0xD0 - 0xD7 */
> -- 
> 1.7.7

--
			Gleb.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] KVM: x86 emulator: emulate RETF imm
  2013-09-09 15:40 [PATCH v2] KVM: x86 emulator: emulate RETF imm Bruce Rogers
  2013-09-10  6:45 ` Gleb Natapov
@ 2013-09-12 16:33 ` Paolo Bonzini
  1 sibling, 0 replies; 3+ messages in thread
From: Paolo Bonzini @ 2013-09-12 16:33 UTC (permalink / raw)
  To: Bruce Rogers; +Cc: gleb, kvm

Il 09/09/2013 17:40, Bruce Rogers ha scritto:
> Opcode CA
> 
> This gets used by a DOS based NetWare guest.
> 
> Signed-off-by: Bruce Rogers <brogers@suse.com>
> ---
>  arch/x86/kvm/emulate.c |   14 +++++++++++++-
>  1 files changed, 13 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c
> index 2bc1e81..ddc3f3d 100644
> --- a/arch/x86/kvm/emulate.c
> +++ b/arch/x86/kvm/emulate.c
> @@ -2025,6 +2025,17 @@ static int em_ret_far(struct x86_emulate_ctxt *ctxt)
>  	return rc;
>  }
>  
> +static int em_ret_far_imm(struct x86_emulate_ctxt *ctxt)
> +{
> +        int rc;
> +
> +        rc = em_ret_far(ctxt);
> +        if (rc != X86EMUL_CONTINUE)
> +                return rc;
> +        rsp_increment(ctxt, ctxt->src.val);
> +        return X86EMUL_CONTINUE;
> +}
> +
>  static int em_cmpxchg(struct x86_emulate_ctxt *ctxt)
>  {
>  	/* Save real source value, then compare EAX against destination. */
> @@ -3763,7 +3774,8 @@ static const struct opcode opcode_table[256] = {
>  	G(ByteOp, group11), G(0, group11),
>  	/* 0xC8 - 0xCF */
>  	I(Stack | SrcImmU16 | Src2ImmByte, em_enter), I(Stack, em_leave),
> -	N, I(ImplicitOps | Stack, em_ret_far),
> +	I(ImplicitOps | Stack | SrcImmU16, em_ret_far_imm),
> +	I(ImplicitOps | Stack, em_ret_far),
>  	D(ImplicitOps), DI(SrcImmByte, intn),
>  	D(ImplicitOps | No64), II(ImplicitOps, em_iret, iret),
>  	/* 0xD0 - 0xD7 */
> 

Applied to kvm/queue for 3.12, thanks.


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-09-12 16:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-09 15:40 [PATCH v2] KVM: x86 emulator: emulate RETF imm Bruce Rogers
2013-09-10  6:45 ` Gleb Natapov
2013-09-12 16:33 ` Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox