@@ -111,8 +111,12 @@ static u8 opcode_table[256] = {
111
111
0 , 0 , ImplicitOps |Mov , 0 ,
112
112
SrcNone | ByteOp | ImplicitOps , SrcNone | ImplicitOps , /* insb, insw/insd */
113
113
SrcNone | ByteOp | ImplicitOps , SrcNone | ImplicitOps , /* outsb, outsw/outsd */
114
- /* 0x70 - 0x7F */
115
- 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
114
+ /* 0x70 - 0x77 */
115
+ ImplicitOps , ImplicitOps , ImplicitOps , ImplicitOps ,
116
+ ImplicitOps , ImplicitOps , ImplicitOps , ImplicitOps ,
117
+ /* 0x78 - 0x7F */
118
+ ImplicitOps , ImplicitOps , ImplicitOps , ImplicitOps ,
119
+ ImplicitOps , ImplicitOps , ImplicitOps , ImplicitOps ,
116
120
/* 0x80 - 0x87 */
117
121
ByteOp | DstMem | SrcImm | ModRM , DstMem | SrcImm | ModRM ,
118
122
ByteOp | DstMem | SrcImm | ModRM , DstMem | SrcImmByte | ModRM ,
@@ -1268,6 +1272,13 @@ x86_emulate_memop(struct x86_emulate_ctxt *ctxt, struct x86_emulate_ops *ops)
1268
1272
) == 0 )
1269
1273
return -1 ;
1270
1274
return 0 ;
1275
+ case 0x70 ... 0x7f : /* jcc (short) */ {
1276
+ int rel = insn_fetch (s8 , 1 , _eip );
1277
+
1278
+ if (test_cc (b , _eflags ))
1279
+ JMP_REL (rel );
1280
+ break ;
1281
+ }
1271
1282
case 0x9c : /* pushf */
1272
1283
src .val = (unsigned long ) _eflags ;
1273
1284
goto push ;
0 commit comments