qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

hvf_int.h (1456B)


      1 /*
      2  * QEMU Hypervisor.framework (HVF) support
      3  *
      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.
      6  *
      7  */
      8 
      9 /* header to be included in HVF-specific code */
     10 
     11 #ifndef HVF_INT_H
     12 #define HVF_INT_H
     13 
     14 #ifdef __aarch64__
     15 #include <Hypervisor/Hypervisor.h>
     16 #else
     17 #include <Hypervisor/hv.h>
     18 #endif
     19 
     20 /* hvf_slot flags */
     21 #define HVF_SLOT_LOG (1 << 0)
     22 
     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;
     31 
     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;
     40 
     41 struct HVFState {
     42     AccelState parent;
     43     hvf_slot slots[32];
     44     int num_slots;
     45 
     46     hvf_vcpu_caps *hvf_caps;
     47     uint64_t vtimer_offset;
     48 };
     49 extern HVFState *hvf_state;
     50 
     51 struct hvf_vcpu_state {
     52     uint64_t fd;
     53     void *exit;
     54     bool vtimer_masked;
     55     sigset_t unblock_ipi_mask;
     56 };
     57 
     58 void assert_hvf_ok(hv_return_t ret);
     59 int hvf_arch_init(void);
     60 int hvf_arch_init_vcpu(CPUState *cpu);
     61 void hvf_arch_vcpu_destroy(CPUState *cpu);
     62 int hvf_vcpu_exec(CPUState *);
     63 hvf_slot *hvf_find_overlap_slot(uint64_t, uint64_t);
     64 int hvf_put_registers(CPUState *);
     65 int hvf_get_registers(CPUState *);
     66 void hvf_kick_vcpu_thread(CPUState *cpu);
     67 
     68 #endif