diff options
author | neel <neel@FreeBSD.org> | 2014-05-23 19:59:14 +0000 |
---|---|---|
committer | neel <neel@FreeBSD.org> | 2014-05-23 19:59:14 +0000 |
commit | 2ccda87acabbb02f574bc3d56994076404bc689b (patch) | |
tree | 83967173eb01a2c4de511c4eb71440661a9ed8f1 /sys/amd64/include/vmm_instruction_emul.h | |
parent | 549a5817c0ebaf4934c376d9bab4bf1bfefb0471 (diff) | |
download | FreeBSD-src-2ccda87acabbb02f574bc3d56994076404bc689b.zip FreeBSD-src-2ccda87acabbb02f574bc3d56994076404bc689b.tar.gz |
Check for alignment check violation when processing in/out string instructions.
Diffstat (limited to 'sys/amd64/include/vmm_instruction_emul.h')
-rw-r--r-- | sys/amd64/include/vmm_instruction_emul.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/amd64/include/vmm_instruction_emul.h b/sys/amd64/include/vmm_instruction_emul.h index d2cfdef..797cb39 100644 --- a/sys/amd64/include/vmm_instruction_emul.h +++ b/sys/amd64/include/vmm_instruction_emul.h @@ -116,6 +116,14 @@ int vmm_emulate_instruction(void *vm, int cpuid, uint64_t gpa, struct vie *vie, int vie_update_register(void *vm, int vcpuid, enum vm_reg_name reg, uint64_t val, int size); +/* + * Returns 1 if an alignment check exception should be injected and 0 otherwise. + */ +int vie_alignment_check(int cpl, int operand_size, uint64_t cr0, + uint64_t rflags, uint64_t gla); + +uint64_t vie_size2mask(int size); + #ifdef _KERNEL /* * APIs to fetch and decode the instruction from nested page fault handler. @@ -139,8 +147,6 @@ int vmm_gla2gpa(struct vm *vm, int vcpuid, uint64_t gla, uint64_t cr3, void vie_init(struct vie *vie); -uint64_t vie_size2mask(int size); - uint64_t vie_segbase(enum vm_reg_name segment, enum vie_cpu_mode cpu_mode, const struct seg_desc *desc); |