void vcpu_handle_hypercall(void);
bool vcpu_handle_io_access(void);
-bool vcpu_handle_mmio_access(union registers *guest_regs);
+bool vcpu_handle_mmio_access(void);
bool vcpu_handle_msr_read(union registers *guest_regs);
bool vcpu_handle_msr_write(union registers *guest_regs);
} else {
/* General MMIO (IOAPIC, PCI etc) */
cpu_data->stats[JAILHOUSE_CPU_STAT_VMEXITS_MMIO]++;
- if (vcpu_handle_mmio_access(guest_regs))
+ if (vcpu_handle_mmio_access())
return;
}
return false;
}
-bool vcpu_handle_mmio_access(union registers *guest_regs)
+bool vcpu_handle_mmio_access(void)
{
struct per_cpu *cpu_data = this_cpu_data();
struct guest_paging_structures pg_structs;
goto invalid_access;
if (mmio.is_write)
- val = guest_regs->by_index[inst.reg_num];
+ val = cpu_data->guest_regs.by_index[inst.reg_num];
result = ioapic_access_handler(cpu_data->cell, mmio.is_write,
mmio.phys_addr, &val);
if (result == 1) {
if (!mmio.is_write)
- guest_regs->by_index[inst.reg_num] = val;
+ cpu_data->guest_regs.by_index[inst.reg_num] = val;
vcpu_skip_emulated_instruction(inst.inst_len);
return true;
}
break;
case EXIT_REASON_EPT_VIOLATION:
cpu_data->stats[JAILHOUSE_CPU_STAT_VMEXITS_MMIO]++;
- if (vcpu_handle_mmio_access(guest_regs))
+ if (vcpu_handle_mmio_access())
return;
break;
default: