2 * QEMU Hypervisor.framework (HVF) support
4 * This work is licensed under the terms of the GNU GPL, version 2 or later.
5 * See the COPYING file in the top-level directory.
9 /* header to be included in HVF-specific code */
15 #include <Hypervisor/Hypervisor.h>
17 #include <Hypervisor/hv.h>
21 #define HVF_SLOT_LOG (1 << 0)
23 typedef struct hvf_slot
{
32 typedef struct hvf_vcpu_caps
{
33 uint64_t vmx_cap_pinbased
;
34 uint64_t vmx_cap_procbased
;
35 uint64_t vmx_cap_procbased2
;
36 uint64_t vmx_cap_entry
;
37 uint64_t vmx_cap_exit
;
38 uint64_t vmx_cap_preemption_timer
;
46 hvf_vcpu_caps
*hvf_caps
;
47 uint64_t vtimer_offset
;
48 QTAILQ_HEAD(, hvf_sw_breakpoint
) hvf_sw_breakpoints
;
50 extern HVFState
*hvf_state
;
52 struct AccelCPUState
{
56 sigset_t unblock_ipi_mask
;
57 bool guest_debug_enabled
;
60 void assert_hvf_ok(hv_return_t ret
);
61 int hvf_arch_init(void);
62 int hvf_arch_init_vcpu(CPUState
*cpu
);
63 void hvf_arch_vcpu_destroy(CPUState
*cpu
);
64 int hvf_vcpu_exec(CPUState
*);
65 hvf_slot
*hvf_find_overlap_slot(uint64_t, uint64_t);
66 int hvf_put_registers(CPUState
*);
67 int hvf_get_registers(CPUState
*);
68 void hvf_kick_vcpu_thread(CPUState
*cpu
);