Nitin A Kamble wrote:
> Hi Avi,
>   Attached is the patch to implement emulation of instruction aas
>   
> +       case 0x3f: /* aas */ {
> +               u8 al, ah, af, cf;
> +               al = c->regs[VCPU_REGS_RAX] & 0xff;
> +               ah = (c->regs[VCPU_REGS_RAX] >> 8) & 0xff;
> +               af = (ctxt->eflags & EFLG_AF);
> +               cf = (ctxt->eflags & EFLG_CF);
> +               if (((al & 0x0f) > 9) || af) {
> +                       al = al - 6;
> +                       ah = ah - 1;
> +                       af = cf = 1;
> +               } else {
> +                       cf = af = 0;
> +               }
> +               al = al & 0x0f;
> +               if (af)
> +                       ctxt->eflags |= EFLG_AF;
> +               else
> +                       ctxt->eflags &= ~EFLG_AF;
> +               if (cf)
> +                       ctxt->eflags |= EFLG_CF;
> +               else
> +                       ctxt->eflags &= ~EFLG_CF;
> +               *(u16 *) &c->regs[VCPU_REGS_RAX] = (ah << 8) & al;
> +               }
> +               break;

Please move the whole thing to a static function in order to reduce clutter.

Also, a helper

   static void set_flag_value(struct emulate_context *ctxt, u32 mask, 
int value) {... }

can simplify some of the code.

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