Lines Matching full:vcpu

289 vie_read_register(struct vcpu *vcpu, enum vm_reg_name reg, uint64_t *rval)
293 error = vm_get_register(vcpu, reg, rval);
325 vie_read_bytereg(struct vcpu *vcpu, struct vie *vie, uint8_t *rval)
332 error = vm_get_register(vcpu, reg, &val);
346 vie_write_bytereg(struct vcpu *vcpu, struct vie *vie, uint8_t byte)
353 error = vm_get_register(vcpu, reg, &origval);
366 error = vm_set_register(vcpu, reg, val);
372 vie_update_register(struct vcpu *vcpu, enum vm_reg_name reg,
381 error = vie_read_register(vcpu, reg, &origval);
396 error = vm_set_register(vcpu, reg, val);
508 emulate_mov(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
527 error = vie_read_bytereg(vcpu, vie, &byte);
529 error = memwrite(vcpu, gpa, byte, size, arg);
539 error = vie_read_register(vcpu, reg, &val);
542 error = memwrite(vcpu, gpa, val, size, arg);
552 error = memread(vcpu, gpa, &val, size, arg);
554 error = vie_write_bytereg(vcpu, vie, val);
563 error = memread(vcpu, gpa, &val, size, arg);
566 error = vie_update_register(vcpu, reg, val, size);
576 error = memread(vcpu, gpa, &val, size, arg);
579 error = vie_update_register(vcpu, reg, val, size);
589 error = vie_read_register(vcpu, VM_REG_GUEST_RAX, &val);
592 error = memwrite(vcpu, gpa, val, size, arg);
602 error = memwrite(vcpu, gpa, vie->immediate, size, arg);
612 error = memwrite(vcpu, gpa, val, size, arg);
622 emulate_movx(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
644 error = memread(vcpu, gpa, &val, 1, arg);
655 error = vie_update_register(vcpu, reg, val, size);
665 error = memread(vcpu, gpa, &val, 2, arg);
674 error = vie_update_register(vcpu, reg, val, size);
687 error = memread(vcpu, gpa, &val, 1, arg);
698 error = vie_update_register(vcpu, reg, val, size);
710 get_gla(struct vcpu *vcpu, struct vie *vie __unused,
718 error = vie_read_register(vcpu, VM_REG_GUEST_CR0, &cr0);
721 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
724 error = vm_get_seg_desc(vcpu, seg, &desc);
728 error = vie_read_register(vcpu, gpr, &val);
735 vm_inject_ss(vcpu, 0);
737 vm_inject_gp(vcpu);
743 vm_inject_ss(vcpu, 0);
745 vm_inject_gp(vcpu);
750 vm_inject_ac(vcpu, 0);
763 emulate_movs(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
790 error = vie_read_register(vcpu, VM_REG_GUEST_RCX, &rcx);
820 error = get_gla(vcpu, vie, paging, opsize, vie->addrsize,
825 error = vm_copy_setup(vcpu, paging, srcaddr, opsize, PROT_READ,
836 error = memwrite(vcpu, gpa, val, opsize, arg);
845 error = get_gla(vcpu, vie, paging, opsize, vie->addrsize,
851 error = vm_copy_setup(vcpu, paging, dstaddr, opsize,
866 error = memread(vcpu, gpa, &val, opsize, arg);
881 error = vm_gla2gpa(vcpu, paging, srcaddr,
886 error = vm_gla2gpa(vcpu, paging, dstaddr,
891 error = memread(vcpu, srcgpa, &val, opsize, arg);
895 error = memwrite(vcpu, dstgpa, val, opsize, arg);
901 error = vie_read_register(vcpu, VM_REG_GUEST_RSI, &rsi);
904 error = vie_read_register(vcpu, VM_REG_GUEST_RDI, &rdi);
907 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
918 error = vie_update_register(vcpu, VM_REG_GUEST_RSI, rsi,
922 error = vie_update_register(vcpu, VM_REG_GUEST_RDI, rdi,
928 error = vie_update_register(vcpu, VM_REG_GUEST_RCX,
936 vm_restart_instruction(vcpu);
945 emulate_stos(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
957 error = vie_read_register(vcpu, VM_REG_GUEST_RCX, &rcx);
968 error = vie_read_register(vcpu, VM_REG_GUEST_RAX, &val);
971 error = memwrite(vcpu, gpa, val, opsize, arg);
975 error = vie_read_register(vcpu, VM_REG_GUEST_RDI, &rdi);
978 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
986 error = vie_update_register(vcpu, VM_REG_GUEST_RDI, rdi,
992 error = vie_update_register(vcpu, VM_REG_GUEST_RCX,
1000 vm_restart_instruction(vcpu);
1007 emulate_and(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1030 error = vie_read_register(vcpu, reg, &val1);
1035 error = memread(vcpu, gpa, &val2, size, arg);
1041 error = vie_update_register(vcpu, reg, result, size);
1059 error = memread(vcpu, gpa, &val1, size, arg);
1068 error = memwrite(vcpu, gpa, result, size, arg);
1076 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
1090 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
1095 emulate_or(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1118 error = vie_read_register(vcpu, reg, &val1);
1123 error = memread(vcpu, gpa, &val2, size, arg);
1129 error = vie_update_register(vcpu, reg, result, size);
1147 error = memread(vcpu, gpa, &val1, size, arg);
1156 error = memwrite(vcpu, gpa, result, size, arg);
1164 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
1178 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
1183 emulate_cmp(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1211 error = vie_read_register(vcpu, reg, &regop);
1216 error = memread(vcpu, gpa, &memop, size, arg);
1255 error = memread(vcpu, gpa, &op1, size, arg);
1264 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
1270 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
1275 emulate_test(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1299 error = memread(vcpu, gpa, &op1, size, arg);
1308 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
1319 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
1324 emulate_bextr(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1352 error = memread(vcpu, gpa, &src1, size, arg);
1355 error = vie_read_register(vcpu, gpr_map[vie->vex_reg], &src2);
1358 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
1384 error = vie_update_register(vcpu, gpr_map[vie->reg], dst, size);
1395 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags,
1401 emulate_add(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1423 error = vie_read_register(vcpu, reg, &val1);
1428 error = memread(vcpu, gpa, &val2, size, arg);
1434 error = vie_update_register(vcpu, reg, nval, size);
1442 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS,
1449 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS,
1457 emulate_sub(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1479 error = vie_read_register(vcpu, reg, &val1);
1484 error = memread(vcpu, gpa, &val2, size, arg);
1490 error = vie_update_register(vcpu, reg, nval, size);
1498 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS,
1505 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS,
1513 emulate_stack_op(struct vcpu *vcpu, uint64_t mmio_gpa, struct vie *vie,
1551 error = vm_get_seg_desc(vcpu, VM_REG_GUEST_SS, &ss_desc);
1560 error = vie_read_register(vcpu, VM_REG_GUEST_CR0, &cr0);
1563 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
1566 error = vie_read_register(vcpu, VM_REG_GUEST_RSP, &rsp);
1575 vm_inject_ss(vcpu, 0);
1580 vm_inject_ss(vcpu, 0);
1585 vm_inject_ac(vcpu, 0);
1589 error = vm_copy_setup(vcpu, paging, stack_gla, size,
1596 error = memread(vcpu, mmio_gpa, &val, size, arg);
1601 error = memwrite(vcpu, mmio_gpa, val, size, arg);
1607 error = vie_update_register(vcpu, VM_REG_GUEST_RSP, rsp,
1615 emulate_push(struct vcpu *vcpu, uint64_t mmio_gpa, struct vie *vie,
1630 error = emulate_stack_op(vcpu, mmio_gpa, vie, paging, memread,
1636 emulate_pop(struct vcpu *vcpu, uint64_t mmio_gpa, struct vie *vie,
1651 error = emulate_stack_op(vcpu, mmio_gpa, vie, paging, memread,
1657 emulate_group1(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1665 error = emulate_or(vcpu, gpa, vie,
1669 error = emulate_and(vcpu, gpa, vie,
1673 error = emulate_cmp(vcpu, gpa, vie,
1685 emulate_bittest(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1701 error = vie_read_register(vcpu, VM_REG_GUEST_RFLAGS, &rflags);
1704 error = memread(vcpu, gpa, &val, vie->opsize, memarg);
1721 error = vie_update_register(vcpu, VM_REG_GUEST_RFLAGS, rflags, 8);
1728 emulate_twob_group15(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1748 error = memread(vcpu, gpa, &buf, 1, memarg);
1760 vmm_emulate_instruction(struct vcpu *vcpu, uint64_t gpa, struct vie *vie,
1771 error = emulate_group1(vcpu, gpa, vie, paging, memread,
1775 error = emulate_pop(vcpu, gpa, vie, paging, memread,
1779 error = emulate_push(vcpu, gpa, vie, paging, memread,
1783 error = emulate_cmp(vcpu, gpa, vie,
1787 error = emulate_mov(vcpu, gpa, vie,
1792 error = emulate_movx(vcpu, gpa, vie,
1796 error = emulate_movs(vcpu, gpa, vie, paging, memread,
1800 error = emulate_stos(vcpu, gpa, vie, paging, memread,
1804 error = emulate_and(vcpu, gpa, vie,
1808 error = emulate_or(vcpu, gpa, vie,
1812 error = emulate_sub(vcpu, gpa, vie,
1816 error = emulate_bittest(vcpu, gpa, vie,
1820 error = emulate_twob_group15(vcpu, gpa, vie,
1824 error = emulate_add(vcpu, gpa, vie, memread,
1828 error = emulate_test(vcpu, gpa, vie,
1832 error = emulate_bextr(vcpu, gpa, vie, paging,
2055 ptp_hold(struct vcpu *vcpu, vm_paddr_t ptpphys, size_t len, void **cookie)
2060 ptr = vm_gpa_hold(vcpu, ptpphys, len, VM_PROT_RW, cookie);
2065 _vm_gla2gpa(struct vcpu *vcpu, struct vm_guest_paging *paging,
2093 vm_inject_gp(vcpu);
2108 ptpbase32 = ptp_hold(vcpu, ptpphys, PAGE_SIZE,
2126 vm_inject_pf(vcpu, pfcode, gla);
2170 ptpbase = ptp_hold(vcpu, ptpphys, sizeof(*ptpbase) * 4,
2182 vm_inject_pf(vcpu, pfcode, gla);
2200 ptpbase = ptp_hold(vcpu, ptpphys, PAGE_SIZE, &cookie);
2215 vm_inject_pf(vcpu, pfcode, gla);
2233 vm_inject_pf(vcpu, pfcode, gla);
2266 vm_gla2gpa(struct vcpu *vcpu, struct vm_guest_paging *paging,
2270 return (_vm_gla2gpa(vcpu, paging, gla, prot, gpa, guest_fault,
2275 vm_gla2gpa_nofault(struct vcpu *vcpu, struct vm_guest_paging *paging,
2279 return (_vm_gla2gpa(vcpu, paging, gla, prot, gpa, guest_fault,
2284 vmm_fetch_instruction(struct vcpu *vcpu, struct vm_guest_paging *paging,
2294 error = vm_copy_setup(vcpu, paging, rip, inst_length, prot,
2812 verify_gla(struct vcpu *vcpu, uint64_t gla, struct vie *vie,
2826 error = vm_get_register(vcpu, vie->base_register, &base);
2843 error = vm_get_register(vcpu, vie->index_register, &idx);
2875 error = vm_get_seg_desc(vcpu, seg, &desc);
2902 vmm_decode_instruction(struct vcpu *vcpu, uint64_t gla,
2932 if (verify_gla(vcpu, gla, vie, cpu_mode))