Merge tag 'v9.0.0-rc3'
[qemu/ar7.git] / include / sysemu / hvf_int.h
blob718beddcddee56887cadadcaa6e60549f57a9ac7
1 /*
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.
7 */
9 /* header to be included in HVF-specific code */
11 #ifndef HVF_INT_H
12 #define HVF_INT_H
14 #ifdef __aarch64__
15 #include <Hypervisor/Hypervisor.h>
16 #else
17 #include <Hypervisor/hv.h>
18 #endif
20 /* hvf_slot flags */
21 #define HVF_SLOT_LOG (1 << 0)
23 typedef struct hvf_slot {
24 uint64_t start;
25 uint64_t size;
26 uint8_t *mem;
27 int slot_id;
28 uint32_t flags;
29 MemoryRegion *region;
30 } 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;
39 } hvf_vcpu_caps;
41 struct HVFState {
42 AccelState parent;
43 hvf_slot slots[32];
44 int num_slots;
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 {
53 uint64_t fd;
54 void *exit;
55 bool vtimer_masked;
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);
70 #endif