summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/vmm_instruction_emul.h
diff options
context:
space:
mode:
authorneel <neel@FreeBSD.org>2014-05-23 19:59:14 +0000
committerneel <neel@FreeBSD.org>2014-05-23 19:59:14 +0000
commit2ccda87acabbb02f574bc3d56994076404bc689b (patch)
tree83967173eb01a2c4de511c4eb71440661a9ed8f1 /sys/amd64/include/vmm_instruction_emul.h
parent549a5817c0ebaf4934c376d9bab4bf1bfefb0471 (diff)
downloadFreeBSD-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.h10
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);
OpenPOWER on IntegriCloud