aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/kvm/x86_emulate.c
diff options
context:
space:
mode:
authorAvi Kivity <avi@qumranet.com>2007-06-05 09:15:51 -0400
committerAvi Kivity <avi@qumranet.com>2007-07-16 05:05:46 -0400
commit72d6e5a08a8ba2105b3f36e32285e8fbfbed1f71 (patch)
tree6d20932e350683760d79f2c6cca6ef3bfafbce96 /drivers/kvm/x86_emulate.c
parentd3bef15f84f91c73a5515ad4c6a1749f8f63afcf (diff)
KVM: Emulate hlt on real mode for Intel
This has two use cases: the bios can't boot from disk, and guest smp bootstrap. Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm/x86_emulate.c')
-rw-r--r--drivers/kvm/x86_emulate.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index 6123c0292b22..a4a84817b274 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -143,7 +143,8 @@ static u8 opcode_table[256] = {
143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
144 /* 0xF0 - 0xF7 */ 144 /* 0xF0 - 0xF7 */
145 0, 0, 0, 0, 145 0, 0, 0, 0,
146 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM, 146 ImplicitOps, 0,
147 ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM,
147 /* 0xF8 - 0xFF */ 148 /* 0xF8 - 0xFF */
148 0, 0, 0, 0, 149 0, 0, 0, 0,
149 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM 150 0, 0, ByteOp | DstMem | SrcNone | ModRM, DstMem | SrcNone | ModRM
@@ -1149,6 +1150,9 @@ special_insn:
1149 case 0xae ... 0xaf: /* scas */ 1150 case 0xae ... 0xaf: /* scas */
1150 DPRINTF("Urk! I don't handle SCAS.\n"); 1151 DPRINTF("Urk! I don't handle SCAS.\n");
1151 goto cannot_emulate; 1152 goto cannot_emulate;
1153 case 0xf4: /* hlt */
1154 ctxt->vcpu->halt_request = 1;
1155 goto done;
1152 } 1156 }
1153 goto writeback; 1157 goto writeback;
1154 1158