Symbol: vie
usr/src/uts/intel/io/vmm/amd/svm.c
563
struct vie *vie;
usr/src/uts/intel/io/vmm/amd/svm.c
585
vie = vm_vie_ctx(svm_sc->vm, vcpu);
usr/src/uts/intel/io/vmm/amd/svm.c
603
vie_init_other(vie, &paging);
usr/src/uts/intel/io/vmm/amd/svm.c
631
vie_init_inout(vie, inout, vmexit->inst_length, &paging);
usr/src/uts/intel/io/vmm/amd/svm.c
675
struct vie *vie;
usr/src/uts/intel/io/vmm/amd/svm.c
719
vie = vm_vie_ctx(svm_sc->vm, vcpu);
usr/src/uts/intel/io/vmm/amd/svm.c
720
vie_init_mmio(vie, inst_bytes, inst_len, &paging, gpa);
usr/src/uts/intel/io/vmm/amd/svm.c
869
struct vie *vie;
usr/src/uts/intel/io/vmm/amd/svm.c
875
vie = vm_vie_ctx(svm_sc->vm, vcpu);
usr/src/uts/intel/io/vmm/amd/svm.c
877
vie_init_other(vie, &paging);
usr/src/uts/intel/io/vmm/intel/vmx.c
1819
vmexit_mmio_emul(struct vm_exit *vmexit, struct vie *vie, uint64_t gpa,
usr/src/uts/intel/io/vmm/intel/vmx.c
1848
vie_init_mmio(vie, NULL, 0, &paging, gpa);
usr/src/uts/intel/io/vmm/intel/vmx.c
1852
vmexit_inout(struct vm_exit *vmexit, struct vie *vie, uint64_t qual,
usr/src/uts/intel/io/vmm/intel/vmx.c
1899
vie_init_inout(vie, inout, vmexit->inst_length, &paging);
usr/src/uts/intel/io/vmm/intel/vmx.c
2044
struct vie *vie;
usr/src/uts/intel/io/vmm/intel/vmx.c
2091
vie = vm_vie_ctx(vmx->vm, vcpuid);
usr/src/uts/intel/io/vmm/intel/vmx.c
2092
vmexit_mmio_emul(vmexit, vie, DEFAULT_APIC_BASE + offset,
usr/src/uts/intel/io/vmm/intel/vmx.c
2186
struct vie *vie;
usr/src/uts/intel/io/vmm/intel/vmx.c
2397
vie = vm_vie_ctx(vmx->vm, vcpu);
usr/src/uts/intel/io/vmm/intel/vmx.c
2398
vmexit_inout(vmexit, vie, qual, (uint32_t)vmxctx->guest_rax);
usr/src/uts/intel/io/vmm/intel/vmx.c
2506
vie = vm_vie_ctx(vmx->vm, vcpu);
usr/src/uts/intel/io/vmm/intel/vmx.c
2507
vmexit_mmio_emul(vmexit, vie, gpa,
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
108
int vie_verify_gla(struct vie *vie, struct vm *vm, int cpuid, uint64_t gla);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
121
int vie_decode_instruction(struct vie *vie, struct vm *vm, int cpuid, int csd);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
50
struct vie;
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
52
struct vie *vie_alloc();
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
53
void vie_free(struct vie *);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
57
void vie_init_mmio(struct vie *vie, const char *inst_bytes, uint8_t inst_length,
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
59
void vie_init_inout(struct vie *vie, const struct vm_inout *inout,
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
61
void vie_init_other(struct vie *vie, const struct vm_guest_paging *paging);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
63
int vie_fulfill_mmio(struct vie *vie, const struct vm_mmio *res);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
64
int vie_fulfill_inout(struct vie *vie, const struct vm_inout *res);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
66
bool vie_needs_fetch(const struct vie *vie);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
67
bool vie_pending(const struct vie *vie);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
68
uint64_t vie_mmio_gpa(const struct vie *vie);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
69
void vie_exitinfo(const struct vie *vie, struct vm_exit *vme);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
70
void vie_fallback_exitinfo(const struct vie *vie, struct vm_exit *vme);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
71
void vie_cs_info(const struct vie *vie, struct vm *vm, int vcpuid,
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
74
void vie_reset(struct vie *vie);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
75
void vie_advance_pc(struct vie *vie, uint64_t *nextrip);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
77
int vie_emulate_mmio(struct vie *vie, struct vm *vm, int vcpuid);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
78
int vie_emulate_inout(struct vie *vie, struct vm *vm, int vcpuid);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
79
int vie_emulate_other(struct vie *vie, struct vm *vm, int vcpuid);
usr/src/uts/intel/io/vmm/sys/vmm_instruction_emul.h
86
int vie_fetch_instruction(struct vie *vie, struct vm *vm, int cpuid,
usr/src/uts/intel/io/vmm/sys/vmm_kernel.h
218
struct vie *vm_vie_ctx(struct vm *vm, int vcpuid);
usr/src/uts/intel/io/vmm/sys/vmm_kernel.h
62
struct vie;
usr/src/uts/intel/io/vmm/vmm.c
157
struct vie *vie_ctx; /* (x) instruction emulation context */
usr/src/uts/intel/io/vmm/vmm.c
1744
struct vie *vie;
usr/src/uts/intel/io/vmm/vmm.c
1752
vie = vcpu->vie_ctx;
usr/src/uts/intel/io/vmm/vmm.c
1761
if (vie_needs_fetch(vie)) {
usr/src/uts/intel/io/vmm/vmm.c
1762
error = vie_fetch_instruction(vie, vm, vcpuid, inst_addr,
usr/src/uts/intel/io/vmm/vmm.c
1777
if (vie_decode_instruction(vie, vm, vcpuid, cs_d) != 0) {
usr/src/uts/intel/io/vmm/vmm.c
1779
vie_fallback_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
1783
vie_verify_gla(vie, vm, vcpuid, vme->u.mmio_emul.gla) != 0) {
usr/src/uts/intel/io/vmm/vmm.c
1785
vie_fallback_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
1790
error = vie_emulate_mmio(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm.c
1796
vie_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
1813
vie_reset(vie);
usr/src/uts/intel/io/vmm/vmm.c
1819
vie_advance_pc(vie, &vcpu->nextrip);
usr/src/uts/intel/io/vmm/vmm.c
1828
struct vie *vie;
usr/src/uts/intel/io/vmm/vmm.c
1832
vie = vcpu->vie_ctx;
usr/src/uts/intel/io/vmm/vmm.c
1835
err = vie_emulate_inout(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm.c
1842
vie_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
1860
vie_reset(vie);
usr/src/uts/intel/io/vmm/vmm.c
1871
vie_advance_pc(vie, &vcpu->nextrip);
usr/src/uts/intel/io/vmm/vmm.c
1878
struct vie *vie;
usr/src/uts/intel/io/vmm/vmm.c
1886
vie = vcpu->vie_ctx;
usr/src/uts/intel/io/vmm/vmm.c
1888
vie_cs_info(vie, vm, vcpuid, &cs_base, &cs_d);
usr/src/uts/intel/io/vmm/vmm.c
1891
ASSERT(vie_needs_fetch(vie));
usr/src/uts/intel/io/vmm/vmm.c
1892
error = vie_fetch_instruction(vie, vm, vcpuid, vme->rip + cs_base,
usr/src/uts/intel/io/vmm/vmm.c
1905
if (vie_decode_instruction(vie, vm, vcpuid, cs_d) != 0) {
usr/src/uts/intel/io/vmm/vmm.c
1907
vie_fallback_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
1911
error = vie_emulate_other(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm.c
1917
vie_fallback_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
1920
vie_advance_pc(vie, &vcpu->nextrip);
usr/src/uts/intel/io/vmm/vmm.c
2421
struct vie *vie = vcpu->vie_ctx;
usr/src/uts/intel/io/vmm/vmm.c
2431
vie_reset(vie);
usr/src/uts/intel/io/vmm/vmm.c
2434
err = vie_fulfill_mmio(vie, &entry->u.mmio);
usr/src/uts/intel/io/vmm/vmm.c
2436
err = vie_emulate_mmio(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm.c
2438
vie_advance_pc(vie, &vcpu->nextrip);
usr/src/uts/intel/io/vmm/vmm.c
2440
vie_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
2447
vie_reset(vie);
usr/src/uts/intel/io/vmm/vmm.c
2453
err = vie_fulfill_inout(vie, &entry->u.inout);
usr/src/uts/intel/io/vmm/vmm.c
2455
err = vie_emulate_inout(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm.c
2457
vie_advance_pc(vie, &vcpu->nextrip);
usr/src/uts/intel/io/vmm/vmm.c
2459
vie_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
2466
vie_reset(vie);
usr/src/uts/intel/io/vmm/vmm.c
2490
struct vie *vie;
usr/src/uts/intel/io/vmm/vmm.c
2492
vie = vm->vcpu[vcpuid].vie_ctx;
usr/src/uts/intel/io/vmm/vmm.c
2494
if (vie_pending(vie)) {
usr/src/uts/intel/io/vmm/vmm.c
2499
vie_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm.c
472
struct vie *
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1007
vie_emulate_movx(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1013
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1016
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1028
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, 1);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1033
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1049
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, 2);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1053
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1071
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, 1);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1076
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1094
vie_get_gla(struct vie *vie, struct vm *vm, int vcpuid, int opsize,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1103
paging = &vie->paging;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1145
vie_emulate_movs(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1153
opsize = (vie->op.op_byte == 0xA4) ? 1 : vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1156
paging = &vie->paging;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1165
repeat = vie->repz_present | vie->repnz_present;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1175
if ((rcx & vie_size2mask(vie->addrsize)) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1197
seg = vie->segment_override ? vie->segment_register : VM_REG_GUEST_DS;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1198
if (vie_get_gla(vie, vm, vcpuid, opsize, vie->addrsize, PROT_READ, seg,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1214
error = vie_mmio_write(vie, vm, vcpuid, gpa, val, opsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1223
if (vie_get_gla(vie, vm, vcpuid, opsize, vie->addrsize,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1244
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1278
error = vie_mmio_read(vie, vm, vcpuid, srcgpa, &val,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1283
error = vie_mmio_write(vie, vm, vcpuid, dstgpa, val,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1308
vie->addrsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1312
vie->addrsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1318
rcx, vie->addrsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1324
if ((rcx & vie_size2mask(vie->addrsize)) != 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1325
return (vie_repeat(vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1332
vie_emulate_stos(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1338
opsize = (vie->op.op_byte == 0xAA) ? 1 : vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1339
repeat = vie->repz_present | vie->repnz_present;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1349
if ((rcx & vie_size2mask(vie->addrsize)) == 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1356
error = vie_mmio_write(vie, vm, vcpuid, gpa, val, opsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1372
vie->addrsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1378
rcx, vie->addrsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1384
if ((rcx & vie_size2mask(vie->addrsize)) != 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1385
return (vie_repeat(vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1392
vie_emulate_and(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1398
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1401
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1413
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1419
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val2, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1443
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val1, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1451
result = val1 & vie->immediate;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1452
error = vie_mmio_write(vie, vm, vcpuid, gpa, result, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1479
vie_emulate_or(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1485
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1488
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1500
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1506
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val2, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1530
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val1, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1538
result = val1 | vie->immediate;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1539
error = vie_mmio_write(vie, vm, vcpuid, gpa, result, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1566
vie_emulate_cmp(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1572
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1573
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1592
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1598
error = vie_mmio_read(vie, vm, vcpuid, gpa, &memop, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1602
if (vie->op.op_byte == 0x3B) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1633
if (vie->op.op_byte == 0x80)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1637
error = vie_mmio_read(vie, vm, vcpuid, gpa, &op1, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1641
rflags2 = getcc(size, op1, vie->immediate);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1657
vie_emulate_test(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1662
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1665
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1675
if ((vie->reg & 7) != 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1680
error = vie_mmio_read(vie, vm, vcpuid, gpa, &op1, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1684
rflags2 = getandflags(size, op1, vie->immediate);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1697
if ((vie->reg & 7) != 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1700
error = vie_mmio_read(vie, vm, vcpuid, gpa, &op1, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1704
rflags2 = getandflags(size, op1, vie->immediate);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1725
vie_emulate_bextr(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1732
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1734
paging = &vie->paging;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1753
error = vie_mmio_read(vie, vm, vcpuid, gpa, &src1, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1756
error = vm_get_register(vm, vcpuid, gpr_map[vie->vex_reg], &src2);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1785
error = vie_update_register(vm, vcpuid, gpr_map[vie->reg], dst, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1802
vie_emulate_add(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1808
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1811
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1822
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1828
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val2, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1857
vie_emulate_sub(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1863
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1866
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1877
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1883
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val2, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1912
vie_emulate_mul(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1920
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1923
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1938
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1944
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val2, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1954
const char *, vie_regnum_name(vie->reg, size),
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1982
vie_emulate_stack_op(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1991
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1992
pushop = (vie->op.op_type == VIE_OP_TYPE_PUSH) ? 1 : 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
1993
paging = &vie->paging;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2009
size = vie->opsize_override ? 2 : 8;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2061
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2066
error = vie_mmio_write(vie, vm, vcpuid, gpa, val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2080
vie_emulate_push(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2090
if ((vie->reg & 7) != 6)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2093
error = vie_emulate_stack_op(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2098
vie_emulate_pop(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2108
if ((vie->reg & 7) != 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2111
error = vie_emulate_stack_op(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2116
vie_emulate_group1(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2120
switch (vie->reg & 7) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2122
error = vie_emulate_or(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2125
error = vie_emulate_and(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2128
error = vie_emulate_cmp(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2139
vie_emulate_bittest(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2150
if ((vie->reg & 7) != 4)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2156
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, vie->opsize);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2164
bitmask = vie->opsize * 8 - 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2165
bitoff = vie->immediate & bitmask;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2180
vie_emulate_twob_group15(struct vie *vie, struct vm *vm, int vcpuid,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2186
switch (vie->reg & 7) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2188
if (vie->mod == 0x3) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2199
error = vie_mmio_read(vie, vm, vcpuid, gpa, &buf, 1);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2211
vie_emulate_clts(struct vie *vie, struct vm *vm, int vcpuid)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2216
if (vie->paging.cpl != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2218
vie->num_processed = 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2235
vie_mmio_read(struct vie *vie, struct vm *vm, int cpuid, uint64_t gpa,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2240
if (vie->mmio_req_read.state == VR_DONE) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2241
ASSERT(vie->mmio_req_read.bytes == bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2242
ASSERT(vie->mmio_req_read.gpa == gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2244
*rval = vie->mmio_req_read.data;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2256
ASSERT(vie->mmio_req_read.state == VR_NONE);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2258
vie->mmio_req_read.bytes = bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2259
vie->mmio_req_read.gpa = gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2260
vie->mmio_req_read.data = *rval;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2261
vie->mmio_req_read.state = VR_DONE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2265
vie->mmio_req_read.bytes = bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2266
vie->mmio_req_read.gpa = gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2267
vie->mmio_req_read.state = VR_PENDING;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2268
vie->status |= VIES_PENDING_MMIO;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2274
vie->status |= VIES_USER_FALLBACK;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2280
vie_mmio_write(struct vie *vie, struct vm *vm, int cpuid, uint64_t gpa,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2285
if (vie->mmio_req_write.state == VR_DONE) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2286
ASSERT(vie->mmio_req_write.bytes == bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2287
ASSERT(vie->mmio_req_write.gpa == gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2299
vie->mmio_req_write.bytes = bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2300
vie->mmio_req_write.gpa = gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2301
vie->mmio_req_write.data = wval;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2302
vie->mmio_req_write.state = VR_DONE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2305
vie->mmio_req_write.bytes = bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2306
vie->mmio_req_write.gpa = gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2307
vie->mmio_req_write.data = wval;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2308
vie->mmio_req_write.state = VR_PENDING;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2309
vie->status |= VIES_PENDING_MMIO;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2315
vie->status |= VIES_USER_FALLBACK;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2321
vie_emulate_mmio(struct vie *vie, struct vm *vm, int vcpuid)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2326
if ((vie->status & (VIES_INST_DECODE | VIES_MMIO)) !=
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2331
gpa = vie->mmio_gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2333
switch (vie->op.op_type) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2335
error = vie_emulate_group1(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2338
error = vie_emulate_pop(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2341
error = vie_emulate_push(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2344
error = vie_emulate_cmp(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2347
error = vie_emulate_mov(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2351
error = vie_emulate_movx(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2354
error = vie_emulate_movs(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2357
error = vie_emulate_stos(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2360
error = vie_emulate_and(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2363
error = vie_emulate_or(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2366
error = vie_emulate_sub(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2369
error = vie_emulate_bittest(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2372
error = vie_emulate_twob_group15(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2375
error = vie_emulate_add(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2378
error = vie_emulate_test(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2381
error = vie_emulate_bextr(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2384
error = vie_emulate_mul(vie, vm, vcpuid, gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2400
vie_emulate_inout_port(struct vie *vie, struct vm *vm, int vcpuid,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2407
mask = vie_size2mask(vie->inout.bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2408
in = (vie->inout.flags & INOUT_IN) != 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2414
if (vie->inout_req_state != VR_DONE) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2415
err = vm_ioport_access(vm, vcpuid, in, vie->inout.port,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2416
vie->inout.bytes, &val);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2423
val = vie->inout_req_val & mask;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2424
vie->inout_req_state = VR_NONE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2429
vie->status |= VIES_PENDING_INOUT;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2430
vie->inout_req_state = VR_PENDING;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2443
vie_inout_segname(const struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2445
uint8_t segidx = vie->inout.segment;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2463
vie_emulate_inout_str(struct vie *vie, struct vm *vm, int vcpuid)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2472
in = (vie->inout.flags & INOUT_IN) != 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2473
bytes = vie->inout.bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2474
addrsize = vie->inout.addrsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2481
seg_reg = vie_inout_segname(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2486
repeat = (vie->inout.flags & INOUT_REP) != 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2505
if (vie_get_gla(vie, vm, vcpuid, bytes, addrsize, prot, seg_reg,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2517
err = vm_copy_setup(vm, vcpuid, &vie->paging, gla, bytes, prot,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2529
vm_copyin(vm, vcpuid, copyinfo, &vie->inout.eax, bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2532
err = vie_emulate_inout_port(vie, vm, vcpuid, &vie->inout.eax);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2535
vm_copyout(vm, vcpuid, &vie->inout.eax, copyinfo, bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2560
if ((vie->inout.flags & INOUT_REP) != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2567
return (vie_repeat(vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2576
vie_emulate_inout(struct vie *vie, struct vm *vm, int vcpuid)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2580
if ((vie->status & VIES_INOUT) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2584
if ((vie->inout.flags & INOUT_STR) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2589
if ((vie->inout.flags & INOUT_REP) != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2593
err = vie_emulate_inout_port(vie, vm, vcpuid, &vie->inout.eax);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2594
if (err == 0 && (vie->inout.flags & INOUT_IN) != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2600
vie->inout.eax);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2604
vie->status &= ~VIES_REPEAT;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2605
err = vie_emulate_inout_str(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2613
vie->status |= VIES_USER_FALLBACK;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2615
ASSERT(vie->status & VIES_PENDING_INOUT);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2624
vie_emulate_other(struct vie *vie, struct vm *vm, int vcpuid)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2628
if ((vie->status & (VIES_INST_DECODE | VIES_OTHER)) !=
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2633
switch (vie->op.op_type) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2635
error = vie_emulate_clts(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2638
error = vie_emulate_mov_cr(vie, vm, vcpuid);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2649
vie_reset(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2651
vie->status = 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2652
vie->num_processed = vie->num_valid = 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2656
vie_advance_pc(struct vie *vie, uint64_t *nextrip)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2658
VERIFY((vie->status & VIES_REPEAT) == 0);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2660
*nextrip += vie->num_processed;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2661
vie_reset(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2665
vie_exitinfo(const struct vie *vie, struct vm_exit *vme)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2667
if (vie->status & VIES_USER_FALLBACK) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2673
vie_fallback_exitinfo(vie, vme);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2674
} else if (vie->status & VIES_MMIO) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2676
if (vie->mmio_req_read.state == VR_PENDING) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2677
vme->u.mmio.gpa = vie->mmio_req_read.gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2679
vme->u.mmio.bytes = vie->mmio_req_read.bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2681
} else if (vie->mmio_req_write.state == VR_PENDING) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2682
vme->u.mmio.gpa = vie->mmio_req_write.gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2683
vme->u.mmio.data = vie->mmio_req_write.data &
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2684
vie_size2mask(vie->mmio_req_write.bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2685
vme->u.mmio.bytes = vie->mmio_req_write.bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2690
} else if (vie->status & VIES_INOUT) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2692
vme->u.inout.port = vie->inout.port;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2693
vme->u.inout.bytes = vie->inout.bytes;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2694
if ((vie->inout.flags & INOUT_IN) != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2699
vme->u.inout.eax = vie->inout.eax &
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2700
vie_size2mask(vie->inout.bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2712
vie_fallback_exitinfo(const struct vie *vie, struct vm_exit *vme)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2714
if ((vie->status & VIES_INST_FETCH) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2717
ASSERT(sizeof (vie->inst) == sizeof (vme->u.inst_emul.inst));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2719
bcopy(vie->inst, vme->u.inst_emul.inst, sizeof (vie->inst));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2720
vme->u.inst_emul.num_valid = vie->num_valid;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2726
vie_cs_info(const struct vie *vie, struct vm *vm, int vcpuid, uint64_t *cs_base,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2736
VERIFY(vie->status & VIES_INIT);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2737
switch (vie->paging.cpu_mode) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2755
vie_pending(const struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2766
return ((vie->status & of_interest) != 0);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2770
vie_needs_fetch(const struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2772
if (vie->status & VIES_INST_FETCH) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2773
ASSERT(vie->num_valid != 0);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2930
vie_init_mmio(struct vie *vie, const char *inst_bytes, uint8_t inst_length,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2936
bzero(vie, sizeof (struct vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2938
vie->base_register = VM_REG_LAST;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2939
vie->index_register = VM_REG_LAST;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2940
vie->segment_register = VM_REG_LAST;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2941
vie->status = VIES_INIT | VIES_MMIO;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2944
bcopy(inst_bytes, vie->inst, inst_length);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2945
vie->num_valid = inst_length;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2946
vie->status |= VIES_INST_FETCH;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2949
vie->paging = *paging;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2950
vie->mmio_gpa = gpa;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2954
vie_init_inout(struct vie *vie, const struct vm_inout *inout, uint8_t inst_len,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2957
bzero(vie, sizeof (struct vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2959
vie->status = VIES_INIT | VIES_INOUT;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2961
vie->inout = *inout;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2962
vie->paging = *paging;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2968
vie->status |= VIES_INST_FETCH | VIES_INST_DECODE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2969
vie->num_processed = inst_len;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2973
vie_init_other(struct vie *vie, const struct vm_guest_paging *paging)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2975
bzero(vie, sizeof (struct vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2977
vie->base_register = VM_REG_LAST;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2978
vie->index_register = VM_REG_LAST;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2979
vie->segment_register = VM_REG_LAST;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2980
vie->status = VIES_INIT | VIES_OTHER;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2982
vie->paging = *paging;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2986
vie_fulfill_mmio(struct vie *vie, const struct vm_mmio *result)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2990
if ((vie->status & VIES_MMIO) == 0 ||
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2991
(vie->status & VIES_PENDING_MMIO) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2996
pending = &vie->mmio_req_read;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
2998
pending = &vie->mmio_req_write;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3010
vie->status &= ~VIES_PENDING_MMIO;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3016
vie_fulfill_inout(struct vie *vie, const struct vm_inout *result)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3018
if ((vie->status & VIES_INOUT) == 0 ||
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3019
(vie->status & VIES_PENDING_INOUT) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3022
if ((vie->inout.flags & INOUT_IN) != (result->flags & INOUT_IN) ||
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3023
vie->inout.bytes != result->bytes ||
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3024
vie->inout.port != result->port) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3029
vie->inout_req_val = result->eax &
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3030
vie_size2mask(vie->inout.bytes);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3032
vie->inout_req_state = VR_DONE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3033
vie->status &= ~(VIES_PENDING_INOUT);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3039
vie_mmio_gpa(const struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3041
return (vie->mmio_gpa);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3315
vie_fetch_instruction(struct vie *vie, struct vm *vm, int vcpuid, uint64_t rip,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3321
if ((vie->status & VIES_INIT) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3326
error = vm_copy_setup(vm, vcpuid, &vie->paging, rip, VIE_INST_SIZE,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3331
vm_copyin(vm, vcpuid, copyinfo, vie->inst, VIE_INST_SIZE);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3333
vie->num_valid = VIE_INST_SIZE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3334
vie->status |= VIES_INST_FETCH;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3339
vie_peek(struct vie *vie, uint8_t *x)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3342
if (vie->num_processed < vie->num_valid) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3343
*x = vie->inst[vie->num_processed];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3350
vie_advance(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3353
vie->num_processed++;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3386
decode_prefixes(struct vie *vie, enum vm_cpu_mode cpu_mode, int cs_d)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3391
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3395
vie->opsize_override = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3397
vie->addrsize_override = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3399
vie->repz_present = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3401
vie->repnz_present = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3402
else if (segment_override(x, &vie->segment_register))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3403
vie->segment_override = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3407
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3419
vie->rex_present = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3420
vie->rex_w = x & 0x8 ? 1 : 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3421
vie->rex_r = x & 0x4 ? 1 : 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3422
vie->rex_x = x & 0x2 ? 1 : 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3423
vie->rex_b = x & 0x1 ? 1 : 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3424
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3435
vie->vex_present = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3437
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3438
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3445
vie->rex_r = x & 0x80 ? 0 : 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3446
vie->rex_x = x & 0x40 ? 0 : 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3447
vie->rex_b = x & 0x20 ? 0 : 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3465
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3466
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3470
vie->rex_w = x & 0x80 ? 1 : 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3472
vie->vex_reg = ((~(unsigned)x & 0x78u) >> 3);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3473
vie->vex_l = !!(x & 0x4);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3474
vie->vex_pp = (x & 0x3);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3477
switch (vie->vex_pp) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3479
vie->opsize_override = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3482
vie->repz_present = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3485
vie->repnz_present = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3489
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3492
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3495
vie->op = optab[x];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3496
if (vie->op.op_type == VIE_OP_TYPE_NONE)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3499
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3510
vie->addrsize = vie->addrsize_override ? 4 : 8;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3511
if (vie->rex_w)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3512
vie->opsize = 8;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3513
else if (vie->opsize_override)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3514
vie->opsize = 2;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3516
vie->opsize = 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3519
vie->addrsize = vie->addrsize_override ? 2 : 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3520
vie->opsize = vie->opsize_override ? 2 : 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3523
vie->addrsize = vie->addrsize_override ? 4 : 2;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3524
vie->opsize = vie->opsize_override ? 4 : 2;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3530
decode_two_byte_opcode(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3534
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3537
vie->op = two_byte_opcodes[x];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3539
if (vie->op.op_type == VIE_OP_TYPE_NONE)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3542
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3547
decode_opcode(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3551
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3555
if (vie->op.op_type != VIE_OP_TYPE_NONE)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3558
vie->op = one_byte_opcodes[x];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3560
if (vie->op.op_type == VIE_OP_TYPE_NONE)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3563
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3565
if (vie->op.op_type == VIE_OP_TYPE_TWO_BYTE)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3566
return (decode_two_byte_opcode(vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3572
decode_modrm(struct vie *vie, enum vm_cpu_mode cpu_mode)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3580
const bool is_movcr = ((vie->op.op_flags & VIE_OP_F_REG_REG) != 0);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3582
if (vie->op.op_flags & VIE_OP_F_NO_MODRM)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3588
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3591
vie->mod = (x >> 6) & 0x3;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3592
vie->rm = (x >> 0) & 0x7;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3593
vie->reg = (x >> 3) & 0x7;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3600
if (vie->mod == VIE_MOD_DIRECT && !is_movcr)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3603
if ((vie->mod == VIE_MOD_INDIRECT && vie->rm == VIE_RM_DISP32) ||
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3604
(vie->mod != VIE_MOD_DIRECT && vie->rm == VIE_RM_SIB)) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3618
vie->rm |= (vie->rex_b << 3);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3621
vie->reg |= (vie->rex_r << 3);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3624
if (vie->mod != VIE_MOD_DIRECT && vie->rm == VIE_RM_SIB)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3627
vie->base_register = gpr_map[vie->rm];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3629
switch (vie->mod) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3631
vie->disp_bytes = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3634
vie->disp_bytes = 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3637
if (vie->rm == VIE_RM_DISP32) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3638
vie->disp_bytes = 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3647
vie->base_register = VM_REG_GUEST_RIP;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3649
vie->base_register = VM_REG_LAST;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3655
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3661
decode_sib(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3666
if (vie->mod == VIE_MOD_DIRECT || vie->rm != VIE_RM_SIB)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3669
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3673
vie->ss = (x >> 6) & 0x3;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3674
vie->index = (x >> 3) & 0x7;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3675
vie->base = (x >> 0) & 0x7;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3678
vie->index |= vie->rex_x << 3;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3679
vie->base |= vie->rex_b << 3;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3681
switch (vie->mod) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3683
vie->disp_bytes = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3686
vie->disp_bytes = 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3690
if (vie->mod == VIE_MOD_INDIRECT &&
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3691
(vie->base == 5 || vie->base == 13)) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3700
vie->disp_bytes = 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3702
vie->base_register = gpr_map[vie->base];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3712
if (vie->index != 4)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3713
vie->index_register = gpr_map[vie->index];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3716
if (vie->index_register < VM_REG_LAST)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3717
vie->scale = 1 << vie->ss;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3719
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3725
decode_displacement(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3736
if ((n = vie->disp_bytes) == 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3743
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3747
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3751
vie->displacement = u.signed8; /* sign-extended */
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3753
vie->displacement = u.signed32; /* sign-extended */
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3759
decode_immediate(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3771
if (vie->op.op_flags & VIE_OP_F_IMM) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3779
if (vie->opsize == 4 || vie->opsize == 8)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3780
vie->imm_bytes = 4;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3782
vie->imm_bytes = 2;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3783
} else if (vie->op.op_flags & VIE_OP_F_IMM8) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3784
vie->imm_bytes = 1;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3787
if ((n = vie->imm_bytes) == 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3794
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3798
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3803
vie->immediate = u.signed8;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3805
vie->immediate = u.signed16;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3807
vie->immediate = u.signed32;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3813
decode_moffset(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3822
if ((vie->op.op_flags & VIE_OP_F_MOFFSET) == 0)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3829
n = vie->addrsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3834
if (vie_peek(vie, &x))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3838
vie_advance(vie);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3840
vie->displacement = u.u64;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3849
vie_verify_gla(struct vie *vie, struct vm *vm, int cpuid, uint64_t gla)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3856
ASSERT((vie->status & VIES_INST_DECODE) != 0);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3863
(vie->op.op_flags & VIE_OP_F_NO_GLA_VERIFICATION) != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3868
if (vie->base_register != VM_REG_LAST) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3869
error = vm_get_register(vm, cpuid, vie->base_register, &base);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3872
error, vie->base_register);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3880
if (vie->base_register == VM_REG_GUEST_RIP)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3881
base += vie->num_processed;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3885
if (vie->index_register != VM_REG_LAST) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3886
error = vm_get_register(vm, cpuid, vie->index_register, &idx);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3889
error, vie->index_register);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3907
if (vie->segment_override) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3908
seg = vie->segment_register;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3909
} else if (vie->base_register == VM_REG_GUEST_RSP ||
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3910
vie->base_register == VM_REG_GUEST_RBP) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3915
if (vie->paging.cpu_mode == CPU_MODE_64BIT &&
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3922
" descriptor %d", error, vie->segment_register);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3928
gla2 = segbase + base + vie->scale * idx + vie->displacement;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3929
gla2 &= size2mask[vie->addrsize];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3934
segbase, base, vie->scale, idx, vie->displacement,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3943
vie_decode_instruction(struct vie *vie, struct vm *vm, int cpuid, int cs_d)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3947
if ((vie->status & VIES_INST_FETCH) == 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3951
cpu_mode = vie->paging.cpu_mode;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3953
if (decode_prefixes(vie, cpu_mode, cs_d))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3956
if (decode_opcode(vie))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3959
if (decode_modrm(vie, cpu_mode))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3962
if (decode_sib(vie))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3965
if (decode_displacement(vie))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3968
if (decode_immediate(vie))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3971
if (decode_moffset(vie))
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
3974
vie->status |= VIES_INST_DECODE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
473
static int vie_mmio_read(struct vie *vie, struct vm *vm, int cpuid,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
475
static int vie_mmio_write(struct vie *vie, struct vm *vm, int cpuid,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
485
struct vie *
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
488
return (kmem_zalloc(sizeof (struct vie), KM_SLEEP));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
492
vie_free(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
494
kmem_free(vie, sizeof (struct vie));
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
513
vie_calc_bytereg(struct vie *vie, enum vm_reg_name *reg, int *lhbr)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
516
*reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
530
if (!vie->rex_present) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
531
if (vie->reg & 0x4) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
533
*reg = gpr_map[vie->reg & 0x3];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
539
vie_read_bytereg(struct vie *vie, struct vm *vm, int vcpuid, uint8_t *rval)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
545
vie_calc_bytereg(vie, &reg, &lhbr);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
560
vie_write_bytereg(struct vie *vie, struct vm *vm, int vcpuid, uint8_t byte)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
566
vie_calc_bytereg(vie, &reg, &lhbr);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
615
vie_repeat(struct vie *vie)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
617
vie->status |= VIES_REPEAT;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
625
if ((vie->status & VIES_MMIO) != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
626
vie->mmio_req_read.state = VR_NONE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
627
vie->mmio_req_write.state = VR_NONE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
628
} else if ((vie->status & VIES_INOUT) != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
629
vie->inout_req_state = VR_NONE;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
785
vie_emulate_mov_cr(struct vie *vie, struct vm *vm, int vcpuid)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
789
enum vm_reg_name gpr = gpr_map[vie->rm];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
790
enum vm_reg_name cr = cr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
793
if (vie->paging.cpu_mode == CPU_MODE_64BIT) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
797
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
805
if (vie->paging.cpl != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
807
vie->num_processed = 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
814
vie->num_processed = 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
828
if (vie->paging.cpl != 0) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
830
vie->num_processed = 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
837
vie->num_processed = 0;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
891
vie_emulate_mov(struct vie *vie, struct vm *vm, int vcpuid, uint64_t gpa)
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
898
size = vie->opsize;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
901
switch (vie->op.op_byte) {
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
909
error = vie_read_bytereg(vie, vm, vcpuid, &byte);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
911
error = vie_mmio_write(vie, vm, vcpuid, gpa, byte,
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
922
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
926
error = vie_mmio_write(vie, vm, vcpuid, gpa, val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
936
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
938
error = vie_write_bytereg(vie, vm, vcpuid, val);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
947
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
949
reg = gpr_map[vie->reg];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
960
error = vie_mmio_read(vie, vm, vcpuid, gpa, &val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
976
error = vie_mmio_write(vie, vm, vcpuid, gpa, val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
986
val = vie->immediate;
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
987
error = vie_mmio_write(vie, vm, vcpuid, gpa, val, size);
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
996
val = vie->immediate & size2mask[size];
usr/src/uts/intel/io/vmm/vmm_instruction_emul.c
997
error = vie_mmio_write(vie, vm, vcpuid, gpa, val, size);