x86_emulate: fix side-effect macro call.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 5 Feb 2008 15:50:59 +0000 (15:50 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 5 Feb 2008 15:50:59 +0000 (15:50 +0000)
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
xen/arch/x86/x86_emulate.c

index bf867a7b56e59971d563623b30150d21c0db09cb..ee0118a7b3074a10dcafe88fa4f904fc9fb98d04 100644 (file)
@@ -550,7 +550,8 @@ do {                                                                    \
 
 #define jmp_rel(rel)                                                    \
 do {                                                                    \
-    _regs.eip += (int)(rel);                                            \
+    int _rel = (int)(rel);                                              \
+    _regs.eip += _rel;                                                  \
     if ( !mode_64bit() )                                                \
         _regs.eip = ((op_bytes == 2)                                    \
                      ? (uint16_t)_regs.eip : (uint32_t)_regs.eip);      \
@@ -2785,9 +2786,11 @@ x86_emulate(
         break;
     }
 
-    case 0xeb: /* jmp (short) */
-        jmp_rel(insn_fetch_type(int8_t));
+    case 0xeb: /* jmp (short) */ {
+        int rel = insn_fetch_type(int8_t);
+        jmp_rel(rel);
         break;
+    }
 
     case 0xf1: /* int1 (icebp) */
         src.val = EXC_DB;