# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 4d4b41264b849c1350e0755a58c32111bb828e49
# Parent 768b0f6696fd4672812625a284dfb9e8448ab429
The maximum instruction length for both x86-32 and
x86-64 is 15 bytes (including all prefixes, opcode,
ModRM, SIB, displacement, and immediate bytes).
This patch adjusts the MAX_INST_LEN to the correct
value. This should reduce the size of some variables
in the hypervisor code. This patch also does some
minor code clean-up in the vm exit handler for VMX.
Signed-off-by: Khoa Huynh <khoa@xxxxxxxxxx>
diff -r 768b0f6696fd -r 4d4b41264b84 xen/arch/x86/hvm/vmx/vmx.c
--- a/xen/arch/x86/hvm/vmx/vmx.c Tue Apr 11 09:41:08 2006
+++ b/xen/arch/x86/hvm/vmx/vmx.c Tue Apr 11 09:44:07 2006
@@ -1947,7 +1947,7 @@
&& !(vector & INTR_INFO_VALID_MASK))
__hvm_bug(regs);
- vector &= 0xff;
+ vector &= INTR_INFO_VECTOR_MASK;
local_irq_disable();
TRACE_VMEXIT(1,vector);
@@ -2077,10 +2077,8 @@
return;
}
- {
- __vmread(GUEST_RIP, &eip);
- TRACE_VMEXIT(0,exit_reason);
- }
+ __vmread(GUEST_RIP, &eip);
+ TRACE_VMEXIT(0,exit_reason);
switch (exit_reason) {
case EXIT_REASON_EXCEPTION_NMI:
@@ -2097,7 +2095,7 @@
if ((error = __vmread(VM_EXIT_INTR_INFO, &vector))
|| !(vector & INTR_INFO_VALID_MASK))
__hvm_bug(®s);
- vector &= 0xff;
+ vector &= INTR_INFO_VECTOR_MASK;
TRACE_VMEXIT(1,vector);
perfc_incra(cause_vector, vector);
diff -r 768b0f6696fd -r 4d4b41264b84 xen/include/asm-x86/hvm/io.h
--- a/xen/include/asm-x86/hvm/io.h Tue Apr 11 09:41:08 2006
+++ b/xen/include/asm-x86/hvm/io.h Tue Apr 11 09:44:07 2006
@@ -77,7 +77,7 @@
__u32 flags;
};
-#define MAX_INST_LEN 32
+#define MAX_INST_LEN 15 /* Maximum instruction length = 15 bytes */
struct mmio_op {
int flags;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|