Displaying 3 results from an estimated 3 matches for "mmio_inst".
Did you mean:
mmio_insb
2005 Apr 02
1
[PATCH] VMX support for MMIO/PIO in VM8086 mode
...);
-
}
void handle_mmio(unsigned long va, unsigned long gpa)
{
- unsigned long eip;
- unsigned long inst_len;
+ unsigned long eip, eflags, cs;
+ unsigned long inst_len, inst_addr;
struct mi_per_cpu_info *mpci_p;
struct xen_regs *inst_decoder_regs;
struct instruction mmio_inst;
unsigned char inst[MAX_INST_LEN];
- int ret;
+ int vm86, ret;
mpci_p = ¤t->arch.arch_vmx.vmx_platform.mpci;
inst_decoder_regs = mpci_p->inst_decoder_regs;
@@ -486,13 +534,30 @@
__vmread(GUEST_EIP, &eip);
__vmread(INSTRUCTION_LEN, &inst_...
2005 Nov 03
0
[PATCH] vmx-platform-vmread.patch
...gt;eflags & X86_EFLAGS_VM;
+ if (vm86)
+ inst_addr = (regs->cs << 4) + regs->eip;
+ else
+ inst_addr = regs->eip;
memset(inst, 0, MAX_INST_LEN);
ret = inst_copy_from_guest(inst, inst_addr, inst_len);
@@ -756,7 +746,7 @@
init_instruction(&mmio_inst);
- if (vmx_decode(inst, &mmio_inst) == DECODE_failure) {
+ if (vmx_decode(vm86, inst, &mmio_inst) == DECODE_failure) {
printf("mmio opcode: va 0x%lx, gpa 0x%lx, len %ld:",
va, gpa, inst_len);
for (i = 0; i < inst_len; i++)
@@ -765,7 +7...
2005 Jun 30
0
[PATCH][2/10] Extend the VMX intercept mechanism to include mmio as well as portio.
..._intercept(p)){
+ p->state = STATE_IORESP_READY;
+ vmx_io_assist(d);
+ return;
+ }
evtchn_send(iopacket_port(d->domain));
vmx_wait_io();
@@ -709,6 +708,7 @@
// Send the request and waiting for return value.
mpci_p->mmio_target = mmio_inst.operand[1];
send_mmio_req(gpa, &mmio_inst, value, IOREQ_READ, 0);
+ return;
} else {
// Write to MMIO
if (mmio_inst.operand[0] & IMMEDIATE) {
@@ -728,6 +728,7 @@
if (!strncmp((char *)mmio_inst.i_name, "stos", 4)) {...