MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vmcb_read

Function vmcb_read

freebsd/amd64/vmm/amd/vmcb.c:163–248  ·  view source on GitHub ↗

* Read from segment selector, control and general purpose register of VMCB. */

Source from the content-addressed store, hash-verified

161 * Read from segment selector, control and general purpose register of VMCB.
162 */
163int
164vmcb_read(struct svm_softc *sc, int vcpu, int ident, uint64_t *retval)
165{
166 struct vmcb *vmcb;
167 struct vmcb_state *state;
168 struct vmcb_segment *seg;
169 int err;
170
171 vmcb = svm_get_vmcb(sc, vcpu);
172 state = &vmcb->state;
173 err = 0;
174
175 if (VMCB_ACCESS_OK(ident))
176 return (vmcb_access(sc, vcpu, 0, ident, retval));
177
178 switch (ident) {
179 case VM_REG_GUEST_CR0:
180 *retval = state->cr0;
181 break;
182
183 case VM_REG_GUEST_CR2:
184 *retval = state->cr2;
185 break;
186
187 case VM_REG_GUEST_CR3:
188 *retval = state->cr3;
189 break;
190
191 case VM_REG_GUEST_CR4:
192 *retval = state->cr4;
193 break;
194
195 case VM_REG_GUEST_DR6:
196 *retval = state->dr6;
197 break;
198
199 case VM_REG_GUEST_DR7:
200 *retval = state->dr7;
201 break;
202
203 case VM_REG_GUEST_EFER:
204 *retval = state->efer;
205 break;
206
207 case VM_REG_GUEST_RAX:
208 *retval = state->rax;
209 break;
210
211 case VM_REG_GUEST_RFLAGS:
212 *retval = state->rflags;
213 break;
214
215 case VM_REG_GUEST_RIP:
216 *retval = state->rip;
217 break;
218
219 case VM_REG_GUEST_RSP:
220 *retval = state->rsp;

Callers 2

vmcb_getanyFunction · 0.85
svm_getregFunction · 0.85

Calls 3

svm_get_vmcbFunction · 0.85
vmcb_accessFunction · 0.85
vmcb_segptrFunction · 0.85

Tested by

no test coverage detected