aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@web.de>2008-07-14 06:28:51 -0400
committerAvi Kivity <avi@qumranet.com>2008-10-15 04:15:14 -0400
commit77ab6db0a1c403387b403e9351ab3f5ae1df83e6 (patch)
tree8f2aa6dd842afbc45f52904cc25a575a92765e98 /include
parent19bd8afdc4e6fbb47e4841f8d771f8cb29916d9f (diff)
KVM: VMX: Reinject real mode exception
As we execute real mode guests in VM86 mode, exception have to be reinjected appropriately when the guest triggered them. For this purpose the patch adopts the real-mode injection pattern used in vmx_inject_irq to vmx_queue_exception, additionally taking care that the IP is set correctly for #BP exceptions. Furthermore it extends handle_rmode_exception to reinject all those exceptions that can be raised in real mode. This fixes the execution of himem.exe from FreeDOS and also makes its debug.com work properly. Note that guest debugging in real mode is broken now. This has to be fixed by the scheduled debugging infrastructure rework (will be done once base patches for QEMU have been accepted). Signed-off-by: Jan Kiszka <jan.kiszka@web.de> Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'include')
-rw-r--r--include/asm-x86/kvm_host.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/asm-x86/kvm_host.h b/include/asm-x86/kvm_host.h
index da3c1979b734..83afa10c77f5 100644
--- a/include/asm-x86/kvm_host.h
+++ b/include/asm-x86/kvm_host.h
@@ -58,6 +58,9 @@
58 58
59#define DE_VECTOR 0 59#define DE_VECTOR 0
60#define DB_VECTOR 1 60#define DB_VECTOR 1
61#define BP_VECTOR 3
62#define OF_VECTOR 4
63#define BR_VECTOR 5
61#define UD_VECTOR 6 64#define UD_VECTOR 6
62#define NM_VECTOR 7 65#define NM_VECTOR 7
63#define DF_VECTOR 8 66#define DF_VECTOR 8
@@ -66,6 +69,7 @@
66#define SS_VECTOR 12 69#define SS_VECTOR 12
67#define GP_VECTOR 13 70#define GP_VECTOR 13
68#define PF_VECTOR 14 71#define PF_VECTOR 14
72#define MF_VECTOR 16
69#define MC_VECTOR 18 73#define MC_VECTOR 18
70 74
71#define SELECTOR_TI_MASK (1 << 2) 75#define SELECTOR_TI_MASK (1 << 2)