KVM: x86 emulator: Add decoding of 16bit second immediate argument
authorGleb Natapov <gleb@redhat.com>
Sun, 12 Apr 2009 10:36:14 +0000 (13:36 +0300)
committerAvi Kivity <avi@redhat.com>
Wed, 10 Jun 2009 08:48:40 +0000 (11:48 +0300)
Such as segment number in lcall/ljmp

Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/kvm/x86_emulate.c

index d7c9f6f..c015063 100644 (file)
@@ -76,6 +76,7 @@
 #define Src2CL      (1<<29)
 #define Src2ImmByte (2<<29)
 #define Src2One     (3<<29)
+#define Src2Imm16   (4<<29)
 #define Src2Mask    (7<<29)
 
 enum {
@@ -1072,6 +1073,12 @@ done_prefixes:
                c->src2.bytes = 1;
                c->src2.val = insn_fetch(u8, 1, c->eip);
                break;
+       case Src2Imm16:
+               c->src2.type = OP_IMM;
+               c->src2.ptr = (unsigned long *)c->eip;
+               c->src2.bytes = 2;
+               c->src2.val = insn_fetch(u16, 2, c->eip);
+               break;
        case Src2One:
                c->src2.bytes = 1;
                c->src2.val = 1;