qemu/target/i386/hvf/hvf-i386.h
<<
>>
Prefs
   1/*
   2 * QEMU Hypervisor.framework (HVF) support
   3 *
   4 * Copyright 2017 Google Inc
   5 *
   6 * Adapted from target-i386/hax-i386.h:
   7 * Copyright (c) 2011 Intel Corporation
   8 *  Written by:
   9 *  Jiang Yunhong<yunhong.jiang@intel.com>
  10 *
  11 * This work is licensed under the terms of the GNU GPL, version 2 or later.
  12 * See the COPYING file in the top-level directory.
  13 *
  14 */
  15
  16#ifndef HVF_I386_H
  17#define HVF_I386_H
  18
  19#include "qemu/accel.h"
  20#include "sysemu/hvf.h"
  21#include "cpu.h"
  22#include "x86.h"
  23
  24/* hvf_slot flags */
  25#define HVF_SLOT_LOG (1 << 0)
  26
  27typedef struct hvf_slot {
  28    uint64_t start;
  29    uint64_t size;
  30    uint8_t *mem;
  31    int slot_id;
  32    uint32_t flags;
  33    MemoryRegion *region;
  34} hvf_slot;
  35
  36typedef struct hvf_vcpu_caps {
  37    uint64_t vmx_cap_pinbased;
  38    uint64_t vmx_cap_procbased;
  39    uint64_t vmx_cap_procbased2;
  40    uint64_t vmx_cap_entry;
  41    uint64_t vmx_cap_exit;
  42    uint64_t vmx_cap_preemption_timer;
  43} hvf_vcpu_caps;
  44
  45struct HVFState {
  46    AccelState parent;
  47    hvf_slot slots[32];
  48    int num_slots;
  49
  50    hvf_vcpu_caps *hvf_caps;
  51};
  52extern HVFState *hvf_state;
  53
  54void hvf_set_phys_mem(MemoryRegionSection *, bool);
  55void hvf_handle_io(CPUArchState *, uint16_t, void *, int, int, int);
  56hvf_slot *hvf_find_overlap_slot(uint64_t, uint64_t);
  57
  58#ifdef NEED_CPU_H
  59/* Functions exported to host specific mode */
  60
  61/* Host specific functions */
  62int hvf_inject_interrupt(CPUArchState *env, int vector);
  63#endif
  64
  65#endif
  66