diff options
author | Gleb Natapov <gleb@redhat.com> | 2009-04-12 06:36:14 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2009-06-10 04:48:40 -0400 |
commit | a5f868bd45a64ce1f502d228723a5b6c357790cd (patch) | |
tree | eb67ac51d8fecd1308e5d274a39a6e7e1420343c | |
parent | c2d0ee46e6e633a3c23ecbcb9b03ad731906cd79 (diff) |
KVM: x86 emulator: Add decoding of 16bit second immediate argument
Such as segment number in lcall/ljmp
Signed-off-by: Gleb Natapov <gleb@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r-- | arch/x86/kvm/x86_emulate.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86_emulate.c b/arch/x86/kvm/x86_emulate.c index d7c9f6fd0d34..c0150636d453 100644 --- a/arch/x86/kvm/x86_emulate.c +++ b/arch/x86/kvm/x86_emulate.c | |||
@@ -76,6 +76,7 @@ | |||
76 | #define Src2CL (1<<29) | 76 | #define Src2CL (1<<29) |
77 | #define Src2ImmByte (2<<29) | 77 | #define Src2ImmByte (2<<29) |
78 | #define Src2One (3<<29) | 78 | #define Src2One (3<<29) |
79 | #define Src2Imm16 (4<<29) | ||
79 | #define Src2Mask (7<<29) | 80 | #define Src2Mask (7<<29) |
80 | 81 | ||
81 | enum { | 82 | enum { |
@@ -1072,6 +1073,12 @@ done_prefixes: | |||
1072 | c->src2.bytes = 1; | 1073 | c->src2.bytes = 1; |
1073 | c->src2.val = insn_fetch(u8, 1, c->eip); | 1074 | c->src2.val = insn_fetch(u8, 1, c->eip); |
1074 | break; | 1075 | break; |
1076 | case Src2Imm16: | ||
1077 | c->src2.type = OP_IMM; | ||
1078 | c->src2.ptr = (unsigned long *)c->eip; | ||
1079 | c->src2.bytes = 2; | ||
1080 | c->src2.val = insn_fetch(u16, 2, c->eip); | ||
1081 | break; | ||
1075 | case Src2One: | 1082 | case Src2One: |
1076 | c->src2.bytes = 1; | 1083 | c->src2.bytes = 1; |
1077 | c->src2.val = 1; | 1084 | c->src2.val = 1; |