#ifndef _JAILHOUSE_ASM_VCPU_H
#define _JAILHOUSE_ASM_VCPU_H
-#include <jailhouse/entry.h>
+#include <jailhouse/cell.h>
#include <jailhouse/cell-config.h>
+#include <jailhouse/entry.h>
#include <jailhouse/paging.h>
-#include <jailhouse/types.h>
-#include <asm/cell.h>
#include <asm/percpu.h>
#include <asm/processor.h>
bool rep_or_str;
};
-struct vcpu_pf_intercept {
+struct vcpu_mmio_intercept {
u64 phys_addr;
bool is_write;
};
void vcpu_exit(struct per_cpu *cpu_data);
void __attribute__((noreturn)) vcpu_activate_vmm(struct per_cpu *cpu_data);
-void __attribute__((noreturn))
-vcpu_deactivate_vmm(struct registers *guest_regs);
+void __attribute__((noreturn)) vcpu_deactivate_vmm(void);
-void vcpu_handle_exit(struct registers *guest_regs, struct per_cpu *cpu_data);
+void vcpu_handle_exit(struct per_cpu *cpu_data);
void vcpu_park(void);
struct vcpu_io_bitmap *out);
void vcpu_vendor_get_execution_state(struct vcpu_execution_state *x_state);
-
-void vcpu_handle_hypercall(struct registers *guest_regs,
- struct vcpu_execution_state *x_state);
-
-bool vcpu_handle_io_access(struct registers *guest_regs,
- struct vcpu_io_intercept *io);
+void vcpu_vendor_get_io_intercept(struct vcpu_io_intercept *io);
+void vcpu_vendor_get_mmio_intercept(struct vcpu_mmio_intercept *mmio);
bool vcpu_get_guest_paging_structs(struct guest_paging_structures *pg_structs);
void vcpu_vendor_set_guest_pat(unsigned long val);
-bool vcpu_handle_pt_violation(struct registers *guest_regs,
- struct vcpu_pf_intercept *pf);
+void vcpu_handle_hypercall(void);
+
+bool vcpu_handle_io_access(void);
+bool vcpu_handle_mmio_access(void);
+
+bool vcpu_handle_msr_read(void);
+bool vcpu_handle_msr_write(void);
+
+void vcpu_handle_cpuid(void);
-bool vcpu_handle_msr_read(struct registers *guest_regs);
-bool vcpu_handle_msr_write(struct registers *guest_regs);
+bool vcpu_handle_xsetbv(void);
-void vcpu_reset(struct registers *guest_regs);
+void vcpu_reset(unsigned int sipi_vector);
+void vcpu_vendor_reset(unsigned int sipi_vector);
#endif