]> xenbits.xensource.com Git - xen.git/commitdiff
x86_emulate: Fix MUL emulation.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 7 Feb 2008 18:00:44 +0000 (18:00 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 7 Feb 2008 18:00:44 +0000 (18:00 +0000)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen/arch/x86/x86_emulate.c

index ee0118a7b3074a10dcafe88fa4f904fc9fb98d04..c111f1ca3655e447bfb629e6daea9f3a4b0090f6 100644 (file)
@@ -1710,11 +1710,14 @@ x86_emulate(
             switch ( src.bytes )
             {
             case 1:
+                dst.val = (uint8_t)dst.val;
                 dst.val *= src.val;
                 if ( (uint8_t)dst.val != (uint16_t)dst.val )
                     _regs.eflags |= EFLG_OF|EFLG_CF;
+                dst.bytes = 2;
                 break;
             case 2:
+                dst.val = (uint16_t)dst.val;
                 dst.val *= src.val;
                 if ( (uint16_t)dst.val != (uint32_t)dst.val )
                     _regs.eflags |= EFLG_OF|EFLG_CF;
@@ -1722,6 +1725,7 @@ x86_emulate(
                 break;
 #ifdef __x86_64__
             case 4:
+                dst.val = (uint32_t)dst.val;
                 dst.val *= src.val;
                 if ( (uint32_t)dst.val != dst.val )
                     _regs.eflags |= EFLG_OF|EFLG_CF;