* [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