Nitin A Kamble wrote:
> Hi Avi,       
>   Attached is the patch to implement emulation of instruction:
>
> jb (opcode 0xe3)
> [PATCH] Implement emulation of instruction jb (conditional jump) 
> opcodes: 0xe3
> From:
> Nitin A Kamble <[EMAIL PROTECTED]>
>   To:
> Date:
> 2007-10-31 05:41
>    
> Signed-off-by: Nitin A Kamble <[EMAIL PROTECTED]>
> ---
>  drivers/kvm/x86_emulate.c |   25 ++++++++++++++++++++++++-
>  1 files changed, 24 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
> index 579cfcf..1357355 100644
> --- a/drivers/kvm/x86_emulate.c
> +++ b/drivers/kvm/x86_emulate.c
> @@ -165,7 +165,7 @@ static u16 opcode_table[256] = {
>         /* 0xD8 - 0xDF */
>         0, 0, 0, 0, 0, 0, 0, 0,
>         /* 0xE0 - 0xE7 */
> -       0, 0, 0, 0, 0, 0, 0, 0,
> +       0, 0, 0, ImplicitOps, 0, 0, 0, 0,
>         /* 0xE8 - 0xEF */
>         ImplicitOps, SrcImm|ImplicitOps, 0, SrcImmByte|ImplicitOps, 0, 
> 0, 0, 0,
>         /* 0xF0 - 0xF7 */
> @@ -1446,6 +1446,29 @@ x86_emulate_insn(struct x86_emulate_ctxt *ctxt, 
> struct x86_emulate_ops *ops)
>                 c->src.val = c->regs[VCPU_REGS_RCX];
>                 emulate_grp2(ctxt);
>                 break;
> +       case 0xe3 : /* jb */ {
> +               int rel = insn_fetch(s8, 1, c->eip);
> +               int condition = 0;
> +               if (test_cc(c->b, ctxt->eflags)) {
> +                       switch (c->op_bytes) {
> +                       case 2:
> +                               condition =
> +                                       (0 == *(u16 *) 
> &c->regs[VCPU_REGS_RCX]);
> +                               break;
> +                       case 4:
> +                               condition =
> +                                       (0 == *(u32 *) 
> &c->regs[VCPU_REGS_RCX]);
> +                               break;
> +                       case 8:
> +                               condition =
> +                                       (0 == *(u64 *) 
> &c->regs[VCPU_REGS_RCX]);
> +                               break;
> +                       }
> +               }
> +               if (condition)
> +                       JMP_REL(rel);
> +               break;
> +       }
>         case 0xf6 ... 0xf7:     /* Grp3 */
>                 rc = emulate_grp3(ctxt, ops);
>                 if (rc != 0)

This looks more like jcxz?

-- 
Any sufficiently difficult bug is indistinguishable from a feature.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to