vmcb
struct vmcb *vmcb;
vmcb = svm_get_vmcb(vcpu);
state = &vmcb->state;
ctrl = &vmcb->ctrl;
svm_handle_inst_emul(vmcb, info2, vmexit);
free(vcpu->vmcb, M_SVM);
svm_get_cs_info(struct vmcb *vmcb, struct vm_guest_paging *paging, int *cs_d,
error = vmcb_seg(vmcb, VM_REG_GUEST_CS, &seg);
vcpu->vmcb = malloc_aligned(sizeof(struct vmcb), PAGE_SIZE, M_SVM,
vcpu->vmcb_pa = vtophys(vcpu->vmcb);
svm_vcpu_mode(struct vmcb *vmcb)
state = &vmcb->state;
error = vmcb_seg(vmcb, VM_REG_GUEST_CS, &seg);
svm_get_cs_info(vcpu->vmcb, &vis->paging, &vis->cs_d,
svm_paging_info(struct vmcb *vmcb, struct vm_guest_paging *paging)
state = &vmcb->state;
paging->cpu_mode = svm_vcpu_mode(vmcb);
svm_handle_inst_emul(struct vmcb *vmcb, uint64_t gpa, struct vm_exit *vmexit)
ctrl = &vmcb->ctrl;
svm_paging_info(vmcb, paging);
svm_get_cs_info(vmcb, paging, &vmexit->u.inst_emul.cs_d,
return (&vcpu->vmcb->state);
return (&vcpu->vmcb->ctrl);
struct vmcb *vmcb; /* hardware saved vcpu context */
static __inline struct vmcb *
return (vcpu->vmcb);
struct vmcb *vmcb;
vmcb = svm_get_vmcb(vcpu);
if ((off + bytes) >= sizeof (struct vmcb))
ptr = (char *)vmcb;
struct vmcb *vmcb;
vmcb = svm_get_vmcb(vcpu);
state = &vmcb->state;
seg = vmcb_segptr(vmcb, ident);
seg = vmcb_segptr(vmcb, ident == VM_REG_GUEST_FS_BASE ?
struct vmcb *vmcb;
vmcb = svm_get_vmcb(vcpu);
state = &vmcb->state;
seg = vmcb_segptr(vmcb, ident);
vmcb_seg(struct vmcb *vmcb, int ident, struct vmcb_segment *seg2)
seg = vmcb_segptr(vmcb, ident);
struct vmcb *vmcb;
vmcb = svm_get_vmcb(vcpu);
seg = vmcb_segptr(vmcb, reg);
struct vmcb *vmcb;
vmcb = svm_get_vmcb(vcpu);
seg = vmcb_segptr(vmcb, reg);
vmcb_segptr(struct vmcb *vmcb, int type)
state = &vmcb->state;
CTASSERT(sizeof(struct vmcb) == PAGE_SIZE);
CTASSERT(offsetof(struct vmcb, state) == 0x400);
int vmcb_seg(struct vmcb *vmcb, int ident, struct vmcb_segment *seg);