diff options
author | neel <neel@FreeBSD.org> | 2014-07-15 17:37:17 +0000 |
---|---|---|
committer | neel <neel@FreeBSD.org> | 2014-07-15 17:37:17 +0000 |
commit | eb07e4ed5522cd757da89e0a4914051310702c6d (patch) | |
tree | f9b95c2eed26d1f61c4f0e24c9fbd103d28acb2a /sys/amd64/include/vmm_instruction_emul.h | |
parent | 9e8e83700cfbbfc40ec8d46c207163a148d836d1 (diff) | |
download | FreeBSD-src-eb07e4ed5522cd757da89e0a4914051310702c6d.zip FreeBSD-src-eb07e4ed5522cd757da89e0a4914051310702c6d.tar.gz |
Add support for operand size and address size override prefixes in bhyve's
instruction emulation [1].
Fix bug in emulation of opcode 0x8A where the destination is a legacy high
byte register and the guest vcpu is in 32-bit mode. Prior to this change
instead of modifying %ah, %bh, %ch or %dh the emulation would end up
modifying %spl, %bpl, %sil or %dil instead.
Add support for moffsets by treating it as a 2, 4 or 8 byte immediate value
during instruction decoding.
Fix bug in verify_gla() where the linear address computed after decoding
the instruction was not being truncated to the effective address size [2].
Tested by: Leon Dang [1]
Reported by: Peter Grehan [2]
Sponsored by: Nahanni Systems
Diffstat (limited to 'sys/amd64/include/vmm_instruction_emul.h')
-rw-r--r-- | sys/amd64/include/vmm_instruction_emul.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/amd64/include/vmm_instruction_emul.h b/sys/amd64/include/vmm_instruction_emul.h index e4c408b..05b60fb 100644 --- a/sys/amd64/include/vmm_instruction_emul.h +++ b/sys/amd64/include/vmm_instruction_emul.h @@ -108,7 +108,7 @@ void vie_init(struct vie *vie); */ #define VIE_INVALID_GLA (1UL << 63) /* a non-canonical address */ int vmm_decode_instruction(struct vm *vm, int cpuid, uint64_t gla, - enum vm_cpu_mode cpu_mode, struct vie *vie); + enum vm_cpu_mode cpu_mode, int csd, struct vie *vie); #endif /* _KERNEL */ #endif /* _VMM_INSTRUCTION_EMUL_H_ */ |