summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/vmm_instruction_emul.h
diff options
context:
space:
mode:
authorneel <neel@FreeBSD.org>2014-07-15 17:37:17 +0000
committerneel <neel@FreeBSD.org>2014-07-15 17:37:17 +0000
commiteb07e4ed5522cd757da89e0a4914051310702c6d (patch)
treef9b95c2eed26d1f61c4f0e24c9fbd103d28acb2a /sys/amd64/include/vmm_instruction_emul.h
parent9e8e83700cfbbfc40ec8d46c207163a148d836d1 (diff)
downloadFreeBSD-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.h2
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_ */
OpenPOWER on IntegriCloud