qemu/include/sysemu/hvf_int.h
<<
>>
Prefs
   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#include <Hypervisor/hv.h>
  15
  16/* hvf_slot flags */
  17#define HVF_SLOT_LOG (1 << 0)
  18
  19typedef struct hvf_slot {
  20    uint64_t start;
  21    uint64_t size;
  22    uint8_t *mem;
  23    int slot_id;
  24    uint32_t flags;
  25    MemoryRegion *region;
  26} hvf_slot;
  27
  28typedef struct hvf_vcpu_caps {
  29    uint64_t vmx_cap_pinbased;
  30    uint64_t vmx_cap_procbased;
  31    uint64_t vmx_cap_procbased2;
  32    uint64_t vmx_cap_entry;
  33    uint64_t vmx_cap_exit;
  34    uint64_t vmx_cap_preemption_timer;
  35} hvf_vcpu_caps;
  36
  37struct HVFState {
  38    AccelState parent;
  39    hvf_slot slots[32];
  40    int num_slots;
  41
  42    hvf_vcpu_caps *hvf_caps;
  43};
  44extern HVFState *hvf_state;
  45
  46struct hvf_vcpu_state {
  47    int fd;
  48};
  49
  50void assert_hvf_ok(hv_return_t ret);
  51int hvf_arch_init_vcpu(CPUState *cpu);
  52void hvf_arch_vcpu_destroy(CPUState *cpu);
  53int hvf_vcpu_exec(CPUState *);
  54hvf_slot *hvf_find_overlap_slot(uint64_t, uint64_t);
  55int hvf_put_registers(CPUState *);
  56int hvf_get_registers(CPUState *);
  57
  58#endif
  59